[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[网络工具] 批处理下载歌曲

使用了外部工具curl,代码挺繁杂,不会sed等文本提取命令。测试成功率>=80%,失败原因可能找不到歌曲链接,或者无此歌曲。另一个失败原因是只会下载找到的第一个歌曲连接。
以下:
  1. @echo off&Title Batch_Downloader
  2. if exist temp\ rd temp /s /q 2>nul
  3. md temp
  4. set/p name=输入歌曲名字:
  5. set "nam=%name%"&set "name=%name: =+%"
  6. curl "temp\_tmp.txt'>http://one.cn.yahoo.com/s?p=%name%&v=music&ei=gbk&pid=ysearch&source=ysmt_topsearch_r&x=">temp\_tmp.txt
  7. cls
  8. for /f "tokens=4 delims= " %%a in ('findstr "http://i.music.cn.yahoo.com/down.php?" "temp\_tmp.txt"') do (
  9.    set "str=%%a"
  10.    setlocal enabledelayedexpansion
  11.    set "str=!str:ranges= !"
  12.    for /f %%i in ("!str:~6!") do (
  13.        curl "%%iranges=3">temp\_tmp1.txt&cls
  14.        for /f "tokens=6 delims== " %%s in ('findstr "歌曲出处" "temp\_tmp1.txt"') do (
  15. echo.&echo.&title %nam%: %%s
  16. echo          ===========================================================
  17. for /f "skip=1 delims=:" %%d in ('^(echo %%~s^&echo.^)^|findstr/o .*') do set/a m=^(80-%%d-3^)/2
  18. for /l %%c in (1 1 !m!) do set/p= <nul
  19. set/p=%%~s<nul&echo.
  20. echo          ===========================================================
  21. echo.&echo.
  22. set "ext=%%~s"&set "ext=!ext:~-4!"
  23. curl %%s -o "%nam%!ext!"
  24.       )
  25.    )
  26.    goto :next
  27. )
  28. :next
  29. rd temp /s /q 2>nul
  30. for /l %%a in (1 1 4) do echo.
  31. if exist "%nam%!ext!" (echo                                   下载完成。) else echo                                   下载失败。
  32. pause>nul
复制代码
------------------------------------------------------------------
10月4日修改:使用WFR.EXE WGET.EXE简化代码,添加歌曲备份功能。
  1. @echo off&setlocal enabledelayedexpansion
  2. :begin
  3. echo\&echo\
  4. for /f "tokens=1*" %%a in ('findstr /v $ %~fs0') do (
  5.       if "%%a" neq "::" (
  6.          set/p var=   输入歌曲存储路径:
  7.          echo\&echo\&set/p "sure=   What you specified is !var!,sure?(y/n)"
  8.          if /i "!sure:~,1!" equ "y" (
  9.              (echo.&call set/p=:: %%var%%<nul)>>"%~0"
  10.              ) else (
  11.              cls&goto begin
  12.          )) else (
  13.          set "var=%%b"
  14. ))
  15. if not exist "%var%" md "%var%"
  16. if "%var:~-1%" equ "\" set "var=%var:~,-1%"
  17. echo.&echo.
  18. set/p music=     输入歌曲名字:
  19. set "music=%music: =+%"&set "a=%music%"
  20. wget -O tmp.txt "http://one.cn.yahoo.com/s?p=%music%&v=music&ei=gbk&pid=ysearch&source=218&x=" -q
  21. type tmp.txt|wfr /rnnlic:".*(http://i.music.cn.yahoo.com/down.php)" /t:"\1"|wfr /rnnl
  22. ic:"ranges\=(\d).*" /t:"ranges=\1">t
  23. move /y t tmp.txt&set/p url=<tmp.txt
  24. wget "%url%" -O tmp.txt -q
  25. findstr "歌曲出处" "tmp.txt"|wfr /r:"(.*href\=\"^|\" target.*)" /t>"t"
  26. echo\&echo\&echo                      Is downloading...
  27. move /y t tmp.txt&wget -O "%var%\%a%.mp3" -i tmp.txt -q
  28. del tmp.txt
  29. pause
复制代码
wget.exe下载:http://bbs.bathome.net/thread-2040-1-1.html
wfr.exe下载:http://bbs.bathome.net/thread-1909-1-2.html
---------------------------------------------------------------------------------------------------
10月11日更新,添加歌曲试听功能,借助第三方工具curl.exe sed.exe
  1. @echo off&title Puso.D.False
  2. :: 08-10-11更新,添加歌曲试听、备份功能。
  3. :: 借助第三方工具sed.exe curl.exe
  4. :: sed.exe教程+下载:http://bbs.bathome.net/thread-1929-1-1.html
  5. :: curl.exe下载: http://bbs.bathome.net/thread-1761-1-2.html
  6. :: 下载以上两个工具,放到此批处理所在目录或%windir%目录中。
  7. :: 第一次运行需要指定歌曲存储路径,在指定目录下将创建urllist文件夹,用以存储歌曲链接,方便以后使用。
  8. :: 若要指定其他目录,把此批处理最后一行的":: 上次指定的歌曲路径"删除,重新运行此批处理即可。
  9. :: 成功率=>90%,出错原因可能是因为文本提取错误,或无此歌曲。
  10. echo.&echo   初始化…………&echo.&del %temp%\tmp.txt 2>nul
  11. ping /n 2 nul||(echo">www.baidu.com>nul||(echo  网络出现故障………&pause>nul&exit/b)
  12. :begin
  13. setlocal enabledelayedexpansion
  14. cls&echo\&echo\
  15. for /f "tokens=1*" %%a in ('findstr /v $ %~fs0') do (
  16.       if "%%a" neq "::" (
  17.          set/p var=   输入歌曲存储路径:
  18.          echo\&echo\&set/p "sure=   你输入的是【!var!】,是否确定(y/n)?"
  19.          if /i "!sure:~,1!" equ "y" (
  20.              (echo.&call set/p=:: %%var%%<nul)>>"%~0"
  21.              ) else (
  22.              cls&endlocal&goto begin
  23.          )) else (
  24.          set "var=%%b"
  25. ))
  26. if "%var:~-1%" equ "\" set "var=%var:~,-1%"
  27. if not exist "%var%\urllist\" md "%var%\urllist"
  28. cls&echo\&echo\
  29. set /p music=   输入歌曲名称(x退出):
  30. if /i "%music%" equ "x" exit/b
  31. set "a=%music%"&set "music=%music: =+%"
  32. if exist "%var%\%a%.mp3" (
  33.    cls&echo\&echo\
  34.    set /p "su=    歌曲已经存在,是否继续(y/n)?"
  35.    if /i "!su:~,1!" equ "n" endlocal&goto begin
  36. )
  37. if exist "%var%\urllist\%a%.txt" (
  38.    for /f "usebackq tokens=2*" %%i in ("%var%\urllist\%a%.txt") do (set/a y+=1&set "_!y!=%%j")
  39.    goto next
  40. )
  41. curl -s "http://one.cn.yahoo.com/s?p=%music%&v=music&ei=gbk&pid=ysearch&source=218&x="|^
  42. sed "/http.*i\.music\.cn\.yahoo\.com.down\.php/^!d;s/.*\(http.*ranges.[0-9]\).*/\1/">%temp%\tmp.txt
  43. for /f "delims=" %%i in (%temp%\tmp.txt) do (
  44.      set/a n+=1
  45.      if !n! leq 10 (
  46.         for /f "delims=" %%a in ('curl "%%i" -s^|sed "/歌曲出处.*http.*\.mp3.*/^!d;s/.*\^(http.*mp3\^).*/\1/"') do (
  47.              set/a x+=1
  48.              echo    !x! …………^> %%a
  49.              set "_!x!=%%a"
  50.         )) else (
  51.         goto next
  52. ))>>"%var%\urllist\%a%.txt"
  53. :next
  54. cls&echo\&echo\
  55. type "%var%\urllist\%a%.txt"&echo\&echo\
  56. set /p num=    输入歌曲编号试听 (e返回,x退出):
  57. if /i "%num:~,1%" equ "e" endlocal&goto begin
  58. if /i "%num:~,1%" equ "x" exit/b
  59. if not defined _%num% goto next
  60. start wmplayer.exe "!_%num%!"
  61. echo.&echo.&set /p down=      是否下载(y/n)?
  62. echo\&echo\
  63. if /i "%down:~,1%" equ "y" (curl -o "%var%\%a%.mp3" "!_%num%!") else goto next
  64. del %temp%\tmp.txt 2>nul&endlocal&cls&echo\&echo\
  65. echo      下载完成,任意键返回……&pause>nul&goto begin
复制代码
链接: https://pan.baidu.com/s/1D_vhFSpy8qc1rqo8EQNNRw?pwd=nvyt
sed教程+下载:http://bbs.bathome.net/thread-1929-1-1.html
curl下载:http://bbs.bathome.net/thread-1761-1-2.html
1

评分人数

心绪平和,眼藏静谧。

回复 1# pusofalse


    很好用啊  谢了

TOP

看看

希望你的代码能帮上忙,在写两个字,够了吧

TOP

都是下载不了

TOP

回复 11楼 的帖子

怎么用不成?说的详细点,如果出错,就把出错信息贴上来,方便调试修改。
心绪平和,眼藏静谧。

TOP

不知道是我不会用还怎么,用不成

TOP

hao de   hao de

TOP

太棒了。偶像!

偶像!偶像!偶像!偶像!

TOP

回复 6楼 的帖子

为什么“配合vbs一起用会更好的”?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

下载了,感觉不错

TOP

very good!
太好了,如果配合vbs一起用会更好的

TOP


来看看。学习下……
要想提高多做,多想,多问!
空间http://www.wangwei4106.ys168.com

TOP

不错,实用!辛苦了!顶一下~
虚心使人进步 细节成就完美

TOP

仔细研究一下,帮你顶上

TOP

Nice job!
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表