免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 7435 | 回复: 22
打印 上一主题 下一主题

[网络相关] 批量下载音乐 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-01-30 15:06 |只看该作者 |倒序浏览
本帖最后由 tyguaike 于 2013-01-30 16:48 编辑

怎么写一个脚本能从百度音乐top 500里下载音乐到我的电脑里

http://music.baidu.com/top/dayhot


百度Top 500下载经过分析可以实现,
但是本人的Shell水平有限,现把实现的思路整理出来。

第一步,取得Top 500的页面
SOURCE="music.baidu.com/top/dayhot"
wget ${SOURCE} -O top500

提取歌曲名和 id
cat top500 | grep "'sid'.*'sname'.*'author'"

得到下面的行怎么用正则得到 "391713 海阔天空" 生成一个文件列表
  data-songitem = '{"songItem":{"sid":"391713","author":"\u4fe1\u4e50\u56e2"}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '391713', 'sname': '海阔天空', 'author': '>信乐团' } }   ">

wget "music.baidu.com/song/"${id}"/download?_o=%2Ftop%2Fdayhot" -O tmp

这里得到一个含有下载连接的页面 tmp
cat tmp | grep "<a.*xcode"
                    <a href="/data/music/file?link=http://zhangmenshiting.baidu.com/data2/music/33971202/23473715212400128.mp3?xcode=e2c42face0c3558110a0c31806938d9e " id="download" hidefocus="true" class="btn-download">下载</a><span class="btn-download-span"></span>
又要从这个页面里用正则得到这一行地址:
http://zhangmenshiting.baidu.com ... 58110a0c31806938d9e
然后就可以用这一行地址下载到歌典了


*********************************下面是比较完整的数据***************************************8
提取歌曲名和 id
cat top500 | grep "'sid'.*'sname'.*'author'"
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;23473715&quot;,&quot;author&quot;:&quotsy&quot;}}' class="lead-top first bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '23473715', 'sname': '江南Style', 'author': 'Psy' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;14950804&quot;,&quot;author&quot;:&quot;\u66f2\u5a49\u5a77&quot;}}' class="lead-top  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '14950804', 'sname': '我的歌声里', 'author': '曲婉婷' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;5966719&quot;,&quot;author&quot;:&quot;\u51e4\u51f0\u4f20\u5947&quot;}}' class="lead-top  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '5966719', 'sname': '最炫民族风', 'author': '凤凰传奇' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;1575873&quot;,&quot;author&quot;:&quot;\u6c6a\u5cf0&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '1575873', 'sname': '北京北京', 'author': '汪峰' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;207737&quot;,&quot;author&quot;:&quot;\u8fea\u514b\u725b\u4ed4&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '207737', 'sname': '放手去爱', 'author': '迪克牛仔' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;2104023&quot;,&quot;author&quot;:&quot;\u4f83\u4f83&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '2104023', 'sname': '滴答', 'author': '侃侃' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;12380958&quot;,&quot;author&quot;:&quot;\u5d14\u5b50\u683c&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '12380958', 'sname': '老婆最大', 'author': '崔子格' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;5071402&quot;,&quot;author&quot;:&quot;\u9ad8\u8fdb,\u5c0f\u6c88\u9633&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '5071402', 'sname': '我的好兄弟', 'author': '高进,小沈阳' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;536010&quot;,&quot;author&quot;:&quot;\u51e4\u51f0\u4f20\u5947&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '536010', 'sname': '荷塘月色', 'author': '凤凰传奇' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;7313936&quot;,&quot;author&quot;:&quot;\u738b\u83f2,\u9648\u5955\u8fc5&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '7313936', 'sname': '因为爱情', 'author': '王菲,陈奕迅' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;13139228&quot;,&quot;author&quot;:&quot;\u5f20\u60e0\u59b9&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '13139228', 'sname': '哭砂', 'author': '张惠妹' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;24492803&quot;,&quot;author&quot;:&quot;\u5e73\u5b89&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '24492803', 'sname': '洋葱', 'author': '平安' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;2488100&quot;,&quot;author&quot;:&quot;\u5218\u82e5\u82f1&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '2488100', 'sname': '为爱痴狂', 'author': '刘若英' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;5837361&quot;,&quot;author&quot;:&quot;\u738b\u9e9f&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '5837361', 'sname': '伤不起', 'author': '王麟' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;223901&quot;,&quot;author&quot;:&quot;\u674e\u4e3d\u82ac&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '223901', 'sname': '爱江山更爱美人', 'author': '李丽芬' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;2126014&quot;,&quot;author&quot;:&quot;\u90d1\u667a\u5316&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '2126014', 'sname': '水手', 'author': '郑智化' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;14880387&quot;,&quot;author&quot;:&quot;\u738b\u9e9f&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '14880387', 'sname': '思密达', 'author': '王麟' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;13762260&quot;,&quot;author&quot;:&quot;\u9ad8\u5b89,\u676d\u5a07&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '13762260', 'sname': '一生无悔', 'author': '高安,杭娇' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;2121739&quot;,&quot;author&quot;:&quot;\u6768\u94b0\u83b9&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '2121739', 'sname': '轻轻的告诉你', 'author': '杨钰莹' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;31496563&quot;,&quot;author&quot;:&quot;\u5468\u6770\u4f26&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '31496563', 'sname': '红尘客栈', 'author': '周杰伦' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;974156&quot;,&quot;author&quot;:&quot;\u5c60\u6d2a\u521a&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '974156', 'sname': '精忠报国', 'author': '屠洪刚' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;28790755&quot;,&quot;author&quot;:&quot;\u5c0f\u6c88\u9633,\u6c88\u6625\u9633&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '28790755', 'sname': '你懂得', 'author': '小沈阳,沈春阳' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;10509017&quot;,&quot;author&quot;:&quot;\u51b7\u6f20,\u6768\u5c0f\u66fc&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '10509017', 'sname': '我爱你胜过你爱我', 'author': '冷漠,杨小曼' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;10554229&quot;,&quot;author&quot;:&quot;\u6c6a\u5cf0&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '10554229', 'sname': '存在', 'author': '汪峰' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;23149293&quot;,&quot;author&quot;:&quot;\u674e\u4ee3\u6cab&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '23149293', 'sname': '我的歌声里', 'author': '李代沫' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;416940&quot;,&quot;author&quot;:&quot;\u90d1\u6e90&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '416940', 'sname': '包容', 'author': '郑源' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;1026041&quot;,&quot;author&quot;:&quot;\u5f20\u9707\u5cb3&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '1026041', 'sname': '爱我别走', 'author': '张震岳' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;23305140&quot;,&quot;author&quot;:&quot;\u51e4\u51f0\u4f20\u5947&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '23305140', 'sname': '中国味道', 'author': '凤凰传奇' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;7316463&quot;,&quot;author&quot;:&quot;\u9648\u5955\u8fc5&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '7316463', 'sname': '爱情转移', 'author': '陈奕迅' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;7333126&quot;,&quot;author&quot;:&quot;\u9093\u4e3d\u541b&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '7333126', 'sname': '我只在乎你', 'author': '邓丽君' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;23159920&quot;,&quot;author&quot;:&quot;\u90d1\u8679,\u674e\u4ee3\u6cab&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '23159920', 'sname': '如果没有你', 'author': '郑虹,李代沫' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;1449893&quot;,&quot;author&quot;:&quot;\u6885\u8273\u82b3&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '1449893', 'sname': '亲密爱人', 'author': '梅艳芳' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;31387633&quot;,&quot;author&quot;:&quot;\u5409\u514b\u96bd\u9038&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '31387633', 'sname': '彩色的黑', 'author': '吉克隽逸' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;27131218&quot;,&quot;author&quot;:&quot;\u5409\u514b\u96bd\u9038&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '27131218', 'sname': 'Halo', 'author': '吉克隽逸' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;233076&quot;,&quot;author&quot;:&quot;\u6c6a\u5cf0&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '233076', 'sname': '怒放的生命', 'author': '汪峰' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;5835631&quot;,&quot;author&quot;:&quot;\u5c0f\u6c88\u9633&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '5835631', 'sname': '大笑江湖', 'author': '小沈阳' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;13139680&quot;,&quot;author&quot;:&quot;\u5f20\u60e0\u59b9&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '13139680', 'sname': '我可以抱你吗', 'author': '张惠妹' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;416996&quot;,&quot;author&quot;:&quot;\u90d1\u6e90&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '416996', 'sname': '爱情码头', 'author': '郑源' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;23150239&quot;,&quot;author&quot;:&quot;\u591a\u4eae&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '23150239', 'sname': '小情歌', 'author': '多亮' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;274606&quot;,&quot;author&quot;:&quot;\u5f20\u5b66\u53cb&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '274606', 'sname': '心如刀割', 'author': '张学友' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;7288694&quot;,&quot;author&quot;:&quot;\u90a3\u82f1&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '7288694', 'sname': '相见不如怀念', 'author': '那英' } }   ">
                 <li  data-songitem = '{&quot;songItem&quot;:{&quot;sid&quot;:&quot;247937&quot;,&quot;author&quot;:&quot;\u96f7\u8bfa\u513f&quot;}}' class="  bb-dotimg clearfix  song-item-hook { 'songItem': { 'sid': '247937', 'sname': '别在我离开之前离开', 'author': '雷诺儿' } }   ">

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
2 [报告]
发表于 2013-01-30 15:32 |只看该作者
我也想知道。。。

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
3 [报告]
发表于 2013-01-30 15:42 |只看该作者
回复 1# tyguaike


    貌似可以实现喔,等我研究下

