歌曲点播3 E+ m# S s5 C% I% d% |
微信点歌其实已有很多博客写过,不过重复超超轮子就当锻炼锻炼身体嘛。先上效果图
" ~; m$ m. l E, J0 e4 c% ?' {( }2 {4 I$ L* A
6 R" R: u+ { g5 C3 f. g
8 W) x2 v, @3 M2 Y回复2.2@谢谢你的爱,它先会去找这首歌,然后返回回来,如果找的不是你想点的歌曲,则需要中上歌手名称,如2.2@谢谢你的爱谢霆锋( s T# I3 ~% u3 }/ _, i
! U1 Z$ P- m* v+ O0 h+ k0 ]
9 j! U: j8 K7 ^+ C2 M
) R+ W8 `. e" V) Y* T+ s0 z7 d代码部分如下 c, }0 V0 T1 H8 j, o
. q& E" _5 W9 l1、统一回复调用方法- //这里只对文本消息进行处理
- 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);
- }4 I4 g$ g" Z+ ^4 e( q( F
复制代码 6 w6 r6 _7 z( f; c* s
c0 ~- n! A# P& d! L1 s& ?. g2、点歌实现- //歌曲点播
- 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\>3 @" m" ~( i# G. N( U% L
复制代码 9 o+ I6 ?( @8 v6 ]1 t
3 p- d% g* T+ ]# |" ^7 t$ ]
- N$ `2 U G F8 G
6 M" Y! |$ d0 O& L*上面增加了发送歌词接口,自动发送给客户端,可惜我是订阅号,似乎没有那上权限,so,放弃吧.6 L8 Y1 g: O: j7 X2 S# h8 J8 A) l
|