希望你能帮我解决这个问题,我对bash很新,所以我搜索并找到了很多关于我工作的例子,但我有点卡在这里。
我有2个脚本。
script1.sh一个正常工作:下载包含曲目标题,艺术家和网址的YouTube播放列表的RSS订阅源,下载这些项目并将其存储到playlist.txt。
问题是,我有其他youtube播放列表,如果我想使用其他rss供稿页面,我需要手动更改script1.sh中播放列表的网址。
所以我正在编写script2.sh,它将下载包含所有不同播放列表rss feed的url,然后将它们一个接一个地发送到script1.sh。
播放列表网址是这样的:
http://gdata.youtube.com/feeds/api/playlists/的 hashtag_playlist &安培;最大结果= 50&安培;字段=项%28title,链路%29&安培; prettyprint =真
到目前为止,我已经在script2.sh上管理了我的5个播放列表的名称和主题标签,如下所示:
我还设法为每个播放列表创建一个文本文件,并从播放列表的名称命名。 我现在要做的是将一个#标签后面的一个#标签发送到script1.sh,并使其输出每个适当文件中每个播放列表的网址,标题和艺术家。我需要在playlists.txt中创建每一行,一个变量并将它们传递给script1.sh的url,但是我真的不明白该怎么做。
我希望我很清楚。我可以回答你的任何问题,以澄清我错过的东西。
提前谢谢
编辑:我刚刚开始写bash,所以我真的很糟糕,这些对你来说真的很难看。提前抱歉:)script1.sh
url="http://gdata.youtube.com/feeds/api/playlists/PLYNrAD9Jn2WDmpu3gNVxIVO8bAiOcQkx7?&max-results=50&fields=entry%28title,link%29&prettyprint=true"
name="SlickSlickSound"
将url rss Feed页面下载到utube
wget -O $HOME/Music/"Youtube Playlist"/utube $url 2>&1
将下载页面中的标题提取到temp0中 在xml-twig-tools中使用xml_grep
xml_grep 'title' utube --text_only > temp0
将网址提取到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
将URL和标题临时文件合并到同一文件output.txt
中paste temp2 temp0 > output.txt
script2.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中的hashtags传递给script1.sh并获取标题,艺术家和网址
答案 0 :(得分:1)
while read line
do
sh script1.sh $line
done < script2.sh