歌曲点播
/ E: Q# U2 b+ K% C( a. J微信点歌其实已有很多博客写过,不过重复超超轮子就当锻炼锻炼身体嘛。先上效果图5 |5 k1 n- n1 v w3 q
' a: D3 a" [5 C4 s
|' r4 S1 a* V' g/ B. C6 l' o% ~, o" O: y7 W
回复2.2@谢谢你的爱,它先会去找这首歌,然后返回回来,如果找的不是你想点的歌曲,则需要中上歌手名称,如2.2@谢谢你的爱谢霆锋& P Q+ @) T5 d% S
y: s; S |+ C/ l2 y1 C
) A3 F: H, x; r4 t4 O8 U0 [1 V; b: ]/ K6 j
代码部分如下
% h9 ~% J7 Z4 H2 [6 Q: F& ]5 A' r& z1 a9 R/ z% e" X
1、统一回复调用方法- //这里只对文本消息进行处理
- 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);
- }
, q( h7 [* u/ K2 g* C9 p
复制代码
- j9 ^8 L' F9 v* @1 z
' |/ R2 r) D. h$ X2 E, N2、点歌实现- //歌曲点播
- 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\>
1 L3 T* k+ A( N
复制代码
; `; i! N5 \2 n! x" }) e+ W
7 I0 m5 A w1 Q1 P8 Y, E1 Y9 |7 }9 Q* n! H2 r
& y+ K+ ^# Q, G6 A5 e B
*上面增加了发送歌词接口,自动发送给客户端,可惜我是订阅号,似乎没有那上权限,so,放弃吧.
6 ~# E+ [, m: d& S |