论坛徽章:
11
CU十二周年纪念徽章
日期:2013-10-24 15:41:342015年辞旧岁徽章
日期:2015-03-03 16:54:15丑牛
日期:2015-01-14 10:36:40技术图书徽章
日期:2015-01-12 15:46:11白羊座
日期:2014-11-14 09:35:36狮子座
日期:2014-10-30 13:18:49巳蛇
日期:2014-10-11 12:52:08子鼠
日期:2014-09-28 14:11:06双鱼座
日期:2014-04-22 13:05:48午马
日期:2014-02-11 17:58:002015年迎新春徽章
日期:2015-03-04 09:55:28
4 [报告]
发表于 2013-01-30 15:44 |只看该作者
回复 3# reyleon


    坐等脚本出现,哈哈!

论坛徽章:
1
摩羯座
日期:2014-12-29 15:59:36
5 [报告]
发表于 2013-01-30 15:53 |只看该作者
很简单嘛  都在页面里

论坛徽章:
0
6 [报告]
发表于 2013-01-30 17:20 |只看该作者
怎么没人帮个忙呀,就是一些正则

论坛徽章:
1
摩羯座
日期:2014-12-29 15:59:36
7 [报告]
发表于 2013-01-30 17:35 |只看该作者
一种方法是从下载页入手,一行命令,一些管道组成.
  1. wget -O- http://music.baidu.com/top/dayhot | grep -oP '(?<=.sid.: .)\d+' | sed 's#.*#http://music.baidu.com/song/&/download/#' | wget -O- -i- | grep -oP '(?<=song_title:")[^"]+|(?<=singer_name:")[^"]+|(?<=<a href="/data/music/file\?link=)[^"]+|(?<=<a href=")http.+?(?= " id="download")|height:70px' | awk 'NR%3==1{url=$0}NR%3==2{name=$0}NR%3==0{system("wget -O \""name".mp3\" \""url"\"")}'
复制代码
不幸的是,下载页格式不统一.有三种:
http://music.baidu.com/song/1449893/download?__o=%2Ftop%2Fdayhot
http://music.baidu.com/song/922519/download?__o=%2Fsong%2F922519
http://music.baidu.com/song/23473715/download?__o=%2Ftop%2Fdayhot

会导致一些歌曲无法下载.

另外一种比较稳定简单的方法是通过播放页的请求歌曲url的ajax接口  http://play.baidu.com/data/music/songlink?songIds=1449893
有个问题是,返回的中文名是Unicode编码的,比如"songName":"\u4eb2\u5bc6\u7231\u4eba",你要用一些工具(比如iconv,甚至python,perl)将\u4eb2\u5bc6\u7231\u4eba转换成汉字"亲密爱人".

第二种方式,我没写,不过稍微改一改,就行了.

