经过本人再次测试,可以下载,但不是所有歌曲都能下在,是需要完善,完善的任务交给大家了,我觉得后期的完善已经不是很难了,只是很烦琐。
之所以原来不可以下载,是因为偷懒没有上传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 http://mp3.baidu.com/m?f=ms^&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 ]