Board logo

标题: 利用baidu批量下载歌曲歌词并试听.bat [打印本页]

作者: vkill     时间: 2006-11-4 06:40    标题: 利用baidu批量下载歌曲歌词并试听.bat

呵呵~这几天弄的,拿出来献献丑,其实也没有什么好的技术可言了,但是我感觉很实用,实用第一嘛,呵呵~

利用了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 "[0-9]">nul||call :xxxx
if not %x%==0 if %x:~0,1%==0 call :xxxx
if 11 lss %x% call :xxxx
echo %q+c%|findstr "[0-9]">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 "[0-9]">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                   [ or ]          增加/减少播放速度
echo --------------------------------------------------------------------------------
echo.
echo ------歌词----------------------------------------------------------------------
type %n%.lrc
echo --------------------------------------------------------------------------------
mplayer "%~1">nul
goto :eof

作者: vkill     时间: 2006-11-4 06:43
附件:

请把两个压缩包解压到一个目录中使用
附件 1: 歌曲批量下载试听歌词批量下载.rar (2006-11-4 06:43, 271.13 K, 下载附件所需积分 1点 ,下载次数: 826)
附件 2: sed.rar (2006-11-4 06:44, 40.33 K, 下载附件所需积分 1点 ,下载次数: 967)

作者: vkill     时间: 2006-11-4 06:48
网速慢的不好用,呵呵~我是在网吧测试的,还好~

要是*.lrc文件大小是1K,打开什么也没有,换个打开方式,比如说用写字板打开

觉得是设置文件关联的时候出了点小问题

[ Last edited by vkill on 2006-11-4 at 07:58 AM ]
作者: yaoguof     时间: 2006-11-5 06:35
楼主能否指教一下在批处理中如何实现从网上下载文件呢?
作者: vkill     时间: 2006-11-5 06:40


  Quote:
Originally posted by yaoguof at 2006-11-5 06:35:
楼主能否指教一下在批处理中如何实现从网上下载文件呢?

wget.exe curl.exe Iget.vbs
看你自己的喜好
作者: qq82015930     时间: 2006-11-5 07:35
学习学习。   支持~~!
作者: llgg001     时间: 2006-11-6 00:52    标题: good

支持,好东西,下吧~~~
作者: electronixtar     时间: 2006-11-6 02:23
楼主强人啊~

[ Last edited by electronixtar on 2006-11-6 at 02:47 AM ]
作者: xuantian     时间: 2006-11-6 04:58
人肉搜索系统都很难找到满意的,更何况.....
作者: vkill     时间: 2006-11-6 07:14


  Quote:
Originally posted by xuantian at 2006-11-6 04:58:
人肉搜索系统都很难找到满意的,更何况.....

呵呵~只是为了方便啊~你可以根据自己喜好改改用
作者: zerostudy     时间: 2006-11-6 07:51
果然是强人...  
暂时还接触不了这么高深的....收藏以后看~~~
作者: utem999     时间: 2006-11-6 08:03
不能自动播放
作者: vkill     时间: 2006-11-6 08:11


  Quote:
Originally posted by utem999 at 2006-11-6 08:03:
不能自动播放

要把mplayer.exe文件下载到当前目录啊~我这可以~

下载地址: http://yx127.com/mplayer.rar
作者: utem999     时间: 2006-11-6 21:33


  Quote:
Originally posted by vkill at 2006-11-6 08:11:

要把mplayer.exe文件下载到当前目录啊~我这可以~

下载地址: http://yx127.com/mplayer.rar

是放在当前目录里滴
还是不能自动播放
停在:所有歌曲下载完毕
之后就没了
XP SP2
作者: ccwan     时间: 2006-11-6 23:27
同楼上,我也是。
作者: vkill     时间: 2006-11-7 09:20
mplayer "%~1">nul

把这句的>nul去掉,看看有什么提示
作者: vkill     时间: 2006-11-7 10:07
我win xp sp2 可以,不知道各位的出了什么问题~
作者: utem999     时间: 2006-11-7 21:13


  Quote:
Originally posted by vkill at 2006-11-7 09:20:
mplayer "%~1">nul

把这句的>nul去掉,看看有什么提示

一句话
还是不行
没有提示
作者: vkill     时间: 2006-11-9 02:12


  Quote:
Originally posted by utem999 at 2006-11-7 21:13:

一句话
还是不行
没有提示

晕,不会是这没有修改吧!
::歌曲试听0 ;歌曲不试听1(当遇到试听+下载的时候先试听然后再开始下载)
set "t=1"
作者: llgg001     时间: 2006-11-12 05:06    标题: 迷惑!!??

不能下载歌曲,修改文件也没用
作者: vkill     时间: 2006-11-12 05:33


  Quote:
Originally posted by llgg001 at 2006-11-12 05:06:
不能下载歌曲,修改文件也没用

我试了怎么都可以啊?
作者: jiesen     时间: 2006-11-12 05:58
楼住厉害 呵呵
作者: ksuny     时间: 2006-11-12 06:25
强!!!!!!!
作者: xiaoshuq     时间: 2006-12-31 04:53    标题: ddddddddddd

好东西啊
作者: diaogong     时间: 2007-4-16 12:17
dddddddd
作者: yinghao2005     时间: 2007-4-18 03:03
为什么我下歌的时候什么都没选择就结束了
作者: menglongfc     时间: 2007-4-22 00:34
哈哈哈哈,好东西,先下拉,以后下歌不就方便拉
作者: menglongfc     时间: 2007-4-22 00:35
提问.我的怎么网络不通呢>?
作者: flandy     时间: 2007-4-30 12:57
支持
作者: huyingbin     时间: 2007-5-26 17:43

作者: zjl5     时间: 2007-5-26 20:38
好东东,顶了.
作者: yjq635     时间: 2007-5-26 22:34
怎一个牛字了得!
作者: rhanrain     时间: 2007-7-6 22:37
hehe呵呵
厉害啊
真厉害
作者: dunniu     时间: 2007-10-21 17:53
下不了
下了两个0字节歌词文件
作者: weapfe     时间: 2007-12-8 19:42    标题: 为什么我的ping不通百度?

如题,我的一运行就显示这个
“.lrc=lrc
lrc=C:\WINDOWS\system32\notepad.exe
请先检查网络,ping不通http://mp3.baidu.com

楼主看看先。。。
作者: vkill     时间: 2007-12-9 15:25


  Quote:
Originally posted by weapfe at 2007-12-8 19:42:
如题,我的一运行就显示这个
“.lrc=lrc
lrc=C:\WINDOWS\system32\notepad.exe
请先检查网络,ping不通http://mp3.baidu.com

楼主看看先。。。

n年前写的了,现在用不了了
作者: ahqueer     时间: 2007-12-11 11:45
顶上
作者: xyq3312     时间: 2007-12-18 13:14
嗯,不错,我也试一下
作者: would2008     时间: 2007-12-18 22:15
不行啊!歌词文件空的
作者: renl     时间: 2007-12-20 18:35
好东西
支持哈
作者: hackgyj     时间: 2007-12-26 06:06
不错噢```````
作者: 97ok     时间: 2007-12-29 21:45    标题: 来一分下载

来一分下载
作者: lanlinlan     时间: 2008-1-4 15:23
现在好像不能用了哦
作者: csscz     时间: 2008-3-15 02:08
真方便和实用
作者: annugu     时间: 2008-3-28 18:52
不能自动播放
作者: a6626236     时间: 2008-3-28 21:37
好象有个代码格式写错了
作者: tayezuifeng     时间: 2008-4-1 17:04
挺实用的,顶!
作者: wgqtoday     时间: 2008-4-6 12:41
同楼上,我也是。
作者: wgqtoday     时间: 2008-4-6 12:41
GOOD,THANKS
作者: aashaomiao     时间: 2008-4-6 16:37
看不懂啊
作者: sadamu9527     时间: 2008-4-23 15:08
非常非常非常非常不错。
作者: qlhhu     时间: 2008-4-24 17:43
hen hao
作者: m5891662l     时间: 2008-5-3 11:09
好东西,学习,学习一下

顶,,,,,顶,,,,,顶,,,,,,顶,,,,,,
作者: kk12369     时间: 2008-5-17 01:33
帮你顶一下好贴不沉
作者: lhb9900     时间: 2010-11-19 22:53
crt+d
作者: 740011611     时间: 2010-11-22 13:12
下载的歌词是空的,没有歌曲啊?