论坛徽章:
0
8 [报告]
发表于 2013-01-30 17:40 |只看该作者
  1. import os,sys,re,urllib
  2. #coding=utf-8
  3. try:
  4.     from progressbar import *
  5. except:
  6.     print "Please run easy_install progressbar!"
  7.     sys.exit(1)

  8. url = "http://music.baidu.com/top/new"

  9. BasePath = os.path.dirname(os.path.abspath(__file__))
  10. BasePath = BasePath + "/test"

  11. def download_bar():
  12.     class CrazyFileTransferSpeed(FileTransferSpeed):
  13.         """It's bigger between 45 and 80 percent."""
  14.         def update(self, pbar):
  15.             if 45 < pbar.percentage() < 80:
  16.                 return 'Bigger Now ' + FileTransferSpeed.update(self,pbar)
  17.             else:
  18.                 return FileTransferSpeed.update(self,pbar)

  19.     widgets = [CrazyFileTransferSpeed(),' <<<', Bar(), '>>> ',
  20.                Percentage(),' ', ETA()]
  21.     pbar = ProgressBar(widgets=widgets, maxval=10000000)
  22.     # maybe do something
  23.     pbar.start()
  24.     for i in range(2000000):
  25.         # do something
  26.         pbar.update(5*i+1)
  27.     pbar.finish()

  28. if not os.path.exists(BasePath):
  29.     os.makedirs(BasePath)

  30. fd = urllib.urlopen(url)
  31. content = fd.read()

  32. pattern = '<li.*sid\':\ \'(\d+)\'.*sname\':\ \'([^\']*)\''
  33. matchs = re.findall(pattern,content,re.M)

  34. for url in matchs:
  35.     x = url[1].decode('utf-8')
  36.     url = "http://music.baidu.com/song/%s/download" %(url[0])
  37.     fd_d = urllib.urlopen(url)
  38.     content_d = fd_d.read()
  39.     pattern_d = '<.*downlink.*(http://zhangmenshiting.baidu.com[^"]*).*'
  40.     matchs_d = re.findall(pattern_d,content_d,re.M)
  41.     for url_d in matchs_d:
  42.         if url_d:
  43.             filename = "%s.mp3" %(x)
  44.             print "%s is start download" % (filename)
  45.             output = "%s/%s" % (BasePath, filename)
  46.             urllib.urlretrieve(url_d, output, reporthook=download_bar())
  47.             print "%s is finished download" %(filename)
  48.             print "\n\n"
  49.     fd_d.close()
  50. fd.close()
复制代码
回复 1# tyguaike

这个是之前用python写的,你可以参考一下
   

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
9 [报告]
发表于 2013-01-30 17:58 |只看该作者
本帖最后由 reyleon 于 2013-01-30 20:20 编辑

高品质与超高品质要登录才能下载,不知道怎么通过命令登录,故下载不了高品质与超高品质的音乐;所以下面的脚本默认没登录只能下载标准品质的,姑且看看吧!!! 另外,求高手指教如何使用curl方式登录。

#!/bin/bash

curl -s "http://music.baidu.com/top/dayhot"|awk 'BEGIN{FS="\"";OFS="\t"}/\/song\/[0-9]+/{print $2,"\""$4"\""}' > music_menu.txt

Count=0
Thread=15
FifoFile="$$.fifo"
mkfifo $FifoFile
exec 6<>$FifoFile      
rm $FifoFile
for ((i=0;i<=$Thread;i++));do echo;done >&6
exec 5<music_menu.txt
while read -u5 line
do
        read -u6
        let Count+=1
        eval $(echo "$line"|awk 'BEGIN{FS="\"|\t"}{print "musicurl="$1,"music="gensub(/ /,"_","g",$(NF-1))}')
        baseurl='http://music.baidu.com'
        fullurl="$baseurl/$musicurl/download?__o=%2Ftop%2Fdayhot"
        echo -e "正在下载第 $Count 首,${music}.mp3"
        {
                downloadurl=$(curl -s "$fullurl"|grep '/data/music/file'|awk 'BEGIN{FS="\""}/下载/{print $2}')
                wget -q -O ${music}.mp3 "$baseurl/$downloadurl"
                echo >&6
                sleep 1
        } &
done

wait  
exec 6>&-
exec 5>&-

论坛徽章:
0
10 [报告]
发表于 2013-01-30 18:39 |只看该作者
回复 9# reyleon


    高手哈,SHELL这么强大哈。
不过有个问题

ongdong@ubuntu:~/temp/aa$ sh gg
gg: 11: gg: Syntax error: Bad for loop variable
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP