歌曲点播
' _& a6 z, o* l2 z, q# c ~+ p微信点歌其实已有很多博客写过,不过重复超超轮子就当锻炼锻炼身体嘛。先上效果图) l$ C0 L2 c( T" r3 [
; | i5 I2 Q& |6 F5 {& B( b
) R+ Z3 K. n# I2 I- P! Z( t {& v( a# O
回复2.2@谢谢你的爱,它先会去找这首歌,然后返回回来,如果找的不是你想点的歌曲,则需要中上歌手名称,如2.2@谢谢你的爱谢霆锋
* z% x4 M* ~9 `2 o, e5 e( J {! x) @7 P
5 n% F3 ?1 _4 r9 e, ^0 }1 q8 g7 N- y( T+ B) V+ Y( c
代码部分如下4 ^% K8 Z5 I+ m3 B1 |/ O
& M1 i# @, o, J# e1、统一回复调用方法- //这里只对文本消息进行处理
- private function reply($data){
- if('text' == $data['MsgType']){
- $text=$data["Content"];
- if($text=="?"){
- return $this->get_main_datas();
- }
- $_menu_text=strpos($text,"@")===false?$text
string)doubleval($text);//当需要查询时,指令为1.1@xxx使用进行doubleval转换 - if(array_key_exists($_menu_text, $this->all_info)){//存在于菜单中,当输入,1 2 3 时
- return $this->get_replay_datas($_menu_text,$text,$data["FromUserName"]);
- }
- return $this->hello();
- } elseif('event' == $data['MsgType' && 'subscribe' == $data['Event']){
- //订阅写入数据表
- return $this->hello();
- //$reply = array('欢迎您关注桂林小魔方童装公众助手! 打开我们的网站:http://aidemofang.com 可以了解最新的款式和价格.', 'text');
- } else {
- exit;
- }
- }
-
- //取得回复的信息
- private function get_replay_datas($_menu_text,$text,$fromUser){
- $menu_text=strlen($_menu_text)==1?$_menu_text-1:$_menu_text;
- $method = $this->get_method($menu_text);
- $param=null;
- if(strpos($text,"@")!==false){
- $arr = preg_split("/@/", $text);
- $param=$arr[1];
- }
- return $this->$method($param,$fromUser);
- }
0 P7 k2 O7 w# {! m0 {
复制代码 ! ]0 V0 \2 l7 X0 q
8 L8 C2 H1 z# Q) S8 j2、点歌实现- //歌曲点播
- public function get_song($song_title,$fromUser){
- //$song_title="春天里";
-
- $m_param=array(
- "op" =>"7",
- "mode" =>"1",
- "count" =>"1",
- "title" =>$song_title
- );
- $song_datas=http("http://box.zhangmen.baidu.com/x",$m_param);
- $song_utf8=utf8($song_datas,"gbk");
-
- preg_match_all('/\<name\>(.*?)\<\/name\>/s', $song_utf8, $matchs);
- if(count($matchs)>1){
- $song_name=$matchs[1][0];
- }
- if(empty($song_name)){
- return array("未找到这首歌,检查一下网络或咱们换一首吧.","text");
- }
-
- $param=array(
- "op" =>"12",
- "count" =>"1",
- "title" =>trim("$song_name")
- );
- //查找作者的这首歌
- $datas=http("http://box.zhangmen.baidu.com/x",$param);
-
- $xml = new DOMDocument();
- $xml->loadXML($datas);
-
- $lst=$xml->getElementsByTagName('encode');
-
- //普通质量地址
- $item=$lst->item(0);
- $pre=$item->nodeValue;
- $suffix=$item->nextSibling->nodeValue;
- $MusicURL=str_replace(strrchr($pre, "/"),"",$pre)."/".str_replace(strrchr($suffix, "&"),"",$suffix);
-
-
- //高质量地址
- $item=$lst->item(0);
- $pre=$item->nodeValue;
- $suffix=$item->nextSibling->nodeValue;
- $HQMusicUrl=str_replace(strrchr($pre, "/"),"",$pre)."/".str_replace(strrchr($suffix, "&"),"",$suffix);
-
-
- $datas=array();
- $datas[]=str_replace('$', "", $song_name);//音乐标题
- $datas[]="来自互联网";//音乐描述
- $datas[]="$MusicURL";//音乐链接
- $datas[]="$HQMusicUrl";//高质量音乐链接,WIFI环境优先使用该链接播放音乐
-
- $this->sendLyric(str_replace('$$', "-", $song_name),$fromUser);
- return array($datas,"music");
-
- }
-
- private function sendLyric($song_name,$fromUser){
- $param=array(
- "key" => "free",
- "appid" => "0",
- "msg" => "歌词".$song_name
- );
- $datas=http("http://api.ajaxsns.com/api.php",$param);
- $json=json_decode($datas);
- if($json->result==0){
- $content=str_replace("{br}","\n",$json->content);
- $content.="\n\n小助手:回复 @ 进入主界面";
- import('@.ORG.ThinkWechat');
- $weixin = new ThinkWechat ();
- $result=$weixin->sendMsg($content, $fromUser, "text" );//发送歌词
-
- Log::write(" init data ->".$fromUser." ,content =$content");
- Log::write("result -> ".print_r($result,true));
- }
-
- }</name\>
/ w( g" Q! Y+ I: w+ N: B4 H6 Z) A
复制代码 + D: q$ g* T3 g6 g& e2 }
z, W; e P2 x
- F! B. ?/ B2 k5 M
3 j; E2 [. d' _# j0 I( w0 J7 X*上面增加了发送歌词接口,自动发送给客户端,可惜我是订阅号,似乎没有那上权限,so,放弃吧.4 a4 N) O. Y$ k: [+ z
|