![]() 超级会员
|
为防止百度搜索引擎前来抓取,正文部分以图片形式发出来,请各位见谅。
需要两个软件的配合:1、迅雷5.9之前的版本;2、命令行工具wget.exe 有网友反映说迅雷5.9及其之后的版本已经不支持以注释重命名文件,特放出支持以注释内容重命名文件的迅雷版本:5.8.10.675的绿色去广告版本。 再提供 wget 1.10.2 的打包下载,以前提供的 wget.exe 1.11.4 并不是命令行的单行版,还需要几个dll的支持,不再提供。 此帖于 2011-04-30 20:51:18 被 namejm 编辑. . |
||
![]() TotalCommder、EveryThing、batch、AutoHotKey、EverEdit 精通Word、Excel、PPT的安装与卸载 熟练掌握VB、C++、SQL的拼读与缩写 |
![]() 超级会员
|
奉上代码:
代码:
@echo off :: 功能: :: 整理百度MP3歌曲排行榜中除了“中文金曲”和“中国民乐”之外所有榜单的分类下载链接 :: 对MP3文件:整理出供迅雷5等软件批量下载的、有效的mp3文件地址,并统计该榜单下mp3文件的总数、有效下载链接的总数;提供备用的mp3文件下载链接;列出下载链接可能已经失效的mp3文件; :: 对LRC文件:整理出供迅雷5等软件批量下载的、有效的lrc文件地址,并统计该榜单下lrc文件的总数、有效下载链接的总数;同时下载百度服务器上存在的lrc文件;列出下载链接可能已经失效的lrc文件; :Main cls title 百度MP3歌曲排行榜下载链接整理器 echo.&echo. echo 选择每个项目前的数字序号 echo 可以整理该类别下所有MP3的有效下载链接 echo 并可以下载这些MP3对应的歌词LRC文件 echo 可以多选,但是必须以空格分隔 echo 多选时不用考虑先后次序 echo 例如选择代码时填写 5 1 8 echo 会依次下载“影视金曲”,“新歌TOP100”和“流金岁月” echo 0与其他选项组合时会造成重复下载 echo. echo ========================================================== echo. setlocal enabledelayedexpansion set num=0 for /f "tokens=1-3" %%i in (榜单分类.ini) do ( set /a num+=1 set /a mod=!num!%%2 set /p= %%i.%%j <nul if !mod! equ 0 echo.&echo. ) echo. set /p= 0.前面的所有类别<nul echo. echo ========================================================== echo. endlocal set choice= set /p choice= 请输入选择代码(0/1/2/3/4/5/6/7/8/9): cls if not defined choice goto Main for %%i in (%choice%) do ( if not "%%i"=="0" ( for /f "tokens=1-3" %%j in (榜单分类.ini) do ( if "%%i"=="%%j" ( call :Neaten "%%k" "%%l" call :end "%%k" ) ) )else ( for /f "tokens=1-3" %%j in (榜单分类.ini) do ( call :Neaten "%%k" "%%l" call :end "%%k" ) ) ) call :end pause goto Main :Neaten setlocal enabledelayedexpansion md "%~1\xml" 2>nul wget -O "%~1\%~nx2" "%~2" :: 功能:从分类排行榜首页提取出歌曲序号、歌曲名和歌手名,并取回包含真实下载链接的xml文件 :: 歌曲排行随时在变动,清空以前保存的xml文件,以保证不下载过期链接 :: xml文件的下载地址是:http://box.zhangmen.baidu.com/x?op=12&count=1&title=歌曲名$$歌手名$$$ del /a /f /q "%1\xml\*.xml" 2>nul set num=0 for /f "delims==" %%i in ('set name 2^>nul') do set "%%i=" for /f "delims=" %%i in ('findstr /i "td.class=\"td[b-d]\"" "%~1\%~nx2"') do ( for /f "tokens=*" %%j in ("%%i") do ( set /a num+=1 for /f "delims=<> tokens=3" %%k in ("%%j") do ( set "name!num!=%%k" if !num! equ 2 ( if "!name2:~-3!"=="..." ( for /f "tokens=4 delims='" %%l in ("%%j") do set "name2=%%l" ) ) if !num! equ 3 ( if "!name3:~-3!"=="..." ( for /f "tokens=2 delims='" %%l in ("%%j") do set "name3=%%l" ) set name1=00!name1! set name1=!name1:~-3! if "!name3!"=="/a" set "name3=" title 正在下载 %~1 分类下 "!name1!_!name2!_!name3!.mp3" 的xml数据 wget -nv -N -O "%~1\xml\!name1!_!name2!_!name3!.xml" "http://box.zhangmen.baidu.com/x?op=12&count=1&title=!name2!$$!name3!$$$" set num=0 ) ) ) ) endlocal for /f "delims=" %%i in ('findstr /i "td.class=\"tdb\"" "%~1\%~nx2"') do set "str=%%i" for /f "tokens=*" %%i in ("%str%") do ( for /f "delims=<> tokens=3" %%j in ("%%i") do set SongNum=%%j ) :: 功能:整理有效的下载列表,下载对应的歌词文件,列出下载链接已经失效的mp3文件 cls title 整理%~1的下载链接列表并下载对应的歌词文件 for %%i in (%~1\%~nx2) do set ModifiedTime=%%~ti for %%i in (MP3 LRC) do ( ( echo ^<html^> echo ^<title^>百度MP3歌曲排行:%~1^<^/title^> echo ^<style type="text/css"^> echo ^<!-- echo a:link { text-decoration: none;color: blue} echo a:active { text-decoration:blink} echo a:hover { text-decoration:underline;color: red} echo a:visited { text-decoration: none;color: green} echo --^> echo ^<^/style^> echo ^<body^> echo ^<b^>“百度MP3歌曲排行:%~1”列表更新时间:%ModifiedTime%^<^/b^>^<br^> echo ^<font color="red"^>^<b^>注意:以下内容并非“%~1”的全部,仅列出了有效的%%i下载链接^<^/b^>^<^/font^>^<br^> if /i "%%i"=="mp3" ( echo ^<font color="red"^>^<b^> 当本页面中的某些mp3文件下载失败时,请到“%~1mp3备用下载链接.html”中选择相应的备用地址进行下载^<^/b^>^<^/font^>^<br^> echo ^<font color="red"^>^<b^> 下载链接有可能失效的mp3文件列表请查看“下载链接可能已经失效的mp3列表.txt”^<^/b^>^<^/font^> ) echo ^<p^> echo 批量下载本页面列出的%%i文件的方法(以迅雷5为例,迅雷7不适用):^<br^> echo 若您已经安装迅雷,请在本页面点右键,选择“使用迅雷下载全部链接”;^<br^> echo 在弹出的“选择要下载的URL”窗口中,勾选“全选”,然后确定^<br^> echo 在接下来的“建立新的下载任务”窗口中,“另存名称”选项后点最右侧的倒三角形符号^<br^> echo 选择“注释命名”,确定^<br^> echo 这样设置之后,下载回来的%%i文件将会以“序号_歌曲名_歌手名.%%i”的格式命名^<br^> echo FlashGet里的操作可以参考以上步骤^<br^> echo ====================================================================================^<p^> )>%~1\%~1%%i下载链接.html ) ( echo ^<html^> echo ^<title^>百度MP3歌曲排行:%~1^<^/title^> echo ^<style type="text/css"^> echo ^<!-- echo a:link { text-decoration: none;color: blue} echo a:active { text-decoration:blink} echo a:hover { text-decoration:underline;color: red} echo a:visited { text-decoration: none;color: green} echo --^> echo ^<^/style^> echo ^<body^> echo ^<b^>“百度MP3歌曲排行:%~1”列表更新时间:%ModifiedTime%^<^/b^>^<br^> echo ^<font color="red"^>^<b^>注意:以下内容是“%~1”的备用下载地址,仅列出了有效的MP3下载链接^<^/b^>^<^/font^>^<br^> echo ^<font color="red"^>^<b^> 当“%~1MP3下载链接.html”中某些MP3文件下载失败时,请到本页面选择相应的备用地址进行下载^<^/b^>^<^/font^>^<br^> echo ^<font color="red"^>^<b^> 请手工选择文件进行单个的下载,若选择批量下载的方式,则会导致同一文件多次下载,并会保存为多个副本^<^/b^>^<^/font^>^<br^> echo ^<font color="red"^>^<b^> 下载链接有可能失效的MP3文件列表请查看“下载链接可能已经失效的MP3列表.txt”^<^/b^>^<^/font^>^<p^> echo ====================================================================================^<p^> )>%~1\%~1MP3备用下载链接.html ( echo 以下内容为 %ModifiedTime% 更新的“百度MP3歌曲排行:%~1”中下载链接有可能已经失效的mp3文件列表 echo 在本列表中的保存格式为:序号_歌曲名_歌手名.mp3 echo 若您想下载它们,请以相应的关键词在百度MP3网页中搜索有效的下载链接 echo. )>"%~1\下载链接可能已经失效的mp3列表.txt" md "%~1\Lrc" 2>nul ( echo 以下内容为 %ModifiedTime% 更新的“百度MP3歌曲排行:%~1”中未找到下载链接的歌词文件列表 echo 在本列表中的保存格式为:序号_歌曲名.lrc echo 若您想下载它们,请以相应的关键词在百度MP3网页中搜索有效的下载链接 echo. )>"%~1\未找下载地址的歌词文件列表.txt" setlocal enabledelayedexpansion for /f "delims==" %%i in ('set Url 2^>nul') do set "%%i=" set UrlUseableNum_MP3=0 set UrlUseableNum_URC=0 for %%i in (%~1\xml\*.xml) do ( for /f "usebackq delims=" %%j in ("%%i") do ( set "str=%%j" set "str=!str:"=!" set RunTimes=0 call :GetUrl %1 Count set "UrlUseable=" set "UrlUseableFirst=" if !Url_Count! gtr 0 ( call :GetUrl %1 Encode call :GetUrl %1 Decode call :GetUrl %1 Lrcid call :DownLrc %1 "%%~ni" call :GetMp3DownList %1 "%%~ni" echo. ) else ( echo %%~ni.mp3>>"%~1\下载链接可能已经失效的mp3列表.txt" echo %%~ni.lrc>>"%~1\未找下载地址的歌词文件列表.txt" ) ) ) for %%i in (MP3 LRC) do ( ( echo ^<p^> echo %~1 下的歌曲共 ^<b^>%SongNum%^<^/b^> 首,有效的%%i下载链接共 ^<b^>!UrlUseableNum_%%i!^<^/b^> 条 echo ^<^/body^> echo ^<^/html^> )>>%~1\%~1%%i下载链接.html ) ( echo ^<^/body^> echo ^<^/html^> )>>%~1\%~1mp3备用下载链接.html endlocal goto :eof :GetMp3DownList :: 功能:获取Mp3的下载链接列表,并下载相应的歌词文件 :: 对当前路径的字符有特殊要求,不能含有\http:\,因为用到了 %%~pi set /a RunTimes+=1 if %RunTimes% gtr %Url_Count% ( if not defined UrlUseable ( echo %~2.mp3>>"%~1\下载链接可能已经失效的mp3列表.txt" ) goto :eof ) for /f "delims=" %%i in ("%Url_Decode%") do set type=%%~xi for %%i in (.mp3 .wma) do ( if /i "%type%"=="%%i" set UrlUseable=true ) if not defined UrlUseable ( call :GetUrl %1 Encode call :GetUrl %1 Decode goto GetMp3DownList ) for /f "delims=" %%i in ("%Url_Encode%") do set "Url_head=%%~pi" set "Url_head=%Url_head:*\http:\=%" set "Url_mp3=%Url_head%%Url_Decode%" set "Url_mp3=%Url_mp3:\=/%" if not defined UrlUseableFirst ( set /a UrlUseableNum_MP3+=1 (echo ^<a href="http://%Url_mp3%"^>%~2.mp3^<^/a^>^<br^>)>>%~1\%~1mp3下载链接.html (echo ^<p^>)>>%~1\%~1mp3备用下载链接.html ) else ( (echo ^<a href="http://%Url_mp3%"^>%~2.mp3^<^/a^>^<br^>)>>%~1\%~1mp3备用下载链接.html ) set UrlUseableFirst=no call :GetUrl %1 Encode call :GetUrl %1 Decode goto GetMp3DownList :DownLrc :: 功能:下载歌词文件 if %Url_Lrcid% neq 0 ( set /a Url_lrc=!Url_Lrcid!/100 set Url_lrc=!Url_lrc!/!Url_Lrcid!.lrc set Url_lrc=http://box.zhangmen.baidu.com/bdlrc/!Url_lrc! (echo ^<a href="!Url_lrc!"^>%~2.lrc^<^/a^>^<br^>)>>%~1\%~1LRC下载链接.html wget -nv -N -O "%~1\lrc\%~2.lrc" !Url_lrc! set /a UrlUseableNum_LRC+=1 ) else echo %~2.lrc>>"%~1\未找下载地址的歌词文件列表.txt" goto :eof :GetUrl :: 提取<……>和</……>标记对之间的字符串 set "str=!str:*<%2>=!" for /f "delims=< tokens=1*" %%i in ("%str%") do ( set "Url_%2=%%i" set "str=%%j" ) goto :eof :end title %~1整理完毕 cls echo.&echo. echo %~1整理完毕 echo. goto :eof 引用:
此帖于 2011-04-23 17:00:37 被 namejm 编辑. . |
|||
![]() 超级会员
|
放出整理过程图片。
此帖于 2011-04-23 16:49:34 被 namejm 编辑. . |
||
![]() 超级会员
|
接上帖,继续贴图。
|
||
![]() 热心会员
|
LZ还是帖出来了?这么长的帖子,可不容易。
|
||
![]() 热心会员
|
顶一下,此贴应设为精品。
有分析,有步骤,是很好的教材,对有心者应该可学到不少东西。 |
||
![]() 终极会员
|
请问能不能下载类似于这样关键词的列表啊
http://mp3.baidu.com/m?tn=baidump3&c...%C9%CB%B8%D0#1 |
||
![]() 123 |
![]() 超级会员
|
一通百通
这个是可以下载的 只是不知道你想通过什么方式列出了这个表 又想下载这个表中的哪些内容 还请写个完整的流程出来 让我明白你的真实意图 |
||
![]() 热心会员
|
等好人打包~
|
||
![]() 合作伙伴
|
谢谢,写的很好,学习了
|
||
![]() 热心会员
|
有一个问题,现在的迅雷7已经不能按注释名下载了,手里又没有别的版本。
首先谢谢楼主的教程,其次还想烦请楼主给一个低版本的迅雷。:blush; |
||
![]() “空气在颤抖,仿佛天空在燃烧。” |
![]() 热心会员
|
win7 x64
无法获取条目 命令可执行 目录也能建立 html文件中提示获取0条 |
||
![]() 超级会员
|
运行后抓不到下载载接了。
“百度MP3歌曲排行:流金岁月”列表更新时间: 注意:以下内容并非“流金岁月”的全部,仅列出了有效的MP3下载链接 当本页面中的某些mp3文件下载失败时,请到“流金岁月mp3备用下载链接.html”中选择相应的备用地址进行下载 下载链接有可能失效的mp3文件列表请查看“下载链接可能已经失效的mp3列表.txt” 批量下载本页面列出的MP3文件的方法(以迅雷5为例,迅雷7不适用): 若您已经安装迅雷,请在本页面点右键,选择“使用迅雷下载全部链接”; 在弹出的“选择要下载的URL”窗口中,勾选“全选”,然后确定 在接下来的“建立新的下载任务”窗口中,“另存名称”选项后点最右侧的倒三角形符号 选择“注释命名”,确定 这样设置之后,下载回来的MP3文件将会以“序号_歌曲名_歌手名.MP3”的格式命名 FlashGet里的操作可以参考以上步骤 ==================================================================================== 流金岁月 下的歌曲共 首,有效的MP3下载链接共 0 条 是不是百度已经改了。 |
||
![]() 超级会员
|
百度MP3下载链接没有改变
我是在XP_SP3系统上测试的 经过测试,如果wget放在当前目录下的话 会提示缺少几个dll文件 推荐把wget放在c:\windows目录下 下载不到html文件的情况,恐怕和wget所放的位置有关 不妨把wget换个位置 |
||
![]() 热心会员
|
估计是没安装wget 麻烦lz贴一个wget的附件吧 下载了一个zip包 不知道怎么安装
|
||