|  | 
 
| vkill 金牌会员
 
       
 
 
 
 积分 4103
 发帖 1744
 注册 2006-1-20
 来自 甘肃.临泽
 状态 离线
 | 
|  『楼 主』:
 利用baidu批量下载歌曲歌词并试听.bat
 
使用 LLM 解释/回答一下 
 
 
呵呵~这几天弄的,拿出来献献丑,其实也没有什么好的技术可言了,但是我感觉很实用,实用第一嘛,呵呵~ 
利用了sed wget 
 
欢迎大家测试并批评指正,我用的是 
sed http://www.student.northpark.edu/pemente/sed/gsed407x.zip 
wget 1.8
 
 @echo off
 title 歌曲批量下载\试听 ** 歌词批量下载  by:Ye - *
 ::~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 ::变量配置::::::::::::::::::::::::::::::
 ::歌曲格式%x%的设置如下,只可设置一种
 ::0 mp3;1 rm;2 wma;3 asf;4 ram;5 mid;6 flash;7 mpg;8 avi;9 mpeg;10 rmvb;11 ra
 set "x=2"
 ::获取下载地址的个数%down_n%,这样当第一个下载地址失效时还是可以在别的地址下载的
 set "down_n=2"
 ::歌曲歌词同时下载0 ;只下载歌词1
 set "q+c=0"
 ::歌曲试听0 ;歌曲不试听1(当遇到试听+下载的时候先试听然后再开始下载)
 set "t=1"
 ::~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 cls
 if %t%*==0* if not exist mplayer.exe (
 echo 缺少文件mplayer.exe
 echo 请到http://www1.mplayerhq.hu/MPlayer/releases/win32/MPlayer-mingw32-1.0pre8.zip
 echo 或http://yx127.com/mplayer.exe下载,大小7.65M
 pause>nul&goto :eof)
 
 ::~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 cls
 ::设置文件关联
 Assoc .lrc=lrc
 Ftype lrc=C:\WINDOWS\system32\notepad.exe %1
 ::测试配置::::::::::::::::::::::::::::::
 echo %~p0|find /i "Rar$">nul &&(echo 请把本程序解压到文件夹下使用&pause>nul&goto :eof)
 if not exist wget.exe (echo 缺少文件wget.exe&pause>nul&goto :eof)
 if not exist sed.exe (echo 缺少文件sed.exe&pause>nul&goto :eof)
 if not exist music.txt (
 echo 缺少文件music.txt,请手动写入
 echo.
 echo -----music.txt格式如下-------------------
 echo 天冷就回来
 echo 不得不爱
 echo ......
 echo -----------------------------------------
 pause>nul&goto :eof
 )
 echo %x%|findstr "">nul||call :xxxx
 if not %x%==0 if %x:~0,1%==0 call :xxxx
 if 11 lss %x% call :xxxx
 echo %q+c%|findstr "">nul||call :xxxx
 if not %q+c%==0 if %q+c:~0,1%==0 call :xxxx
 if 1 lss %q+c% call :xxxx
 echo %t%|findstr "">nul||call :xxxx
 if not %t%==0 if %t:~0,1%==0 call :xxxx
 if 1 lss %t% call :xxxx
 ping -n 1 mp3.baidu.com>nul||(echo 请先检查网络,ping不通http://mp3.baidu.com&pause>nul&goto :eof)
 findstr . music.txt>nul||(echo music.txt中没有任何歌曲&pause>nul&goto :eof)
 ::根据%x%自动设置歌曲格式%n_%
 ::0 mp3;1 rm;2 wma;3 asf;4 ram;5 mid;6 flash;7 mpg;8 avi;9 mpeg;10 rmvb;11 ra
 if %x%==0 set x_=mp3
 if %x%==1 set x_=rm
 if %x%==2 set x_=wma
 if %x%==3 set x_=asf
 if %x%==4 set x_=ram
 if %x%==5 set x_=mid
 if %x%==6 set x_=flash
 if %x%==7 set x_=mpg
 if %x%==8 set x_=avi
 if %x%==9 set x_=mpeg
 if %x%==10 set x_=rmvb
 if %x%==11 set x_=ra
 goto test_ok
 :xxxx
 echo 变量配置错误&pause>nul&goto :eof
 ::~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 :test_ok
 cd.>xxxx.txt
 ::开始下载::::::::::::::::::::::::::::::
 cls
 echo ----------------------------------------------------------
 echo 任意键开始下载下列歌曲,继续添加请打开music.txt添加
 echo ----------------------------------------------------------
 more<music.txt
 echo ----------------------------------------------------------
 for /f "tokens=*" %%? in ('sed "s/ //g" music.txt') do call :start "%%?"
 del /q/f temp_.txt&del /q/f index.txt
 cls
 findstr . xxxx.txt>nul||(del /q/f xxxx.txt&echo 所有歌曲下载完毕&pause>nul&goto :eof)
 echo 下面几个歌曲没有下载到&type xxxx.txt&del /q/f xxxx.txt&pause>nul&goto :eof
 
 :start
 cls
 set "p1=http://mp3.baidu.com/m?f=ms^&tn=baidump3^&ct=134217728^&lf=^&rn=^&word="
 set "p2=^&lm="
 set "n=%~1"
 ::url_a是直接baidu搜索歌曲的页面
 set "url_a=%p1%%n%%p2%%x%"
 call :wget.bat "%url_a%" index.txt
 find "抱歉,没有找到与" index.txt>nul &&(echo 抱歉,没有找到于"%n%"相关的MP3内容&>>xxxx.txt echo %n%&ping -n 1 127.1>nul&goto :eof)
 
 :下载歌词
 if not exist %n%.lrc (
 for /f "tokens=2 delims=★" %%? in ('sed -n "/<td width=10px valign=top>1<\/td>/{n;n;n;n;n;n;n;p;}" index.txt ^|sed "s/\x22/★/g"') do (call :wget.bat "%%?" temp_.txt)
 sed -n "/<div class=\x22pad10L\x22>/{n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;p;}" temp_.txt |sed  "s/<font style=color:#e10900>//g" |sed "s/<\/font>//g" |sed "s/<br>/,/g">>%n%.lrc
 echo 歌曲%n%.%x_%的歌词下载完毕
 ) else (echo 歌曲%n%.%x_%的歌词已经存在)
 ping -n 1 127.1>nul
 
 if "%q+c%"=="1" (if "%t%"=="1" goto end_2)
 :下载歌曲
 ::url_b?是有歌曲下载地址的页面
 for /l %%~ in (1,1,%down_n%) do (
 if exist %n%.%x_% goto end_2
 for /f "tokens=2 delims=★" %%? in ('sed -n "/<td width=10px valign=top>%%~<\/td>/{n;n;p;}" index.txt ^|sed "s/\x22/★/g"') do (
 set "url_b%%~=%%?"
 call :wget.bat "%%?" temp_.txt
 )
 for /f "tokens=6 delims=★" %%! in ('sed -n "/请点击此链接/{n;p;}" temp_.txt ^|sed "s/\x22/★/g"') do (
 if %t%*==0* call :mplayer.bat "%%!"
 if %q+c%*==1* goto end_2
 echo 正在下载歌曲%n%.%x_%......
 ::重复尝试3次,不安静下载(显示下载进度,要想安静下载加上-q参数)
 wget --output-document=%n%.%x_% --tries=3 -q "%%!"
 echo 歌曲%n%.%x_%下载完毕
 )
 )
 :end_2
 ping -n 1 127.1>nul
 
 goto :eof
 
 ::~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 ::call *.bat::::::::::::::::::::::::::::::
 :wget.bat
 cd.>%2
 wget --output-document=%2 -q "%~1"
 goto :eof
 
 :mplayer.bat
 cls
 title mplayer→→%~1
 echo.
 echo ------播放控制-----------------------------------------------------------------
 echo                  ← or →         倒退 or 快进 10 seconds
 echo                  ↑ or ↓         倒退 or 快进 1  minute
 echo              pgdown or pgup       倒退 or 快进 10 minutes
 echo                   p or 空格       暂停/播放 (pause movie^)
 echo            q or ESC or 回车       结束/下一曲 (stop playing and quit program^)
 echo                   9 or 0          增加/减少音量
 echo                             增加/减少播放速度
 echo --------------------------------------------------------------------------------
 echo.
 echo ------歌词----------------------------------------------------------------------
 type %n%.lrc
 echo --------------------------------------------------------------------------------
 mplayer "%~1">nul
 goto :eof
 
 
 
 
 
 
 
 |  | 
|  2006-11-4 06:40 |  | 
|  | 
 
| vkill 金牌会员
 
       
 
 
 
 积分 4103
 发帖 1744
 注册 2006-1-20
 来自 甘肃.临泽
 状态 离线
 |  | 
|  2006-11-4 06:43 |  | 
|  | 
 
| vkill 金牌会员
 
       
 
 
 
 积分 4103
 发帖 1744
 注册 2006-1-20
 来自 甘肃.临泽
 状态 离线
 | 
| 『第 3 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
网速慢的不好用,呵呵~我是在网吧测试的,还好~
 要是*.lrc文件大小是1K,打开什么也没有,换个打开方式,比如说用写字板打开
 
 觉得是设置文件关联的时候出了点小问题
 
 Last edited by vkill on 2006-11-4 at 07:58 AM ]
 
 
 
 
 |  | 
