歌曲点播2 a3 F. |; ]* N/ k( F
微信点歌其实已有很多博客写过,不过重复超超轮子就当锻炼锻炼身体嘛。先上效果图
W7 e$ ~+ P. e* y O
' S9 T0 g* t$ k
; \0 l( Q+ K2 f; L8 w6 k0 Q T0 o+ R6 W) K& @& a3 B; ^" p4 H
回复2.2@谢谢你的爱,它先会去找这首歌,然后返回回来,如果找的不是你想点的歌曲,则需要中上歌手名称,如2.2@谢谢你的爱谢霆锋) P: s3 I# x' [4 @9 f+ f+ c1 \
7 p: [3 M: o, X( J, |
; c$ j9 b" z$ N; f
7 J" q( W( } [8 b( }6 E1 U/ Q( a4 h代码部分如下3 E- ?4 _: e* {: W: l0 v
' x' ~8 s5 ^8 Q
1、统一回复调用方法- //这里只对文本消息进行处理
- private function reply($data){
- if('text' == $data['MsgType']){
- $text=$data["Content"];
- if($text=="?"){
- return $this->get_main_datas();
- }
- $_menu_text=strpos($text,"@")===false?$textstring)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);
- }8 V; R1 O8 L/ v; K9 k g. _1 `
复制代码 0 \) D5 o# z: w, ], E% n* A9 D. N
# R m2 E9 b5 Q, }/ ^3 y: s( {
2、点歌实现- //歌曲点播
- 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 i% B3 {: }) M. G5 S9 `
复制代码 7 }4 ]* y/ w- D
& O1 K- w/ w9 `4 S5 r& {4 f& X
- V& C% M2 R! I( V( y4 F# ]. W* {; G& G7 i) d2 G5 x
*上面增加了发送歌词接口,自动发送给客户端,可惜我是订阅号,似乎没有那上权限,so,放弃吧.; A% L2 d |+ k8 n$ D7 x3 o
|