歌曲点播
A% z o, [3 [: |: j! `6 f微信点歌其实已有很多博客写过,不过重复超超轮子就当锻炼锻炼身体嘛。先上效果图
; B! ^ T4 d7 F3 E8 `: C: E! v
+ a# z4 W, m( t+ f; m+ T2 w8 c6 ^# p! M5 R2 u
( z* `" a# Z' `/ M; E, v回复2.2@谢谢你的爱,它先会去找这首歌,然后返回回来,如果找的不是你想点的歌曲,则需要中上歌手名称,如2.2@谢谢你的爱谢霆锋
$ }1 w7 x/ _3 K4 x' g8 Z5 e1 ^3 f7 p- V d9 v: M
. C, }! f+ o* p8 i- V6 l* t
' {: u3 K& G# J9 J9 n# G% X代码部分如下; C H) M' X6 H+ G( {
$ G* F8 z0 A! r+ {& g2 g. i- k) z
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);
- }
/ V3 ~- W8 { R7 ?6 v5 j
复制代码 8 P* Y8 `/ @: G
q0 Q: s1 l; I+ u4 L1 {
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\>$ Z# y6 y2 j1 Y0 L2 ^( {
复制代码 * K V4 f% H& p: j0 o
6 T; a1 P9 z$ `, j$ e1 n% ?& T% q, s, T# q# L m
6 d4 i% ^; H+ v. ]' R
*上面增加了发送歌词接口,自动发送给客户端,可惜我是订阅号,似乎没有那上权限,so,放弃吧.
+ k! t4 T. @* K3 i" B H2 E' Z2 s% T0 u |