Board logo

标题: 又一百度歌曲批量下载(2008-6-28 ) [打印本页]

作者: hmily88     时间: 2008-5-28 18:48    标题: 又一百度歌曲批量下载(2008-6-28 )

经过本人再次测试,可以下载,但不是所有歌曲都能下在,是需要完善,完善的任务交给大家了,我觉得后期的完善已经不是很难了,只是很烦琐。
之所以原来不可以下载,是因为偷懒没有上传wget.exe,随便在网上找了一个wget.exe的地址贴上来,可能是因为wget.exe的版本不一样,所以......


注意下载下面的wget
wget
http://upload.cn-dos.net/img/551.rar
@echo off&SetLocal ENABLEDELAYEDEXPANSION
::需要wget.exe
::下载歌曲后的保存路径
set DownLoadDir=D:\Music
::下载歌曲的格式
set geshi=mp3
::每首歌曲最多尝试几个下载地址
set TryUrl=5
::每个下载地址最多尝试几次
set OneTry=2
for /f "delims=" %%a in (DownLoadMusic.txt) do (
set m=0
set n=0
IF EXIST index.htm (del index.htm)
IF EXIST index2.htm (del index2.htm)
set MusicName=%%a
call :DownLoad
)
pause
exit
:DownLoad
wget --output-document=index.htm -q [url]http://mp3.baidu.com/m?f=ms[/url]^&tn=baidump3^&ct=134217728^&lf=^&rn=^&word=%MusicName%^&lm=0
findstr /i /C:"%MusicName%  &word=%geshi%" index.htm>nul||(echo 抱歉,没有找到与"%MusicName%"相关的%geshi%内容&goto :eof)
for /f "delims=" %%i in (index.htm) do (
set /a n+=1
set "var=%%i"
set var=!var:^&=^&!
set var=!var:^>=,!
set var=!var:^<=,!
set var=!var:^"=\!
echo "!var!"|findstr /i /C:"%MusicName%  &word=%geshi%">nul&&(
for /f "tokens=2 delims=\" %%s in ("!var!") do (
set /a get=!n!+1
set url=%%s
))
if !n!==!get! (
for /f "tokens=3 delims=," %%l in ("!var!") do (
set "singer=%%l"
if "!singer!"=="/td" (set singer=未知歌手)
if not "!singer!"=="歌词" (
wget --output-document=index2.htm -q "!url!"
for /f "delims=" %%e in (index2.htm) do (
set "var1=%%e"
set var1=!var1:^&=^&!
set var1=!var1:^>=,!
set var1=!var1:^<=,!
set var1=!var1:^"=\!
echo "!var1!"|findstr /i /C:"歌曲名:">nul&&(
for /f "tokens=2 delims=\" %%g in ("!var1!") do (
wget --output-document="%DownLoadDir%\!singer!-%MusicName%.%geshi%" --tries=%OneTry% "%%g" && (goto :eof)||(set /a m+=1)
if "%TryUrl%"=="!m!" (goto :eof)
)))))))
del index.htm index2.htm
goto :eof
DownLoadMusic.txt
忘记他
带我去月球

[ Last edited by hmily88 on 2008-7-5 at 03:49 PM ]
作者: jiulong     时间: 2008-5-29 16:55
无效,鉴定完毕
作者: plp626     时间: 2008-5-29 17:50
希望楼主继续完善,9分表示离成功只差一步。。。
作者: vkill     时间: 2008-5-29 18:19
现在好像通过这种方式失效了
作者: hmily88     时间: 2008-6-27 16:13
经过本人再次测试,可以下载,但不是所有歌曲都能下在,是需要完善,完善的任务交给大家了,我觉得后期的完善已经不是很难了,只是很烦琐。
之所以原来不可以下载,是因为偷懒没有上传wget.exe,随便在网上找了一个wget.exe的地址贴上来,可能是因为wget.exe的版本不一样,所以......


注意下载下面的wget
wget
http://upload.cn-dos.net/img/551.rar

[ Last edited by hmily88 on 2008-6-27 at 04:49 PM ]
作者: hmily88     时间: 2008-6-28 16:30
希望有人来测试一下,
作者: plp626     时间: 2008-6-29 13:19
RE:hmily88
下面的帖子对兄有参考价值(只是我总是静不下心来潜心学习)
http://www.cn-dos.net/forum/view ... mp;highlight=%2Bngd

PS:这类有关curl,wget的帖子回复率低,或不热并非帖子本身的原因,而是论坛熟练使用这两个工具的人不多,导致"曲高和寡", 我是很欣赏发此类帖子的热心者,毕竟,我们学习P大都是为了"取巧",实用是第一目的。(与我观点不同者可以保留)
作者: hmily88     时间: 2008-6-30 14:14
非常感谢plp626,刚才看了一下,确实不错,但一会还是领悟不了,还得好好研究研究,谢谢,
对了,想请教一个问题
就是如何替换文本中的=号,
比如文本中可能含有”ghost=“
想把他替换成想要的字符串,其他含有”=“号但不匹配的不做处理
不知改如何实现
看了你的回复,可能用Sed处理起来比较容易,可惜我对Sed一窍不通,感觉很复杂啊

[ Last edited by hmily88 on 2008-6-30 at 02:27 PM ]
作者: HAT     时间: 2008-6-30 14:29
sed "s/ghost=/hmily88/g" a.txt

sed.exe
http://upload.cn-dos.net/img/561.zip
作者: hmily88     时间: 2008-6-30 15:01
谢谢,HAT,看来我是得好好的学习一下了。