|  2006-11-4 06:48 |  | 
|  | 
 
| yaoguof 初级用户
 
   
 
 
 
 积分 90
 发帖 35
 注册 2006-10-23
 状态 离线
 |  | 
|  2006-11-5 06:35 |  | 
|  | 
 
| vkill 金牌会员
 
       
 
 
 
 积分 4103
 发帖 1744
 注册 2006-1-20
 来自 甘肃.临泽
 状态 离线
 | 
| 『第 5 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
Originally posted by yaoguof at 2006-11-5 06:35:楼主能否指教一下在批处理中如何实现从网上下载文件呢?
 
wget.exe curl.exe Iget.vbs 
看你自己的喜好 
 
 
 
 |  | 
|  2006-11-5 06:40 |  | 
|  | 
 
| qq82015930 中级用户
 
    
 
 
 积分 235
 发帖 109
 注册 2006-8-24
 状态 离线
 |  | 
|  2006-11-5 07:35 |  | 
|  | 
 
| llgg001 初级用户
 
   
 
 
 
 积分 32
 发帖 13
 注册 2006-10-30
 状态 离线
 |  | 
|  2006-11-6 00:52 |  | 
|  | 
 
| electronixtar 铂金会员
 
        
 
 
 
 积分 7493
 发帖 2672
 注册 2005-9-2
 状态 离线
 | 
