| 
 
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 | 
  
 |