0

希望你能帮我解决这个问题,我对 bash 还很陌生,所以我搜索并找到了很多我正在研究的例子,但我有点卡在这里。

我有 2 个脚本。

script1.sh 一个工作正常:它下载包含标题、艺术家和曲目 url 的 youtube 播放列表的 rss 提要,下载这些项目并将它们存储到 playlist.txt 中。

问题是,我有其他 youtube 播放列表,如果我想使用不同的 rss 提要页面,我需要手动更改 script1.sh 中播放列表的 url。

因此,我正在编写 script2.sh,它将下载包含所有不同播放列表 rss 提要的 url,然后将它们一个接一个地发送到 script1.sh。

播放列表网址是这样的:

http://gdata.youtube.com/feeds/api/playlists/ hashtag_playlist ?&max-results=50&fields=entry%28title,link%29&prettyprint=true

到目前为止,我已经在 script2.sh 上收集了我的 5 个播放列表的名称和主题标签,在 playlists.txt 中,如下所示:

  • “播放列表1” PLYNrAD9Jn2WDWZFp23G3a2tkOBtdeNAbc6
  • “播放列表2” PLYNrAD9Jn2WCf54CoS22kn3pBX1XUFinE

我还设法为每个播放列表创建了一个文本文件,并根据播放列表的名称命名它们。我现在要做的是将一个标签一个接一个地发送到 script1.sh,并使其在每个适当的文件中输出每个播放列表的 url、标题和艺术家。我需要将 playlists.txt 中的每一行都设为一个变量,并将它们传递到 script1.sh 的 url 中,但我并不真正理解如何做到这一点。

我希望我很清楚。我可以回答你的任何问题以澄清我错过的一些事情。

先感谢您

编辑:我刚开始写 bash 所以我真的很糟糕,这些对你来说一定很丑陋。提前抱歉:)

脚本1.sh

url="http://gdata.youtube.com/feeds/api/playlists/PLYNrAD9Jn2WDmpu3gNVxIVO8bAiOcQkx7?&max-results=50&fields=entry%28title,link%29&prettyprint=true"

name="SlickSlickSound"

将 url rss 提要页面下载到 utube

wget -O $HOME/Music/"Youtube Playlist"/utube $url 2>&1

将下载页面的标题提取到 temp0 使用 xml-twig-tools 中的 xml_grep

xml_grep 'title' utube --text_only > temp0

将 URL 提取到 temp2

grep -o 'href=['"'"'"][^"'"'"']*&feature=youtube_gdata' utube  > temp

为了清楚起见,将网址剥离到最低限度:www.example.com

sed "s/href='http\?:\/\///" temp > temp1
sed "s/&feature=youtube_gdata//" temp1 > temp2

在同一文件 output.txt 中合并 URL 和 Title 临时文件

paste temp2 temp0 > output.txt

脚本2.sh

url="http://www.youtube.com/user/SterylMreep/videos?flow=grid&view=1"

下载包含所有播放列表信息的页面源

wget -O "$HOME/Music/Youtube Playlist"/Playlists/collection $url 2>&1

提取播放列表的名称

grep -o 'data-context-item-title=......................' collection > tmp0

为了清楚起见,将网址剥离到最低限度

sed 's/data-context-item-title=//' tmp0 > tmp2
sed 's/" d...*$/"/' tmp2 > tmp3

删除空格和\

sed 's/^[ \t]*//' tmp3 > tmp4
sed 's/\///' tmp4 > tmp5

将播放列表 ID 提取到 tmp

grep -o 'href="/playlist?list=..................................' collection  > tmp

为了清楚起见,将网址剥离到最低限度

sed 's/href="\/playlist?list=//' tmp > tmp1

使用播放列表和主题标签的名称创建文件

paste tmp4 tmp1 > playlists.txt

使用播放列表名称创建文件

cat tmp4 | xargs touch

接下来将 playlists.txt 中的主题标签传递到 script1.sh 并获取标题、艺术家和网址

4

1 回答 1

1
while read line
do
  sh script1.sh $line
done < script2.sh
于 2013-01-29T14:36:22.303 回答