各类无次数限制的免费API接口整理，主要是聚合数据上和API Store上的一些，还有一些其他的。聚合数据提供30大类,160种以上基础数据API服务,国内最大的基础数据API服务，下面就罗列一些免费的各类API接口。聚合的免费API接口数据：手机号码归属地API接口：https://www.juhe.cn/docs/api/id/11历史上的今天API接口：https://www.juhe.cn/docs/api/id/63股票数据API接口：https://www.juhe.cn/docs/api/id/21全国WIFI接口：https://www.juhe.cn/docs/api/id/18星座运势接口：https://www.juhe.cn/docs/api/id/58黄金数据接口：https://www.juhe.cn/docs/api/id/29语音识别接口：https://www.juhe.cn/docs/api/id/134周公解梦接口：https://www.juhe.cn/docs/api/id/64天气预报API接口：https://www.juhe.cn/docs/api/id/73身份证查询API接口：https://www.juhe.cn/docs/api/id/38笑话大全API接口：https://www.juhe.cn/docs/api/id/95邮编查询接口：https://www.juhe.cn/docs/api/id/66老黄历接口：https://www.juhe.cn/docs/api/id/65网站安全检测接口：https://www.juhe.cn/docs/api/id/19手机固话来电显示接口：https://www.juhe.cn/docs/api/id/72基金财务数据接口：https://www.juhe.cn/docs/api/id/28成语词典接口：https://www.juhe.cn/docs/api/id/157新闻头条接口：https://www.juhe.cn/docs/api/id/235IP地址接口：https://www.juhe.cn/docs/api/id/1问答机器人接口：https://www.juhe.cn/docs/api/id/112汇率API接口：https://www.juhe.cn/docs/api/id/80电影票房接口：https://www.juhe.cn/docs/api/id/44万年历API接口：https://www.juhe.cn/docs/api/id/177NBA赛事接口：https://www.juhe.cn/docs/api/id/92百度 api集市免费接口IP地址查询 http://apistore.baidu.com/apiworks/servicedetail/114.html频道新闻API_易源 http://apistore.baidu.com/apiworks/servicedetail/688.html微信热门精选 http://apistore.baidu.com/apiworks/servicedetail/632.html天气查询 http://apistore.baidu.com/apiworks/servicedetail/112.html中国和世界天气预报 http://apistore.baidu.com/apiworks/servicedetail/478.html股票查询 http://apistore.baidu.com/apiworks/servicedetail/115.html身份证查询http://apistore.baidu.com/apiworks/servicedetail/113.html美女图片 http://apistore.baidu.com/apiworks/servicedetail/720.html音乐搜索 http://apistore.baidu.com/apiworks/servicedetail/1020.html图灵机器人 http://apistore.baidu.com/apiworks/servicedetail/736.html汇率转换 http://apistore.baidu.com/apiworks/servicedetail/119.html节假日 http://apistore.baidu.com/apiworks/servicedetail/1116.htmlpullword在线分词服务 http://apistore.baidu.com/apiworks/servicedetail/143.html去哪儿网火车票 http://apistore.baidu.com/apiworks/servicedetail/697.html笑话大全 http://apistore.baidu.com/apiworks/servicedetail/864.html银行卡查询服务http://apistore.baidu.com/apiworks/servicedetail/735.html语音合成 http://apistore.baidu.com/apiworks/servicedetail/867.html宅言API-动漫台词接口 http://apistore.baidu.com/apiworks/servicedetail/446.html去哪儿景点门票查询 http://apistore.baidu.com/apiworks/servicedetail/140.html手机号码归属地 http://apistore.baidu.com/apiworks/servicedetail/794.html体育新闻 http://apistore.baidu.com/apiworks/servicedetail/711.html手机归属地查询http://apistore.baidu.com/apiworks/servicedetail/709.html科技新闻 http://apistore.baidu.com/apiworks/servicedetail/1061.html空气质量指数 http://apistore.baidu.com/apiworks/servicedetail/116.html天狗健康菜谱 http://apistore.baidu.com/apiworks/servicedetail/987.html热门游记列表 http://apistore.baidu.com/apiworks/servicedetail/520.html天狗药品查询 http://apistore.baidu.com/apiworks/servicedetail/916.html汉字转拼音 http://apistore.baidu.com/apiworks/servicedetail/1124.html国际新闻 http://apistore.baidu.com/apiworks/servicedetail/823.html彩票 http://apistore.baidu.com/apiworks/servicedetail/164.html微信精选 http://apistore.baidu.com/apiworks/servicedetail/863.html天狗健康资讯 http://apistore.baidu.com/apiworks/servicedetail/888.html兴趣点检索 http://apistore.baidu.com/apiworks/servicedetail/182.html用药参考 http://apistore.baidu.com/apiworks/servicedetail/754.html天狗健康知识 http://apistore.baidu.com/apiworks/servicedetail/899.html奇闻趣事 http://apistore.baidu.com/apiworks/servicedetail/633.html花边新闻 http://apistore.baidu.com/apiworks/servicedetail/768.html天狗医院大全 http://apistore.baidu.com/apiworks/servicedetail/988.html生活健康 http://apistore.baidu.com/apiworks/servicedetail/989.html一些其他的API接口：豆瓣开放 https://developers.douban.com/wiki/?title=guide淘宝开放平台 http://open.taobao.com/?spm=a219a.7395905.1.1.YdFDV6 图灵语音 http://www.tuling123.com/help/h_cent_andriodsdk.jhtml?nav=doc 讯飞语音http://www.xfyun.cn/robots/solution 马化腾的微信开放平台（对应的还有腾讯开放平台）https://open.weixin.qq.com/ 融云IMhttps://developer.rongcloud.cn/signin?returnUrl=%2Fapp%2Fappkey%2FPv4vYQwaxSZdfpLX5AI%3D 百度开发者中心http://developer.baidu.com/ 人脸识别http://www.faceplusplus.com.cn/ 高德地图http://lbs.amap.com/ 蜻蜓FMhttp://open.qingting.fm小白接口http://www.okayapi.com/
设置全民歌单，通过调用网易云API，直接播放歌单歌曲。编辑文件header.php //首页85行 var musicSrc =" <?php function sig($id, $random, $time){ return md5('$sdk=XXX&$id='.$id.'&$random='.$random.'&$time='.$time); } function curl($url, $id, $method = 'playlist') { $data['id'] = $id; $data['method'] = $method; $data['random'] = rand(100000,999999); $data['time'] = time(); $data['sig'] = sig($data['id'],$data['random'],$data['time']); $curl=curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); $data=curl_exec($curl); curl_close($curl); return json_decode($data); } function playlist($id){ $url = "https://localhost/music.php"; $data = curl($url, $id); $lists = array(); foreach($data as $k => $v){ $lists[] = $v->id; } return implode(',', $lists); } $id = $this->options->socialmusic; print_r(playlist($id)); ?>"; var musicIco = document.getElementById("musicico"); var musicArr = musicSrc.split(",") var musicBtn = document.getElementById("musicBtn"); //请求接口获取数据 function getMusic(id, method) { $.ajax({ type: "POST", url: "https://localhost/music.php", contentType: "application/json; charset=utf-8", data: JSON.stringify(getJsonData(id, method)), dataType: "json", success: function (message) { switch (method){ case 'playlist': musicData = message; break; case 'url': musicUrlData = message; musicObj.src = message.url; musicObj.loop = false; musicObj.style.display = "none"; musicObj.play(); break; } } }) } //计算签名 function getJsonData(id, method) { var num = randomNum(10000, 99999) var time = Math.round(new Date().getTime() / 1000) var sigText = '$sdk=XXX&$id=' + id + '&$random=' + num + '&$time=' + time var sig = $.md5(sigText) var json = { "id" : id, "random" : num, "time" : time, "sig" : sig, "method" : method } return json } //随机数字 function randomNum(lowerValue, upperValue) { var choices = upperValue - lowerValue + 1; var num = Math.floor(Math.random() * choices + lowerValue); return num; } function IsPC() { var userAgentInfo = navigator.userAgent; var Agents = ["Android", "iPhone","SymbianOS", "Windows Phone","iPad", "iPod"]; var flag = true; for (var v = 0; v < Agents.length; v++) { if (userAgentInfo.indexOf(Agents[v]) > 0) { flag = false; break; } } return flag; } var i = 0; function playMusic(force){ // 双击切换下一首 if(i != 0){ musicInd += 1; if(musicInd > musicArr.length - 1) { musicInd = 0; } getMusic(musicArr[musicInd], 'url'); return; } i++; setTimeout(function(){ i = 0 },200) if(musicObj.paused){ musicObj.play(); }else{ musicObj.pause(); } } if(!window["musicObj"]){ var musicObj = document.createElement("audio"); var musicInd = Math.round(Math.random()*(musicArr.length-1)); musicObj.addEventListener('ended', function () { musicIco.style.animation = ""; musicInd += 1; if(musicInd > musicArr.length - 1) { musicInd = 0; } getMusic(musicArr[musicInd], 'url'); }, false); musicObj.addEventListener('play', function() { musicIco.style.animation = "musicplay 5s linear infinite"; }, false); musicObj.addEventListener('pause', function() { musicIco.style.animation = ""; }, false); musicObj.addEventListener('error', function() { musicInd += 1; if(musicInd > musicArr.length - 1) { musicInd = 0; } getMusic(musicArr[musicInd], 'url'); }, false) getMusic(musicArr[musicInd], 'url'); } else { // 修正样式 if(!musicObj.paused){ musicIco.style.animation = "musicplay 5s linear infinite" }else{ musicIco.style.animation = "" } } if(IsPC()){ musicBtn.addEventListener("click",function(){ playMusic(false) }) }else{ musicBtn.addEventListener("touchstart",function(){ playMusic(false) }) }Music.php<?php //感谢https://i-meto.com提供 class Meting { protected $_SITE; protected $_TEMP; protected $_RETRY = 3; protected $_FORMAT = false; public function __construct($v = 'netease') { $this->site($v); } public function site($v) { $suppose = array('netease', 'tencent', 'xiami', 'kugou', 'baidu'); $this->_SITE = in_array($v,$suppose) ? $v : 'netease'; return $this; } public function cookie($v = '') { if (!empty($v)) { $this->_TEMP['cookie'] = $v; } return $this; } public function format($v = true) { $this->_FORMAT = $v; return $this; } private function curl($API) { if (isset($API['encode'])) { $API=call_user_func_array(array($this,$API['encode']), array($API)); } $BASE = $this->curlset(); $curl = curl_init(); if ($API['method'] == 'POST') { if (is_array($API['body'])) { $API['body'] = http_build_query($API['body']); } curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $API['body']); } elseif ($API['method'] == 'GET') { if (isset($API['body'])) { $API['url'] = $API['url'].'?'.http_build_query($API['body']); } } curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_TIMEOUT, 20); curl_setopt($curl, CURLOPT_ENCODING, 'gzip'); curl_setopt($curl, CURLOPT_IPRESOLVE, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($curl, CURLOPT_URL, $API['url']); curl_setopt($curl, CURLOPT_COOKIE, isset($this->_TEMP['cookie'])?$this->_TEMP['cookie']:$BASE['cookie']); curl_setopt($curl, CURLOPT_HTTPHEADER, [ 'Accept: */*', 'Accept-Encoding: gzip, deflate', 'Accept-Language: zh-CN,zh;q=0.8,gl;q=0.6,zh-TW;q=0.4', 'Connection: keep-alive', 'Content-Type: application/x-www-form-urlencoded', 'Referer: ' . $BASE['referer'], 'User-Agent: ' . $BASE['useragent'] ]); for ($i=0;$i<=$this->_RETRY;$i++) { $data = curl_exec($curl); $info = curl_getinfo($curl); $error = curl_errno($curl); $status = $error ? curl_error($curl) : ''; if (!$error) { break; } } curl_close($curl); if ($error) { return json_encode( array( 'error' => $error, 'info' => $info, 'status' => $status, ) ); } if ($this->_FORMAT && isset($API['decode'])) { $data = call_user_func_array(array($this,$API['decode']), array($data)); } if ($this->_FORMAT && isset($API['format'])) { $data = json_decode($data, 1); $data = $this->clean($data, $API['format']); $data = json_encode($data); } return $data; } private function pickup($array, $rule) { $t = explode('#', $rule); foreach ($t as $vo) { if (!isset($array[$vo])){ return array(); } $array = $array[$vo]; } return $array; } private function clean($raw, $rule) { if (!empty($rule)) { $raw = $this->pickup($raw, $rule); } if (!isset($raw[0]) && sizeof($raw)) { $raw = array($raw); } $result = array_map(array($this,'format_'.$this->_SITE), $raw); return $result; } public function search($keyword, $option = null) { switch ($this->_SITE) { case 'netease': $API = array( 'method' => 'POST', 'url' => 'http://music.163.com/api/linux/forward', 'body' => array( 'method' => 'POST', 'params' => array( 's' => $keyword, 'type' => isset($option['type']) ? $option['type'] : 1, 'limit' => isset($option['limit']) ? $option['limit'] : 30, 'total' => 'true', 'offset' => isset($option['page']) && isset($option['limit']) ? ($option['page'] - 1) * $option['limit'] : 0, ), 'url' => 'http://music.163.com/api/cloudsearch/pc', ), 'encode' => 'netease_AESECB', 'format' => 'result#songs', ); break; case 'tencent': $API = array( 'method' => 'GET', 'url' => 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp', 'body' => array( 'format' => 'json', 'p' => isset($option['page']) ? $option['page'] : 1, 'n' => isset($option['limit']) ? $option['limit'] : 30, 'w' => $keyword, 'aggr' => 1, 'lossless' => 1, 'cr' => 1, 'new_json' => 1, ), 'format' => 'data#song#list', ); break; case 'xiami': $API = array( 'method' => 'GET', 'url' => 'http://api.xiami.com/web', 'body' => array( 'v' => '2.0', 'app_key' => '1', 'key' => $keyword, 'page' => isset($option['page']) ? $option['page'] : 1, 'limit' => isset($option['limit']) ? $option['limit'] : 30, 'r' => 'search/songs', ), 'format' => 'data#songs', ); break; case 'kugou': $API = array( 'method' => 'GET', 'url' => 'http://ioscdn.kugou.com/api/v3/search/song', 'body' => array( 'iscorrect' => 1, 'pagesize' => isset($option['limit']) ? $option['limit'] : 30, 'plat' => 2, 'tag' => 1, 'sver' => 5, 'showtype' => 10, 'page' => isset($option['page']) ? $option['page'] : 1, 'keyword' => $keyword, 'version' => 8550 ), 'format' => 'data#info', ); break; case 'baidu': $API = array( 'method' => 'GET', 'url' => 'https://musicapi.qianqian.com/v1/restserver/ting', 'body' => array( 'method' => 'baidu.ting.search.merge', 'isNew' => 1, 'query' => $keyword, 'page_size' => isset($option['limit']) ? $option['limit'] : 30, 'page_no' => isset($option['page']) ? $option['page'] : 1, 'type' => isset($option['type']) ? $option['type'] : 0, 'format' => 'json', 'from' => 'ios', 'channel' => '(null)', 'cuid' => 'appstore', 'from' => 'ios', 'version' => '5.9.12', ), 'format' => 'result#song_info#song_list', ); break; } return $this->curl($API); } public function song($id) { switch ($this->_SITE) { case 'netease': $API = array( 'method' => 'POST', 'url' => 'http://music.163.com/api/linux/forward', 'body' => array( 'method' => 'POST', 'params' => array( 'c' => '[{"id":'.$id.',"v":0}]', ), 'url' => 'http://music.163.com/api/v3/song/detail/', ), 'encode' => 'netease_AESECB', 'format' => 'songs', ); break; case 'tencent': $API = array( 'method' => 'GET', 'url' => 'https://c.y.qq.com/v8/fcg-bin/fcg_play_single_song.fcg', 'body' => array( 'songmid' => $id, 'platform' => 'yqq', 'format' => 'json', ), 'decode' => 'tencent_singlesong', 'format' => 'data', ); break; case 'xiami': $API = array( 'method' => 'GET', 'url' => 'http://api.xiami.com/web', 'body' => array( 'v' => '2.0', 'app_key' => '1', 'id' => $id, 'r' => 'song/detail', ), 'format' => 'data#song', ); break; case 'kugou': $API = array( 'method' => 'POST', 'url' => 'http://m.kugou.com/app/i/getSongInfo.php', 'body' => array( "cmd" => "playInfo", "hash" => $id, "from" => "mkugou", ), 'format' => '', ); break; case 'baidu': $API = array( 'method' => 'GET', 'url' => 'https://musicapi.qianqian.com/v1/restserver/ting', 'body' => array( 'method' => 'baidu.ting.song.play', 'songid' => $id, 'format' => 'json', 'from' => 'ios', 'channel' => '(null)', 'cuid' => 'appstore', 'from' => 'ios', 'version' => '5.9.12', ), 'format' => 'songinfo', ); break; } return $this->curl($API); } public function album($id) { switch ($this->_SITE) { case 'netease': $API = array( 'method' => 'POST', 'url' => 'http://music.163.com/api/linux/forward', 'body' => array( 'method' => 'GET', 'params' => array( "total" => "true", "offset" => "0", "id" => $id, "limit" => "1000", "ext" => "true", "private_cloud" => "true" ), 'url' => 'http://music.163.com/api/v1/album/'.$id, ), 'encode' => 'netease_AESECB', 'format' => 'songs', ); break; case 'tencent': $API = array( 'method' => 'GET', 'url' => 'https://c.y.qq.com/v8/fcg-bin/fcg_v8_album_detail_cp.fcg', 'body' => array( 'albummid' => $id, 'platform' => 'mac', 'format' => 'json', 'newsong' => 1, ), 'format' => 'data#getSongInfo', ); break; case 'xiami': $API = array( 'method' => 'GET', 'url' => 'http://api.xiami.com/web', 'body' => array( 'v' => '2.0', 'app_key' => '1', 'id' => $id, 'r' => 'album/detail', ), 'format' => 'data#songs', ); break; case 'kugou': $API = array( 'method' => 'GET', 'url' => 'http://mobilecdn.kugou.com/api/v3/album/song', 'body' => array( 'albumid' => $id, 'plat' => 2, 'page' => 1, 'pagesize' => -1, 'version' => 8550, ), 'format' => 'data#info', ); break; case 'baidu': $API = array( 'method' => 'GET', 'url' => 'https://musicapi.qianqian.com/v1/restserver/ting', 'body' => array( 'method' => 'baidu.ting.album.getAlbumInfo', 'album_id' => $id, 'format' => 'json', 'from' => 'ios', 'channel' => '(null)', 'cuid' => 'appstore', 'from' => 'ios', 'version' => '5.9.12', ), 'format' => 'songlist', ); break; } return $this->curl($API); } public function artist($id, $limit=50) { switch ($this->_SITE) { case 'netease': $API = array( 'method' => 'POST', 'url' => 'http://music.163.com/api/linux/forward', 'body' => array( 'method' => 'GET', 'params' => array( "ext" => "true", "private_cloud" => "true", "ext" => "true", "top" => $limit, "id" => $id ), 'url' => 'http://music.163.com/api/v1/artist/'.$id, ), 'encode' => 'netease_AESECB', 'format' => 'hotSongs', ); break; case 'tencent': $API = array( 'method' => 'GET', 'url' => 'https://c.y.qq.com/v8/fcg-bin/fcg_v8_singer_track_cp.fcg', 'body' => array( 'singermid' => $id, 'begin' => 0, 'num' => $limit, 'order' => 'listen', 'platform' => 'mac', 'newsong' => 1, ), 'format' => 'data#list', ); break; case 'xiami': $API = array( 'method' => 'GET', 'url' => 'http://api.xiami.com/web', 'body' => array( 'v' => '2.0', 'app_key' => '1', 'id' => $id, 'limit' => $limit, 'page' => 1, 'r' => 'artist/hot-songs', ), 'format' => 'data', ); break; case 'kugou': $API = array( 'method' => 'GET', 'url' => 'http://mobilecdn.kugou.com/api/v3/singer/song', 'body' => array( 'singerid' => $id, 'page' => 1, 'plat' => 0, 'pagesize' => $limit, 'version' => 8400, ), 'format' => 'data#info', ); break; case 'baidu': $API = array( 'method' => 'GET', 'url' => 'https://musicapi.qianqian.com/v1/restserver/ting', 'body' => array( 'method' => 'baidu.ting.artist.getSongList', 'tinguid' => $id, 'limits' => $limit, 'format' => 'json', 'from' => 'ios', 'channel' => '(null)', 'cuid' => 'appstore', 'from' => 'ios', 'version' => '5.9.12', ), 'format' => 'songlist', ); break; } return $this->curl($API); } public function playlist($id) { switch ($this->_SITE) { case 'netease': $API = array( 'method' => 'POST', 'url' => 'http://music.163.com/api/linux/forward', 'body' => array( 'method' => 'POST', 'params' => array( "s" => "0", "id" => $id, "n" => "1000", "t" => "0" ), 'url' => 'http://music.163.com/api/v3/playlist/detail', ), 'encode' => 'netease_AESECB', 'format' => 'playlist#tracks', ); break; case 'tencent': $API = array( 'method' => 'GET', 'url' => 'https://c.y.qq.com/v8/fcg-bin/fcg_v8_playlist_cp.fcg', 'body' => array( 'id' => $id, 'format' => 'json', 'newsong' => 1, 'platform' => 'jqspaframe.json', ), 'format' => 'data#cdlist#0#songlist', ); break; case 'xiami': $API = array( 'method' => 'GET', 'url' => 'http://api.xiami.com/web', 'body' => array( 'v' => '2.0', 'app_key' => '1', 'id' => $id, 'r' => 'collect/detail', ), 'format' => 'data#songs', ); break; case 'kugou': $API = array( 'method' => 'GET', 'url' => 'http://mobilecdn.kugou.com/api/v3/special/song', 'body' => array( 'specialid' => $id, 'page' => 1, 'plat' => 2, 'pagesize' => -1, 'version' => 8400, ), 'format' => 'data#info', ); break; case 'baidu': $API = array( 'method' => 'GET', 'url' => 'https://musicapi.qianqian.com/v1/restserver/ting', 'body' => array( 'method' => 'baidu.ting.diy.gedanInfo', 'listid' => $id, 'format' => 'json', 'from' => 'ios', 'channel' => '(null)', 'cuid' => 'appstore', 'from' => 'ios', 'version' => '5.9.12', ), 'format' => 'content', ); break; } return $this->curl($API); } public function url($id, $br=320) { switch ($this->_SITE) { case 'netease': $API = array( 'method' => 'POST', 'url' => 'http://music.163.com/api/linux/forward', 'body' => array( 'method' => 'POST', 'params' => array( 'ids' => array($id), 'br' => $br*1000, ), 'url' => 'http://music.163.com/api/song/enhance/player/url', ), 'encode' => 'netease_AESECB', 'decode' => 'netease_url', ); break; case 'tencent': $API = array( 'method' => 'GET', 'url' => 'https://c.y.qq.com/v8/fcg-bin/fcg_play_single_song.fcg', 'body' => array( 'songmid' => $id, 'platform' => 'yqq', 'format' => 'json', ), 'decode' => 'tencent_url', ); break; case 'xiami': $API = array( 'method' => 'GET', 'url' => 'http://www.xiami.com/song/gethqsong/sid/'.$id, 'body' => array( 'v' => '2.0', 'app_key' => '1', 'id' => $id, 'r' => 'song/detail', ), 'decode' => 'xiami_url', ); break; case 'kugou': $API = array( 'method' => 'POST', 'url' => 'http://media.store.kugou.com/v1/get_res_privilege', 'body' => json_encode(array( "relate" => 1, "userid" => 0, "vip" => 0, "appid" => 1005, "token" => "", "behavior" => "download", "clientver" => "8493", "resource" => array(array( "id" => 0, "type" => "audio", "hash" => $id, ))) ), 'decode' => 'kugou_url', ); break; case 'baidu': $API = array( 'method' => 'GET', 'url' => 'http://music.baidu.com/data/music/fmlink', 'body' => array( 'songIds' => $id, 'rate' => $br, 'type' => 'mp3', ), 'decode' => 'baidu_url', ); break; } $this->_TEMP['br'] = $br; return $this->curl($API); } public function lyric($id) { switch ($this->_SITE) { case 'netease': $API = array( 'method' => 'POST', 'url' => 'http://music.163.com/api/linux/forward', 'body' => array( 'method' => 'POST', 'params' => array( 'id' => $id, 'os' => 'linux', 'lv' => -1, 'kv' => -1, 'tv' => -1, ), 'url' => 'http://music.163.com/api/song/lyric', ), 'encode' => 'netease_AESECB', 'decode' => 'netease_lyric', ); break; case 'tencent': $API = array( 'method' => 'GET', 'url' => 'https://c.y.qq.com/lyric/fcgi-bin/fcg_query_lyric_new.fcg', 'body' => array( 'songmid' => $id, 'g_tk' => '5381', ), 'decode' => 'tencent_lyric', ); break; case 'xiami': $API = array( 'method' => 'GET', 'url' => 'http://api.xiami.com/web', 'body' => array( 'v' => '2.0', 'app_key' => '1', 'id' => $id, 'r' => 'song/detail', ), 'decode' => 'xiami_lyric', ); break; case 'kugou': $API = array( 'method' => 'GET', 'url' => 'http://m.kugou.com/app/i/krc.php', 'body' => array( 'keyword' => '%20-%20', 'timelength' => 1000000, 'cmd' => 100, 'hash' => $id, ), 'decode' => 'kugou_lyric' ); break; case 'baidu': $API = array( 'method' => 'GET', 'url' => 'https://musicapi.qianqian.com/v1/restserver/ting', 'body' => array( 'method' => 'baidu.ting.song.lry', 'songid' => $id, 'format' => 'json', 'from' => 'ios', 'channel' => '(null)', 'cuid' => 'appstore', 'from' => 'ios', 'version' => '5.9.12', ), 'decode' => 'baidu_lyric' ); break; } return $this->curl($API); } public function pic($id, $size=300) { switch ($this->_SITE) { case 'netease': $url='https://p3.music.126.net/'.$this->netease_pickey($id).'/'.$id.'.jpg?param='.$size.'y'.$size; break; case 'tencent': $url='https://y.gtimg.cn/music/photo_new/T002R'.$size.'x'.$size.'M000'.$id.'.jpg?max_age=2592000'; break; case 'xiami': $format=$this->_FORMAT; $data=$this->format(false)->song($id); $this->format($format); $data=json_decode($data, 1); $url=$data['data']['song']['logo']; $url=str_replace(array('_1.','http:','img.'), array('.','https:','pic.'), $url).'@'.$size.'h_'.$size.'w_100q_1c.jpg'; break; case 'kugou': $format=$this->_FORMAT; $data=$this->format(false)->song($id); $this->format($format); $data=json_decode($data, 1); $url=$data['imgUrl']; $url=str_replace('{size}', '400', $url); break; case 'baidu': $format=$this->_FORMAT; $data=$this->format(false)->song($id); $this->format($format); $data=json_decode($data, 1); $url=isset($data['songinfo']['pic_big'])?$data['songinfo']['pic_big']:$data['songinfo']['pic_small']; break; } return json_encode(array('url'=>$url)); } private function curlset() { switch ($this->_SITE) { case 'netease': return array( 'referer' => 'https://music.163.com/', 'cookie' => 'os=linux; deviceId=' . $this->getRandomHex(52) . '; osver=Ubuntu%2016.04.3%20LTS; appver=1.1.0.1232; channel=netease; MUSIC_A=' . $this->getRandomHex(208) . '; __csrf=' . $this->getRandomHex(32), 'useragent' => 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36', ); case 'tencent': return array( 'referer' => 'https://y.qq.com/portal/player.html', 'cookie' => 'pgv_pvi=22038528; pgv_si=s3156287488; pgv_pvid=5535248600; yplayer_open=1; ts_last=y.qq.com/portal/player.html; ts_uid=4847550686; yq_index=0; qqmusic_fromtag=66; player_exist=1', 'useragent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36', ); case 'xiami': return array( 'referer' => 'http://h.xiami.com/', 'cookie' => '_xiamitoken=' . $this->getRandomHex(32) . '; _unsign_token=' . $this->getRandomHex(32), 'useragent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36', ); case 'kugou': return array( 'referer' => 'http://www.kugou.com/webkugouplayer/flash/webKugou.swf', 'cookie' => 'kg_mid=' . $this->getRandomHex(32), 'useragent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36', ); case 'baidu': return array( 'referer' => 'http://ting.baidu.com/', 'cookie' => 'BAIDUID=' . $this->getRandomHex(32), 'useragent' => 'ios_5.9.12', ); } } private function getRandomHex($length) { if (function_exists('openssl_random_pseudo_bytes')) { return bin2hex(openssl_random_pseudo_bytes($length)); } else { return bin2hex(mcrypt_create_iv($length, MCRYPT_DEV_URANDOM)); } } /** * 乱七八糟的函数，加密解密... * 正在努力重构这些代码 TAT */ private function netease_AESECB($API) { $KEY='7246674226682325323F5E6544673A51'; $body=json_encode($API['body']); if (function_exists('openssl_encrypt')) { $body=openssl_encrypt($body, 'aes-128-ecb', pack('H*', $KEY)); } else { $PAD=16-(strlen($body)%16); $body=base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, hex2bin($KEY), $body.str_repeat(chr($PAD), $PAD), MCRYPT_MODE_ECB)); } $body=strtoupper(bin2hex(base64_decode($body))); $API['body']=array( 'eparams'=>$body, ); return $API; } private function tencent_singlesong($result) { $result=json_decode($result, 1); $data=$result['data'][0]; $t=array( 'songmid' => $data['mid'], 'songname' => $data['name'], 'albummid' => $data['album']['mid'], ); foreach ($t as $key=>$vo) { $result['data'][0][$key]=$vo; } return json_encode($result); } private function netease_pickey($id) { $magic=str_split('3go8&$8*3*3h0k(2)2'); $song_id=str_split($id); for ($i=0;$i<count($song_id);$i++) { $song_id[$i]=chr(ord($song_id[$i])^ord($magic[$i%count($magic)])); } $result=base64_encode(md5(implode('', $song_id), 1)); $result=str_replace(array('/','+'), array('_','-'), $result); return $result; } /** * URL - 歌曲地址转换函数 * 用于返回不高于指定 bitRate 的歌曲地址（默认规范化） */ private function netease_url($result) { $data=json_decode($result, 1); if (isset($data['data'][0]['uf']['url'])) { $data['data'][0]['url']=$data['data'][0]['uf']['url']; } if (isset($data['data'][0]['url'])) { $url=array( 'url' => $data['data'][0]['url'], 'br' => $data['data'][0]['br']/1000, ); } else { $url=array( 'url' => '', 'br' => -1, ); } return json_encode($url); } private function tencent_url($result) { $data=json_decode($result, 1); $GUID=mt_rand()%10000000000; $API=array( 'method' => 'GET', 'url' => 'https://c.y.qq.com/base/fcgi-bin/fcg_musicexpress.fcg', 'body' => array( 'json' => 3, 'guid' => $GUID, 'format' => 'json', ), ); $KEY=json_decode($this->curl($API), 1); $KEY=$KEY['key']; $type=array( 'size_320mp3' => array(320,'M800','mp3'), 'size_192aac' => array(192,'C600','m4a'), 'size_128mp3' => array(128,'M500','mp3'), 'size_96aac' => array(96 ,'C400','m4a'), 'size_48aac' => array(48 ,'C200','m4a'), ); foreach ($type as $key=>$vo) { if ($data['data'][0]['file'][$key]&&$vo[0]<=$this->_TEMP['br']) { $url=array( 'url' => 'https://dl.stream.qqmusic.qq.com/'.$vo[1].$data['data'][0]['file']['media_mid'].'.'.$vo[2].'?vkey='.$KEY.'&guid='.$GUID.'&uid=0&fromtag=30', 'br' => $vo[0], ); break; } } if (!isset($url['url'])) { $url=array( 'url' => '', 'br' => -1, ); } return json_encode($url); } private function xiami_url($result) { $data=json_decode($result, 1); if (!empty($data['location'])) { $location = $data['location']; $num = (int)$location[0]; $str = substr($location, 1); $len = floor(strlen($str)/$num); $sub = strlen($str) % $num; $qrc = array(); $tmp = 0; $urlt = ''; for (;$tmp<$sub;$tmp++) { $qrc[$tmp] = substr($str, $tmp*($len+1), $len+1); } for (;$tmp<$num;$tmp++) { $qrc[$tmp] = substr($str, $len*$tmp+$sub, $len); } for ($tmpa=0;$tmpa<$len+1;$tmpa++) { for ($tmpb=0;$tmpb<$num;$tmpb++) { if (isset($qrc[$tmpb][$tmpa])) { $urlt.=$qrc[$tmpb][$tmpa]; } } } $urlt=str_replace('^', '0', urldecode($urlt)); $url=array( 'url' => str_replace('http://','https://',urldecode($urlt)), 'br' => 320, ); } else { $url=array( 'url' => '', 'br' => -1, ); } return json_encode($url); } private function kugou_url($result) { $data=json_decode($result, 1); $max=0; $url=array(); foreach ($data['data'][0]['relate_goods'] as $vo) { if ($vo['info']['bitrate']<=$this->_TEMP['br']&&$vo['info']['bitrate']>$max) { $API=array( 'method' => 'GET', 'url' => 'http://trackercdn.kugou.com/i/v2/', 'body' => array( 'hash' => $vo['hash'], 'key' => md5($vo['hash'].'kgcloudv2'), 'pid' => 1, 'behavior' => 'play', 'cmd' => '23', 'version' => 8400, ), ); $t=json_decode($this->curl($API), 1); if (isset($t['url'])) { $max=$t['bitRate']/1000; $url=array( 'url' => $t['url'], 'br' => $t['bitRate']/1000, ); } } } if (!isset($url['url'])) { $url=array( 'url' => '', 'br' => -1, ); } return json_encode($url); } private function baidu_url($result) { $data=json_decode($result, 1); if (isset($data['data']['songList'][0]['songLink'])) { $url=array( 'url' => $data['data']['songList'][0]['songLink'], 'br' => $data['data']['songList'][0]['rate'], ); $url['url']=str_replace('http://yinyueshiting.baidu.com', 'https://gss0.bdstatic.com/y0s1hSulBw92lNKgpU_Z2jR7b2w6buu', $url['url']); } else { $url=array( 'url' => '', 'br' => -1, ); } return json_encode($url); } /** * 歌词处理模块 * 用于规范化歌词输出 */ private function netease_lyric($result) { if (!$this->_FORMAT) { return $result; } $result=json_decode($result, 1); $data=array( 'lyric' => isset($result['lrc']['lyric'])?$result['lrc']['lyric']:'', 'tlyric' => isset($result['tlyric']['lyric'])?$result['tlyric']['lyric']:'', ); return json_encode($data); } private function tencent_lyric($result) { $result=substr($result,18,-1); if (!$this->_FORMAT) { return $result; } $result=json_decode($result, 1); $data=array( 'lyric' => isset($result['lyric'])?base64_decode($result['lyric']):'', 'tlyric' => isset($result['trans'])?base64_decode($result['trans']):'', ); return json_encode($data); } private function xiami_lyric($result) { if (!$this->_FORMAT) { return $result; } $result=json_decode($result, 1); $data=''; if(!empty($result['data']['song']['lyric'])){ $API=array('method'=>'GET','url'=>$result['data']['song']['lyric']); $data=$this->curl($API); $data=preg_replace('/<[^>]+>/', '', $data); } preg_match_all('/\[([\d:\.]+)\](.*)\s\[x-trans\](.*)/i',$data,$match); if(sizeof($match[0])){ for($i=0;$i<sizeof($match[0]);$i++){ $A[]='['.$match[1][$i].']'.$match[2][$i]; $B[]='['.$match[1][$i].']'.$match[3][$i]; } $arr=array( 'lyric' => str_replace($match[0],$A,$data), 'tlyric' => str_replace($match[0],$B,$data), ); } else{ $arr=array( 'lyric' => $data, 'tlyric' => '', ); } return json_encode($arr); } private function kugou_lyric($result) { if (!$this->_FORMAT) { return $result; } $arr=array( 'lyric' => $result, 'tlyric' => '', ); return json_encode($arr); } private function baidu_lyric($result) { if (!$this->_FORMAT) { return $result; } $result=json_decode($result, 1); $data=array( 'lyric' => isset($result['lrcContent'])?$result['lrcContent']:'', 'tlyric' => '', ); return json_encode($data); } /** * Format - 规范化函数 * 用于统一返回的参数，可用 ->format() 一次性开关开启 */ private function format_netease($data) { $result=array( 'id' => $data['id'], 'name' => $data['name'], 'artist' => array(), 'album' => $data['al']['name'], 'pic_id' => isset($data['al']['pic_str'])?$data['al']['pic_str']:$data['al']['pic'], 'url_id' => $data['id'], 'lyric_id' => $data['id'], 'source' => 'netease', ); if (isset($data['al']['picUrl'])) { preg_match('/\/(\d+)\./', $data['al']['picUrl'], $match); $result['pic_id']=$match[1]; } foreach ($data['ar'] as $vo) { $result['artist'][]=$vo['name']; } return $result; } private function format_tencent($data) { if (isset($data['musicData'])) { $data=$data['musicData']; } $result=array( 'id' => $data['mid'], 'name' => $data['name'], 'artist' => array(), 'album' => trim($data['album']['title']), 'pic_id' => $data['album']['mid'], 'url_id' => $data['mid'], 'lyric_id' => $data['mid'], 'source' => 'tencent', ); foreach ($data['singer'] as $vo) { $result['artist'][]=$vo['name']; } return $result; } private function format_xiami($data) { $result=array( 'id' => $data['song_id'], 'name' => $data['song_name'], 'artist' => explode(';', isset($data['singers'])?$data['singers']:$data['artist_name']), 'album' => $data['album_name'], 'pic_id' => $data['song_id'], 'url_id' => $data['song_id'], 'lyric_id' => $data['song_id'], 'source' => 'xiami', ); return $result; } private function format_kugou($data) { $result=array( 'id' => $data['hash'], 'name' => isset($data['filename'])?$data['filename']:$data['fileName'], 'artist' => array(), 'album' => isset($data['album_name'])?$data['album_name']:'', 'url_id' => $data['hash'], 'pic_id' => $data['hash'], 'lyric_id' => $data['hash'], 'source' => 'kugou', ); list($result['artist'], $result['name'])=explode(' - ', $result['name'], 2); $result['artist']=explode('、', $result['artist']); return $result; } private function format_baidu($data) { $result=array( 'id' => $data['song_id'], 'name' => $data['title'], 'artist' => explode(',', $data['author']), 'album' => $data['album_title'], 'pic_id' => $data['song_id'], 'url_id' => $data['song_id'], 'lyric_id' => $data['song_id'], 'source' => 'baidu', ); return $result; } } $api = new Meting('netease'); function Search($api,$id) { return $data = $api->format(true)->search($id); } function Song($api,$id){ return $data = $api->format(true)->song($id); } function Pic($api,$id){ return $data = $api->format(true)->pic($id); } function Url($api,$id){ $data = json_decode($api->format(true)->url($id)); $data->url=str_replace('://m7c.','://m7.',$data->url); $data->url=str_replace('://m8c.','://m8.',$data->url); $data->url=str_replace('http://m8.','https://m9.',$data->url); $data->url=str_replace('http://m7.','https://m9.',$data->url); $data->url=str_replace('http://m10.','https://m10.',$data->url); return json_encode($data); } function Lyric($api,$id){ return $data = $api->format(true)->lyric($id); } function playlist($api,$id){ return $data = $api->format(true)->playlist($id); } function comment($api,$id){ return $data = $api->format(true)->comment($id); } function sign($id, $random, $sig, $time){ $sign = '$sdk=XXX&$id='.$id.'&$random='.$random.'&$time='.$time; if(md5($sign) === $sig){ return true; } else{ return false; } } $data = json_decode(file_get_contents("php://input")); if(sign($data->id,$data->random,$data->sig,$data->time)){ $id = $data->id; switch ($data->method){ case 'search': exit(Search($api,$id)); break; case 'song': exit(Song($api,$id)); break; case 'pic': exit(Pic($api,$id)); break; case 'url': exit(Url($api,$id)); break; case 'lyric': exit(Lyric($api,$id)); break; case 'playlist': exit(playlist($api,$id)); break; case 'comment': exit(comment($api,$id)); break; default: header("Location: http://www.masterzc.cn/"); } } else { print($data); header("Location: http://www.masterzc.cn/"); } ?>
设置全民歌单，通过调用网易云API，直接播放歌单歌曲。编辑文件header.phpmusicSrc<?php function netease_AESECB($API) { $KEY='7246674226682325323F5E6544673A51'; $body=json_encode($API['body']); if (function_exists('openssl_encrypt')) { $body=openssl_encrypt($body, 'aes-128-ecb', pack('H*', $KEY)); } else { $PAD=16-(strlen($body)%16); $body=base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, hex2bin($KEY), $body.str_repeat(chr($PAD), $PAD), MCRYPT_MODE_ECB)); } $body=strtoupper(bin2hex(base64_decode($body))); $API['body']=array( 'eparams'=>$body, ); return $API; } function curl($API) { $API=netease_AESECB($API); $BASE = array( 'referer' => 'https://music.163.com/', 'cookie' => 'os=linux; appver=1.0.0.1026; osver=Ubuntu%2016.10; MUSIC_U=78d411095f4b022667bc8ec49e9a44cca088df057d987f5feaf066d37458e41c4a7d9447977352cf27ea9fee03f6ec4441049cea1c6bb9b6; __remember_me=true', 'useragent' => 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36', ); $curl=curl_init(); if ($API['method']=='POST') { if (is_array($API['body'])) { $API['body']=http_build_query($API['body']); } curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $API['body']); } elseif ($API['method']=='GET') { if (isset($API['body'])) { $API['url']=$API['url'].'?'.http_build_query($API['body']); } } curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_TIMEOUT, 20); curl_setopt($curl, CURLOPT_ENCODING, 'gzip'); curl_setopt($curl, CURLOPT_IPRESOLVE, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($curl, CURLOPT_URL, $API['url']); curl_setopt($curl, CURLOPT_COOKIE, $BASE['cookie']); curl_setopt($curl, CURLOPT_REFERER, $BASE['referer']); curl_setopt($curl, CURLOPT_USERAGENT, $BASE['useragent']); $data=curl_exec($curl); curl_close($curl); return $data; } function curlMusic($id, $type = 'list', $br = 320) { if ($type === 'list') { $API=array( 'method' => 'POST', 'url' => 'http://music.163.com/api/linux/forward', 'body' => array( 'method' => 'POST', 'params' => array( 'id' => $id, "n" => 1000, ), 'url' => 'http://music.163.com/api/v3/playlist/detail', ), 'encode' => 'netease_AESECB', 'format' => 'playlist#tracks', ); $data = json_decode(curl($API))->playlist->tracks; foreach($data as $k => $v) { $ids[] = $v->id; } $urlList = json_decode(curlMusic($ids, 'music'))->data; foreach ($urlList as $key => $value) { $url[] = substr($value->url,5); } return $url; } else { if(is_array($id)){ $API=array( 'method' => 'POST', 'url' => 'http://music.163.com/api/linux/forward', 'body' => array( 'method' => 'POST', 'params' => array( 'ids' => $id, 'br' => $br*1000, ), 'url' => 'http://music.163.com/api/song/enhance/player/url', ), 'encode' => 'netease_AESECB', 'decode' => 'netease_url', ); return curl($API); } else { $API=array( 'method' => 'POST', 'url' => 'http://music.163.com/api/linux/forward', 'body' => array( 'method' => 'POST', 'params' => array( 'ids' => array($id), 'br' => $br*1000, ), 'url' => 'http://music.163.com/api/song/enhance/player/url', ), 'encode' => 'netease_AESECB', 'decode' => 'netease_url', ); return substr(json_decode(curl($API))->data[0]->url,5); } } } $id = $this->options->socialmusic; $url=implode(",", curlMusic($id)); print_r($url); ?>编辑文件functions.php$socialmusic = new Typecho_Widget_Helper_Form_Element_Text('socialmusic', NULL, NULL, _t('输入网易云ID'), _t('在这里输入网易云歌单ID，多首以,隔开'));注解1.暂不支持多首歌单；2.暂未进行数据容错性解析；3.代码凌乱。
通过调用全民K歌API直接使用全民K歌播放音乐。编辑文件header.phpmusicSrc<?php /** * 调用全民K歌API获取playurl * @param string $id 全民K歌歌曲id * @return string 歌曲直链 */ function curlApi($id) { $url = "http://cgi.kg.qq.com/fcgi-bin/kg_ugc_getdetail?inCharset=GB2312&outCharset=utf-8&v=4&shareid=".$id."&callback=json"; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $ret = curl_exec($curl); curl_close($curl); $urlJson = json_decode(substr($ret,5,-1)); return substr($urlJson->data->playurl,5); } /** * 组装url * @param array|string $id 全民K歌歌曲id * @return array|string 歌曲直链 */ function curlId($id) { if (is_array($id)) { foreach ($id as $k => $v) { $data[] = curlApi($v); } $data = implode(",", $data); } else { $data = curlApi($id); } return $data; } /** * 写入缓存 * @param array|string $id 全民K歌歌曲id * @param string $cache_file 缓存路径 * @param boolean $update 更新(true)/写入(flase) * @return string 歌曲直链组装字符串 */ function setCache($id, $cache_file, $update = false) { if(isset($id)) { if (strpos($id, ",")) { $data[0] = curlId(explode(",", $id)); } else { $data[0] = curlId($id); } $data[1] = $id; if($update) { unlink($cache_file); } file_put_contents($cache_file,serialize($data)); return $data[0]; } } //设置缓存路径及缓存时间 define('CACHE_ROOT', dirname(__FILE__).'/cache'); define('CACHE_LIFE', 3600); define('CACHE_SUFFIX','.cache'); $file_name = date("Y-m-d").CACHE_SUFFIX; $cache_file = CACHE_ROOT.'/'.$file_name; //存在缓存 && 缓存超时 && 修改歌曲设置 => 更新缓存 if (file_exists($cache_file)) { if (time()-filemtime($cache_file)<CACHE_LIFE) { $data = unserialize(file_get_contents($cache_file)); if($data[1] !== $this->options->socialmusic) { echo setCache($this->options->socialmusic, $cache_file, true); } else { echo $data[0]; } } else { echo setCache($this->options->socialmusic, $cache_file, true); } } else { if (!file_exists(CACHE_ROOT)) { mkdir(CACHE_ROOT,0777); chmod(CACHE_ROOT,0777); } echo setCache($this->options->socialmusic, $cache_file); } ?>编辑文件functions.php$socialmusic = new Typecho_Widget_Helper_Form_Element_Text('socialmusic', NULL, NULL, _t('输入全民ID'), _t('在这里输入全民ID，多首以,隔开'));