中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » Yahoo歌曲批量下载(2008-07-05)
作者:
标题: Yahoo歌曲批量下载(2008-07-05) 上一主题 | 下一主题
hmily88
初级用户





积分 111
发帖 29
注册 2008-4-20
状态 离线
『楼 主』:  Yahoo歌曲批量下载(2008-07-05)

搜索了一下,发现百度歌曲批量下载的不少,暂没发现 雅虎 歌曲的批量下载,顺手弄了一个,时间仓促,如有不完善的,请跟帖完善或说明。

注意下载下面的Sed+wget+Bat附件,因为可能别的Sed+wget可能因为版本不一样导致无法实现其既定功能。

附件1:雅虎歌曲批量下载(Sed+wget+Bat)

若有兴趣可以和下面的整合到一起

附件2:百度歌曲批量下载


雅虎歌曲批量下载代码:
@echo off&setlocal enabledelayedexpansion
::下载歌曲后的保存路径
set DownLoadDir=D:\Music
::下载歌曲的格式
set geshi=mp3
::每首歌曲最多尝试几个下载地址
set TryUrl=5
::每个下载地址最多尝试几次
set OneTry=2
IF EXIST index0*.txt (del index0*.txt)
IF EXIST temp*.txt (del temp*.txt)
for /f "delims=" %%l in (DownLoadMusic.txt) do (
set m=0
set n=0
set MusicName=%%l
set DownName=!MusicName: =+!
call :down
del index01.txt
)
echo.
echo 全部歌曲下载完毕
pause
exit
:down
wget --output-document=index01.txt -q http://one.cn.yahoo.com/s?p=!DownName!^&v=music^&pid=hp
echo Set objFSO = CreateObject("Scripting.FileSystemObject") > MakeBOM.vbs
echo Set objFile = objFSO.CreateTextFile("Unicode.BOM",,true) >> MakeBOM.vbs
cscript //Nologo MakeBOM.vbs
reg add "HKCU\Console\%%SystemRoot%%_System32_cmd.exe" /v CodePage /t REG_DWORD /d 65001 /f >nul
start /wait /min cmd /u /c "for %%a in (index01.txt) do copy Unicode.BOM tmpfile.tmp&type "%%~fa" >> tmpfile.tmp&move /y tmpfile.tmp "temp.txt""
del index01.txt
reg add "HKCU\Console\%%SystemRoot%%_System32_cmd.exe" /v CodePage /t REG_DWORD /d 936 /f >nul
start /wait /min cmd    /c "for %%a in (temp.txt) do type "%%~fa" >index01.txt"
reg delete "HKCU\Console\%%SystemRoot%%_System32_cmd.exe" /f >nul
del MakeBOM.vbs Unicode.BOM temp.txt
findstr /i /C:"对不起,没有找到与 " index01.txt>nul&&(echo 抱歉,没有找到与!MusicName!相关的内容&goto :eof)
for /f "delims=" %%a in (index01.txt) do (
set str=%%a
set str=!str:^<b^>=!
set str=!str:^</b^>=!
set str=!str:^<font =!
set str=!str:^</font^>=!
set str=!str:"#FF0000"^>=!
set str=!str:^<=,!
set str=!str:^>=,!
set str=!str:^"=,!
echo !str!>>temp01.txt
)
sed "s/color=//g" temp01.txt>>temp.txt
del temp01.txt
for /f "tokens=3,5,8,12 delims=," %%a in (temp.txt) do (
set /a n+=1
if %%d==!MusicName! (
set Url=%%b
set /a Ar=!n!+1
set /a Mo=!n!+5
set /a Si=!n!+6
)
if !n!==!Ar! (
set Artist=%%c
if "!Artist!"=="/a" (set Artist=未知歌手)
)
if !n!==!Mo! (set Mode=%%a)
if !n!==!Si! (set Size=%%a
if !Mode!==!geshi! (
wget --output-document=index02.txt -q !Url!
cd.>temp2.txt
for /f "delims=" %%i in (index02.txt) do (
set str=%%i
set str=!str:^"=,!
set str=!str:^>=,!
set str=!str:^<=,!
echo !str!>>temp2.txt
)
for /f "tokens=4,7 delims=," %%i in (temp2.txt) do (
if "%%i"=="歌曲出处: " (
wget --output-document="%DownLoadDir%\!Artist!-%MusicName%.!Mode!" --tries=%OneTry% "%%j" && (goto end)||(set /a m+=1&del "%DownLoadDir%\!Artist!-%MusicName%.!Mode!")
))))
if "%TryUrl%"=="!m!" (goto end)
)
:end
del temp2.txt index02.txt temp.txt
goto :eof
DownLoadMusic.txt
听见幸福
日不落

[ Last edited by hmily88 on 2008-7-19 at 03:43 PM ]

   此帖被 +11 点积分        点击查看详情   
评分人:【 plp626 分数: +11  时间:2008-6-30 22:13




上网时间有限,可能不能即时给你回复,抱歉!!!
2008-6-30 17:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 2 楼』:  

提议:
1,放弃 下载速度小于10K/S的地址
2,充分利用sed简化代码

PS:
singlist.txt(共2万多首歌名)
http://upload.cn-dos.net/img/563.rar



山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
2008-6-30 23:23
查看资料  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 3 楼』:  

个人总感觉这类的匹配下载地址的方法不是很好

2008-7-1 20:33
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
hmily88
初级用户





积分 111
发帖 29
注册 2008-4-20
状态 离线
『第 4 楼』:  



  Quote:
Originally posted by plp626 at 2008-6-30 11:23 PM:
提议:
1、放弃 下载速度小于10K/S的地址
2、充分利用sed简化代码

PS:
singlist.txt(共2万多首歌名)
http://upload.cn-dos.net/img/563.rar

感谢

1、暂时不知道如何放弃下载小于10K/S的地址
     下载时下载速度也是随时变化的,有可能小于10K/S的下载速度几率很小,
      但整体下载速度却很快,这是一种情况,也有可能下载速度一直都小于
      10K/S。所以比较难于控制。
2、对于sed正在学习中。

  Quote:
Originally posted by vkill at 2008-7-1 08:33 PM:
个人总感觉这类的匹配下载地址的方法不是很好

能不能具体说一下,或有什么好的方法也请赐教。谢了!

[ Last edited by hmily88 on 2008-7-5 at 01:40 PM ]



上网时间有限,可能不能即时给你回复,抱歉!!!
2008-7-5 13:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 5 楼』:  



  Quote:
Originally posted by hmily88 at 2008-7-5 13:25:



感谢

1、暂时不知道如何放弃下载小于10K/S的地址
     下载时下载速度也是随时变化的,有可能小于10K/S的下载速度几率很小,
      但整体下载 ...

没有发现好的方法还

2008-7-6 19:38
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: