当前访客身份:游客 [ 登录 | 加入 OSCHINA ]

代码分享

当前位置:
代码分享 » Shell/批处理  » 正则表达式
分享到: 
收藏 +0
3
从这里看到的API:http://blog.csdn.net/wangjintao1988/article/details/8003573

决定用bash实现一下,大致的思路就是curl请求链接,然后解析xml,用正则筛选出需要的部分,最后调用mplayer播放音乐。

脚本很简单,没有太复杂的地方,解析xml花了点时间,用了libxml2带的xmllint这个工具解析的。

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

代码片段(1) [全屏查看所有代码]

1. [代码][Shell/批处理]代码     跳至 [1] [全屏预览]

#!/bin/bash
#脚本作用,调用mplayer播放百度音乐,需要预装mplayer

#定义各种变量
title=${1:-'大约在冬季'} #歌曲名
performer=${2:-'齐秦'}   #歌手名

getmp3url(){
    url='http://box.zhangmen.baidu.com/x?op=12&count=1&title='$title'$$'$performer'$$$$'
    xml=`curl -s ''$url''`
    count=`echo $xml | xmllint --xpath '/result/count/text()' - `
    if [ "$count" -eq 0 ]
    then
        exit 1
    fi
    encode=`echo $xml | xmllint --xpath '/result/url[1]/encode[1]/text()' - | sed -r 's/<\!\[CDATA\[(.+)\]\]>/\1/g'`
    decode=`echo $xml | xmllint --xpath '/result/url[1]/decode[1]/text()' - | sed -r 's/<\!\[CDATA\[(.+)\]\]>/\1/g'`
    echo `dirname $encode`/$decode
}
url=`getmp3url` && mplayer $url || echo "检索结果不存在,请选用别的歌曲名和歌手检索!" && exit 1


开源中国-程序员在线工具:Git代码托管 API文档大全(120+) JS在线编辑演示 二维码 更多»

开源从代码分享开始 分享代码