中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 利用baidu批量下载歌曲歌词并试听.bat
« [1] [2] [3] [4] »
作者:
标题: 利用baidu批量下载歌曲歌词并试听.bat 上一主题 | 下一主题
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


   此帖被 +2 点积分     点击查看详情   
评分人:【 redtek 分数: +2  时间:2006-11-4 20:44


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
状态 离线
『第 6 楼』:  

学习学习。   支持~~!

2006-11-5 07:35
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (82015930)  编辑帖子  回复  引用回复
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
查看资料  发送邮件  发短消息 网志  OICQ (315594066)  编辑帖子  回复  引用回复
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
状态 离线
『第 12 楼』:  

不能自动播放

2006-11-6 08:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 13 楼』:  



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

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

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

2006-11-6 08:11
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
utem999
初级用户




积分 135
发帖 54
注册 2006-9-10
状态 离线
『第 14 楼』:  



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

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

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

是放在当前目录里滴
还是不能自动播放
停在:所有歌曲下载完毕
之后就没了
XP SP2

2006-11-6 21:33
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 15 楼』:  

同楼上,我也是。

2006-11-6 23:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] [4] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: