论坛首页 综合技术论坛

百度MP3 SHELL脚本

浏览 10820 次
精华帖 (0) :: 良好帖 (2) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-06-16   最后修改:2010-10-13
版本:2.05 写道

修正因百度mp3下载页面的些许改版造成的无法下载


版本:2.04 写道

因为一些不愉快的杂事影响了我更新,其实我也不清楚是谁对谁错了。
具体修改了什么我不清楚了,因为是早就改好的,只是有一个bug一直没时间去修复,今天正好了解了所有事情之后修复了一把。

新增按歌手搜索的功能
sh baidump3.sh p 周杰伦

sh baidump3.sh player 周杰伦




版本:2.03 写道

修正了一个比较严重的BUG:
在多个下载同时进行的时候,如果两个wget同时下载一个文件,会将原有的文件重写,所以大家有可能在开多个脚本同时下载时会发现某些mp3有多个音乐开头。这个版本就是解决这个问题。下载之前会判断.download文件是否已经存在,如果已经存在那么就不会再进行下载。

另外针对Mac用户增加了个小功能,当音乐下载完之后可以在通知区域给自己一个提醒,前提是要先安装growlnotify。可以参考http://imtx.cn/archives/1518.html这篇博文进行安装。

最后给我的脚本加了个小图标...





是我自己弄错了,之前进行了mp3类型的限制,倒反造成了什么歌曲都无法下载了,并不是百度进行了升级。不过仍然更新到2.02吧。
改进列表
1、从这个版本开始,只允许下载mp3类型的文件。毕竟这个脚本叫baidump3.sh
2、增加MAX_FILESIZE配置,这个参数限制了能下载的最大值,超过这个值的文件将不会被下载。因为我发现实际上下载下来的mp3大多数应该是在2M~10M之间,这个范围之外的mp3大多均没什么意义
3、MIN_FILESIZE的默认值从3M降低到2M
4、有人反应download这个参数太长了,所以我缩短为一个字母"d"。这样即可下载period这首歌了
sh baidump3.sh d period
5、参数更改

增加按照曲风下载的功能,其实之前是有这个功能的,只是被锁定在 悲伤、轻音乐等参数中了,现在将这些解放出来,作为按照曲风进行搜索,然后下载。
sh baidump3.sh s 轻音乐
或者
sh baidump3.sh style 轻音乐

将百度音乐排行参数移动到top参数之下
sh baidump3.sh t top500
或者
sh baidump3.sh top top500


top参数清单(TOP100、TOP500、日韩歌曲、欧美歌曲、电影歌曲、摇滚)
sh baidump3.sh t top100
sh baidump3.sh t top500
sh baidump3.sh t rihan
sh baidump3.sh t oumei
sh baidump3.sh t movie
sh baidump3.sh t rock




心情不好,随便改了点功能
改进列表
1、下载文件大小在下载之前就判定,原来是下载之后
2、下载文件类型过滤掉除了mp3之外的类型,因为我发现会下载一些我不喜欢的格式,开关在365行的awk '{if($6==MP3||$6==mp3)print $0}',不喜欢可以删掉
3、增加风格下载增加DJ
sh baidump3.sh dj

have fun


改进了下,第一个版本过于注重基础功能,各个功能散落再不同的脚本中,之间的数据通过大量的临时文件进行交互,而且在很多临时文件都无法删除掉。
现在重新整合到一个文件里面,程序启动之后只产生一个pid的临时文件用于控制wget子进程。

改进列表
1、去掉临时文件交互的机制
2、增加下载目录指定
3、增加日志功能
4、增加按风格批量下载(轻音乐、伤感、老歌)
5、完善下载子进程控制
6、将多个脚本整合为一个脚本

命令例子
sh baidump3.sh download period
sh baidump3.sh top100
sh baidump3.sh light

have fun


背景:MAC下没有好的下载音乐工具,我这个人比土,平时也都不知道现在流行什么音乐。一般有心情有空闲有电脑又没人骚扰的情况下就去百度mp3的排行榜上扫描下现在都流行啥,然后也装0x11的听下。

需要的外部命令:wget、curl、iconv

用法

sh baidu_mp3_get.sh <歌曲名>
sh baidu_mp3_top.sh top100
sh baidu_mp3_top.sh top500
sh baidu_mp3_top.sh rihan

例如:
sh baidu_mp3_get.sh period
这样脚本会去百度mp3搜索上搜索关键词 period ,然后根据公式 
大小(K) * 速度 / ( 排列顺序 * 0.8 )
计算出权值,取权值最高的进行下载。

目前在Mac OS上和Linux上跑过,Mac OS上需要装wget、curl、iconv

另外urlencode.sh这个脚本是从网上抄的,感谢heiner.steven@odn.de被我抄


  • 大小: 40.2 KB
   发表时间:2010-06-20  
为什么只有下载没有回复,
0 请登录后投票
   发表时间:2010-06-21  
可能因为写得不好,我再改改,哎...
0 请登录后投票
   发表时间:2010-06-22   最后修改:2010-07-09
这里放截图


  • 大小: 1.3 MB
0 请登录后投票
   发表时间:2010-06-24  
来顶你下,猥琐驰,写的不错~
0 请登录后投票
   发表时间:2010-06-24  
不错,回头来研究下。
0 请登录后投票
   发表时间:2010-06-25  
2、下载文件类型过滤掉除了mp3之外的类型,因为我发现会下载一些我不喜欢的格式,开关在365行的awk '{if($6==MP3||$6==mp3)print $0}',不喜欢可以删掉


这是一个BUG,不加引号,awk会当成变量来看,但是竟然也能判断过去。。。反正应该改动为才能正确保证只下载mp3类型的文件... -_-
awk '{if($6=="MP3"||$6=="mp3")print $0}'

0 请登录后投票
   发表时间:2010-06-25  
牛叉了,,,,顶百度
0 请登录后投票
   发表时间:2010-06-26  
下载后执行报错:./baidump3.sh: line 205: syntax error at line 256: `(' unexpected
  • 大小: 985 Bytes
0 请登录后投票
   发表时间:2010-06-27   最后修改:2010-06-27
guaerjia 写道
下载后执行报错:./baidump3.sh: line 205: syntax error at line 256: `(' unexpected

用 sh baidump3.sh来执行试试呢?
正确的用法是

sh baidump3.sh download period
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics