|
vkill
金牌会员
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『楼 主』:
利用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
|
|
2006-11-4 06:40 |
|
|
vkill
金牌会员
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『第
2 楼』:
附件:
请把两个压缩包解压到一个目录中使用
附件
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)
|
|
2006-11-4 06:43 |
|
|
vkill
金牌会员
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『第
3 楼』:
网速慢的不好用,呵呵~我是在网吧测试的,还好~
要是*.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
状态 离线
|
『第
4 楼』:
楼主能否指教一下在批处理中如何实现从网上下载文件呢?
|
|
2006-11-5 06:35 |
|
|
vkill
金牌会员
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『第
5 楼』:
Quote: | 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
状态 离线
|
『第
7 楼』:
good
支持,好东西,下吧~~~
|
|
2006-11-6 00:52 |
|
|
electronixtar
铂金会员
积分 7493
发帖 2672
注册 2005-9-2
状态 离线
|
『第
8 楼』:
楼主强人啊~
[ 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
状态 离线
|
『第
9 楼』:
人肉搜索系统都很难找到满意的,更何况.....
|
个人网盘 |
|
2006-11-6 04:58 |
|
|
vkill
金牌会员
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『第
10 楼』:
Quote: | Originally posted by xuantian at 2006-11-6 04:58:
人肉搜索系统都很难找到满意的,更何况..... |
|
呵呵~只是为了方便啊~你可以根据自己喜好改改用
|
|
2006-11-6 07:14 |
|
|
zerostudy
中级用户
积分 266
发帖 98
注册 2006-4-21
状态 离线
|
『第
11 楼』:
果然是强人...
暂时还接触不了这么高深的....收藏以后看~~~
|
纵是千年万年 亦难以忘记 |
|
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
状态 离线
|
『第
14 楼』:
是放在当前目录里滴
还是不能自动播放
停在:所有歌曲下载完毕
之后就没了
XP SP2
|
|
2006-11-6 21:33 |
|
|
ccwan
金牌会员
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
|
2006-11-6 23:27 |
|