Press "Enter" to skip to content

Category: PHP

QQMusic研究筆記

緣由: 雖然我平常不用 , 但正好晚上沒事干 , 剛好一晚上搞定 經過分析之後發現 , 播放或下載音樂只需要2個變數 , 分別是vKey和mid mid是什麼: 在qqmusic點進隨便一首歌後 , 查看url , 被反白的地方就是mid vKey的取得: http://base.music.qq.com/fcgi-bin/fcg_musicexpress2.fcg?version=12&miniversion=53&uin=859823114&guid=CFBD477A9B6A9624E683A383291E896F&musicfile=0http://i.y.qq.com/s.plcloud/fcgi-bin/fcg_list_songinfo_cp.fcg?url=1&midlist={{$musicID}}.m4a 在填上mid之後訪問該網址 , 然後查看源代碼 , 我們可以看到很多key 其實這就是vKey , 隨便拿一個就好 code: public function getMusicKey($musicID){ $baseUrl = “….”; $keyContents =file_get_contents($baseUrl); $array = array(); preg_match( ‘/key=”([^”]*)”/i’, $keyContents,$array ) ; returnstr_replace(“””,””,str_replace(“key=”,””,$array[0])); } 取得音樂檔案: 有了vKey和mid之後 , 我們就可以直接訪問存放在伺服器的檔案 code: public function getMusicResource($musicID){ $vKey = $this->getMusicKey($musicID); $baseUrl =”http://ws.stream.qqmusic.qq.com/M800$musicID.mp3?vkey=$vKey&guid=CFBD477A9B6A9624E683A383291E896F&uin=859823114&fromtag=59″; $musicResources =file_get_contents($baseUrl); return $musicResources; } 試聽音樂: 先取得音樂檔案內容 , 再透過設定header在線上播放音樂 code: public function listenMusic($musicID){ $musicResource =$this->getMusicResource($musicID); $contents =View::make(‘/apiView/listenMusic’)->with(“musicResource”,$musicResource); $response = Response::make($contents,200); $response->header(‘Content-Type’,’Content-Type: audio/mp3′); return $response; } 下載音樂檔案: 先取得音樂檔案的內容 , 然後透過設定header來達成下載動作 code: public function downloadMusic($musicID){ $musicResource =$this->getMusicResource($musicID); $contents =View::make(‘/apiView/downloadMusic’)->with(“musicResource”,$musicResource); $response = Response::make($contents,200); $response->header(‘Content-Type’,’Content-Type: application/octet-stream’); $response->header(‘Content-Disposition’,’attachment;filename=’.$musicID.’.mp3′); return $response; } 取得音樂資訊(JSON Format): 同樣是填上mid就可以了 code: public function getMusicInfo($musicID){ $baseUrl =”http://i.y.qq.com/s.plcloud/fcgi-bin/fcg_list_songinfo_cp.fcg?url=1&midlist=$musicID”; $infoContents =file_get_contents($baseUrl); return $infoContents; } 搜索歌曲API: public function doSearchMusic(){ $musicName = Input::get(‘musicName’); $baseUrl =”http://s.music.qq.com/fcgi-bin/music_search_new_platform?t=0&n=50&aggr=1&cr=1&loginUin=0&format=json&inCharset=GB2312&outCharset=utf-8&notice=0&platform=jqminiframe.json&needNewCode=0&p=1&catZhida=0&remoteplace=sizer.newclient.next_song&w=$musicName”; $searchResult =json_decode(file_get_contents($baseUrl)); returnview(‘searchResult’)->with(‘result’,$searchResult); } 其中的n=50 是代表顯示頭50個結果 , w=$musicName 則是搜索時的keywords 以下是回傳結果 用紅色框住的分別是歌曲名 , 歌手名 , 專輯名 和 mid 有了以上的東西 , 足夠弄一個自己的音樂搜尋器了 無聊的研究就到此為止了

Comments closed

[Laravel]Install Composer

1. 下載最新版本的composer套件 php -r “copy(‘https://getcomposer.org/installer’,’composer-setup.php’);” 2. 檢查檔案完整性 php -r “if (hash_file(‘SHA384’, ‘composer-setup.php’) ===’e115a8dc7871f15d853148a7fbac7d a27d6c0030b848d9b3dc09e2a0388afed865e6a3d6b3c0fad45c48e2b5fc1196ae’){ echo ‘Installer verified’; } else { echo ‘Ins taller corrupt’; unlink(‘composer-setup.php’); } echoPHP_EOL;” 3. 運行安裝文件 php composer-setup.php 4. 刪除安裝文件 php -r “unlink(‘composer-setup.php’);” 在完裝完成之後 , 根目錄會多出 composer.phar 新增 dependency 在 composer.json 加入要新增的 dependency路徑 例如: “require”: { “php”: “>=5.5.9”, “laravel/framework”: “5.2.*”, “paypal/adaptivepayments-sdk-php”:”v3.6.106″ } 然後在terminal中運行 php composer.phar install 更新composer.json中所有的dependency 直接在terminal中輸入 php composer.phar update

Comments closed

[PHP]Mojang Authentication

Url: https://authserver.mojang.com/authenticate Method : POST Request: { “agent”: { “name”: “Minecraft”, “version”: 1 }, “username”: “[email protected]”, “password”: “yourPassword”, “clientToken”: “client identifier” } 註: clientToken可以隨意輸入 , 如果驗證成功 , 會返回相同的clientToken 例外情況: error password: { “error”:”ForbiddenOperationException”, “errorMessage”: “Invalid credentials.Invalid username or password.” } request too many: { “error”:”ForbiddenOperationException”, “errorMessage”:”Invalid credentials.” } PHP Code:

Comments closed