寒假在家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
Tags: ,.
你好!除了代码,此处没有多少原创之物,皆为本人搜集、整理、总结之记录与心得,欢迎转载分享!转载时请尽量注明出处,将不胜感激。祝你健康、快乐!
Home

Be the first to comment on this entry.

Name(required)
Mail (required),(will not be published)

RFC: Request For Comments. Orz..

Website(recommended)