首先声明,该段代码不是我写的。是在开源中国上看到某人分享的一段代码,原理是利用百度api获取一段xml文件,再通过xmllint对xml文件进行处理,进而获取mp3的播放地址,再利用mplayer去调用。

脚本执行方法为:./playbaidumusic.sh,空参则播放“大约在冬季-齐秦”
./playbaidumusic.sh 东风破 周杰伦 ,第一个参数为歌曲名,第二个参数为歌手名。该脚本的内容为:

 1#!/bin/bash
 2#脚本作用,调用mplayer播放百度音乐,需要预装mplayer
 3#定义各种变量
 4title=${1:-'大约在冬季'} #歌曲名
 5performer=${2:-'齐秦'}   #歌手名
 6getmp3url(){
 7    url='http://box.zhangmen.baidu.com/x?op=12&count=1&title='$title'$$'$performer'$$$$'
 8    xml=`curl -s ''$url''`
 9    count=`echo $xml | xmllint --xpath '/result/count/text()' - `
10    if [ "$count" -eq 0 ]
11    then
12        exit 1
13    fi
14    encode=`echo $xml | xmllint --xpath '/result/url[1]/encode[1]/text()' - | sed -r 's//1/g'`
15    decode=`echo $xml | xmllint --xpath '/result/url[1]/decode[1]/text()' - | sed -r 's//1/g'`
16    echo `dirname $encode`/$decode
17}
18url=`getmp3url` && mplayer $url || echo "检索结果不存在,请选用别的歌曲名和歌手检索!" && exit 1