| 『第 8 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
楼主强人啊~
 Last edited by electronixtar on 2006-11-6 at 02:47 AM ]
 
 
 
 
 
 |  
                  |  
 C:\>BLOG http://initiative.yo2.cn/
 C:\>hh.exe ntcmds.chm::/ntcmds.htm
 C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
 |  | 
|  2006-11-6 02:23 |  | 
|  | 
 
| xuantian 高级用户
 
     
 
 
 
 积分 587
 发帖 282
 注册 2006-4-10
 状态 离线
 |  | 
|  2006-11-6 04:58 |  | 
|  | 
 
| vkill 金牌会员
 
       
 
 
 
 积分 4103
 发帖 1744
 注册 2006-1-20
 来自 甘肃.临泽
 状态 离线
 | 
| 『第 10 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
Originally posted by xuantian at 2006-11-6 04:58:人肉搜索系统都很难找到满意的,更何况.....
 
呵呵~只是为了方便啊~你可以根据自己喜好改改用 
 
 
 
 |  | 
|  2006-11-6 07:14 |  | 
|  | 
 
| zerostudy 中级用户
 
    
 
 
 
 积分 266
 发帖 98
 注册 2006-4-21
 状态 离线
 | 
| 『第 11 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
果然是强人...  暂时还接触不了这么高深的....收藏以后看~~~
 
 
 
 
 
 |  
                  |  纵是千年万年 亦难以忘记
 |  | 
|  2006-11-6 07:51 |  | 
|  | 
 
| utem999 初级用户
 
   
 
 
 积分 135
 发帖 54
 注册 2006-9-10
 状态 离线
 |  | 
|  2006-11-6 08:03 |  | 
|  | 
 
| vkill 金牌会员
 
       
 
 
 
 积分 4103
 发帖 1744
 注册 2006-1-20
 来自 甘肃.临泽
 状态 离线
 |  | 
|  2006-11-6 08:11 |  | 
|  | 
 
| utem999 初级用户
 
   
 
 
 积分 135
 发帖 54
 注册 2006-9-10
 状态 离线
 |  | 
|  2006-11-6 21:33 |  | 
|  | 
 
| ccwan 金牌会员
 
       
 
 
 积分 2725
 发帖 1160
 注册 2006-9-23
 来自 河北廊坊
 状态 离线
 |  | 
|  2006-11-6 23:27 |  |