LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 882|回复: 2

一个自动获取歌词的脚本

[复制链接]
发表于 2006-7-18 23:34:47 | 显示全部楼层 |阅读模式
用起来还是很方便的,
  1. #!/bin/bash
  2. #Usage: getlrc 歌名 [歌手 [专辑]]
  3. #   or: getlrc mp3文件名 [歌手 [专辑]]
  4. #可以设置mp3文件关联, 就可以直接用它"打开"mp3文件, 下载歌词
  5. #要求gnome-terminal, wget
  6. #lrcdir可能要适当修改.
  7. #by lastart@linuxisr
  8. export LC_CTYPE=zh_CN.GBK
  9. if [ "$TERM" == dumb ]
  10. then
  11.         gnome-terminal -x "$0" "$@"
  12.         exit
  13. fi
  14. logfile=/dev/null
  15. result=/tmp/a.htm
  16. cookies=/tmp/lrc_cookies
  17. list="/tmp/lrclist"
  18. lrcdir="$HOME/music/lyrics"
  19. lrcfile="${1%.mp3}"
  20. if [ "$lrcfile" == "$1" ]
  21. then
  22.         lrcfile="$lrcdir/$lrcfile"
  23. fi
  24. gm="`basename "$lrcfile"`"
  25. gm="${gm// /+}"
  26. gm="${gm//_/+}"
  27. zj="${3// /+}"
  28. gs="${2// /+}"
  29. if [ ! -f $cookies ]
  30. then
  31.         wget -o $logfile -O $logfile --keep-session-cookies --save-cookies=$cookies http://www2.5ilrc.com/souge1.asp
  32. fi
  33. searchanddown()
  34. {
  35. wget -o $logfile -O $result --load-cookies=$cookies --post-data='gm='"$gm"'&zj='"$zj"'&search=1&gs='"$gs" --referer="http://www2.5ilrc.com/souge1.asp" http://www2.5ilrc.com/souge1.asp
  36. echo -e "No.\t歌名\r\t\t\t专辑\r\t\t\t歌手\r\t\t\t\t\t上传者\r\t\t\t\t\t\t\t下载\t更新时间"
  37. riphtm "$result"
  38. echo -n "下载序号(r重搜):"
  39. read -t 10 xh
  40. if [ -z "$xh" ]
  41. then
  42.         xh=1
  43. elif [ "$xh" == "r" ]
  44. then
  45.     echo "输入歌名:"
  46.     read gm
  47.     echo "输入歌手:"
  48.     read gs
  49.     echo "输入专辑:"
  50.     read zj
  51.     searchanddown
  52.     exit
  53. fi
  54. did=`awk 'FNR=='"$xh"' {print}' /tmp/lrclist`
  55. id=`echo $did|sed 's/.*ID=//;s/&.*$//'`
  56. if [ -z "$id" ]
  57. then
  58.         exit
  59. fi
  60. #wget -O c.htm --load-cookies=/tmp/lrc_cookies --referer="http://www2.5ilrc.com/souge1.asp" http://www2.5ilrc.com/gqShow.asp?ID=239786
  61. if wget -o $logfile -O "$lrcfile".lrc --load-cookies=$cookies --referer="http://www2.5ilrc.com/$did" --post-data="id_gc=$id" http://www2.5ilrc.com/downlrc.asp
  62. then
  63.         echo download lyric successful
  64.         sleep 2
  65.         exit
  66. fi
  67. }
  68. searchanddown
复制代码
下面是riphtm
  1. #!/usr/bin/awk -f
  2. BEGIN{RS="<[Tt][Rr]>";FS="</[tT][Dd]>";i=1;printf("")>"/tmp/lrclist"}
  3. /点击,查看lrc格式歌词/ {lj=$1;
  4.         gsub(".*href="","",lj);
  5.         gsub("" target.*$","",lj);
  6.         gm=$1;
  7.         gsub("[ \n\r\t]*<[^>]*>[\n\r \t]*","",gm)
  8.         zj=$2;
  9.         gsub("[ \n\r\t]*<[^>]*>[\n\r \t]*","",zj)
  10.         gs=$3;
  11.         gsub("[ \n\r\t]*<[^>]*>[\n\r \t]*","",gs)
  12.         sj=$4;
  13.         gsub("[ \n\r\t]*<[^>]*>[\n\r \t]*","",sj)
  14.         xz=$5;
  15.         gsub("[ \n\r\t]*<[^>]*>[\n\r \t]*","",xz)
  16.         scz=$6
  17.         gsub("[ \n\r\t]*<[^>]*>[\n\r \t]*","",scz)
  18.         print i".\t" gm"\r\t\t\t"zj"\r\t\t\t"gs"\r\t\t\t\t\t"scz"\r\t\t\t\t\t\t\t"xz"\t"sj;
  19.         print lj >"/tmp/lrclist";
  20.         i++;
  21. }
复制代码
发表于 2006-7-20 17:07:58 | 显示全部楼层
不错,回家的时候试试。
回复 支持 反对

使用道具 举报

发表于 2006-8-18 11:30:26 | 显示全部楼层
请问楼主,我把这两个脚本分别保存为两个文件,然后让可以成为可执行文件。但是运行起来还是有很多错误。楼主可否把这两个脚本需要的实验环境详细的说明一下。多谢楼主。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表