寒假在家Mp3被我折腾坏了,不能随身听了。在创新院,想听歌,只能到Google Music了。但曲目都得重新找,浪费时间,GMusic虽然也能保存你的曲目,但使用的ID却不是Google的,而是什么人人网的ID。于是想着连上宿舍自己的机器,用ftp + mplayer听歌。
首先得把音乐放到ftp可以访问的目录下,不用cp,而是mount:
sudo mount --bind ~/Muisc /srv/ftp/pub |
剩下的就是脚本流了:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #!/bin/sh # Fillename:play.sh # 使用方法:./play.sh Host Diretory #当脚本退出或被中断(Ctrl+C)时,删除曲目文件 trap 'rm -f list.txt;exit 1' INT trap 'rm -f list.txt' EXIT #连接ftp并进入指定目录 lftp "$1" <<!TOC! cd pub/"$2"/ ls > list.txt quit !TOC! #删除非mp3文件名,得到mp3文件名 sed -i -e '/mp3/!d' -e 's/^.\{56\}//g' list.txt #设定分隔符为','(默认为空白符),应对文件名内的空格 IFS=, #得到行数 lines=`sed -n -e "$=" list.txt` i=1 while [ "$i" -le "$lines" ] do file=`sed -n -e "${i}p" list.txt` mplayer ftp://l.dutor.net/pub/Beloved/$file >/dev/null 2>&1 (($i+=1)) done #重设IFS IFS=" " exit 0 |
解释下,处理list.txt得到文件名的sed命令。从ftp上面ls到的list.txt是这个样子滴:
-rwxrwxrwx 1 1000 1000 3233888 Oct 16 13:58 Against All Odds.mp3 -rwxrwxrwx 1 1000 1000 7422 Mar 05 08:46 AlbumArtSmall.jpg -rwxrwxrwx 1 1000 1000 4114047 Jan 13 10:56 Amazing.mp3 -rwxrwxrwx 1 1000 1000 6921876 Feb 18 17:37 Christmas_in_my_heart.mp3 -rwxrwxrwx 1 1000 1000 5243164 Jan 13 10:56 Desperado.mp3 -rwxrwxrwx 1 1000 1000 9134054 Jan 13 10:56 Don’t Get Me Wrong.mp3
首先要把海报、封面之类的非mp3文件名删除于是有了 -e ‘/mp3/!d’的sed选项。还要把mp3的不必要的文件信息删掉,即把每一行的前56个字符删除,于是就有了 -e ‘s/^.\{56\}//g’选项。
更新:
上面的脚本有一个问题,没播放一首歌曲mplayer都需要退出一次,耗费资源不说,还不能回放上一首。为了更方面的使用mplayer自身的功能和快捷键,我更新了上面的脚本,为mplayer生成了一个播放列表,然后用命令mplayer -playlist list.txt来播放。这样利用mplayer的快捷键,我们就可以很好的控制这个播放器了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #!/bin/sh #当脚本退出或被中断(Ctrl+C)时,删除曲目文件 trap 'rm -f list.txt;exit 1' INT trap 'rm -f list.txt' EXIT #连接ftp并进入指定目录 lftp "$1" <<!TOC! cd pub/"$2"/ ls > list.txt quit !TOC! #删除非mp3文件名,得到mp3文件名 sed -i -e '/mp3/!d' -e 's/^.\{56\}//g' list.txt sed -i "s#^\(.*\)#ftp://$1/pub/$2/\1#g" list.txt mplayer -playlist list.txt >/dev/null 2>&1 |
你好!除了代码,此处没有多少原创之物,皆为本人搜集、整理、总结之记录与心得,欢迎转载分享!转载时请尽量注明出处,将不胜感激。祝你健康、快乐!
Be the first to comment on this entry.