免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
1
摩羯座
日期:2014-12-29 15:59:36
1 [报告]
发表于 2013-01-30 15:53 |显示全部楼层
很简单嘛  都在页面里

论坛徽章:
1
摩羯座
日期:2014-12-29 15:59:36
2 [报告]
发表于 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转换成汉字"亲密爱人".

第二种方式,我没写,不过稍微改一改,就行了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP