分享一個音樂API介面
直接上原始碼C#的,使用其他語言的,直接看呼叫的API地址就好。
public class BaiduMusicAPI { /// <summary> /// 搜尋歌曲 解析網頁的方式 /// </summary> /// <param name="key"></param> public static List<MMusic> Search(string key, int page) { List<MMusic> musics = new List<MMusic>(); if (page <= 0) { page = 1; } // http://music.baidu.com/search/song?s=1&key=%E5%87%89%E5%87%89&jump=0&start=0&size=20&third_type=0 string url = string.Format("http://music.baidu.com/search/song?s=1&key={0}&jump=0&start={1}&size=20&third_type=0", key, (page - 1) * 20); MyHttpClient client = new MyHttpClient(url); string html = client.ExecuteGet(); HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(html); HtmlNode node = doc.DocumentNode; HtmlNode resultdiv = node.SelectSingleNode("//div[@monkey='result-song']/div"); HtmlNodeCollection list = resultdiv.SelectNodes("//div[@class='song-item clearfix yyr-song']"); MMusic model = null; for (int i = 0; i < list.Count; i++) { model = new MMusic(); HtmlNode temp = list[i]; string title = temp.SelectSingleNode("//span[@class='song-title']/a/em").InnerText; string singer = temp.SelectSingleNode("//span[@class='singer']/span[@class='author_list']/a").GetAttributeValue("title", ""); string playurl = temp.SelectSingleNode("//a[@class='list-micon icon-play']").GetAttributeValue("href", ""); model.Title = title; model.Singer = singer; model.PlayUrl = playurl; musics.Add(model); } return musics; } // 獲取列表 // 引數: type = 1-新歌榜,2-熱歌榜,11-搖滾榜,12-爵士,16-流行,21-歐美金曲榜,22-經典老歌榜,23-情歌對唱榜,24-影視金曲榜,25-網路歌曲榜 // size = 10 //返回條目數量 // offset = 0 //獲取偏移 // http://tingapi.ting.baidu.com/v1/restserver/ting?format=json&callback=&from=webapp_music&method=baidu.ting.billboard.billList&type=1&size=10&offset=0 /// <summary> /// 獲取列表 type = 1-新歌榜,2-熱歌榜.... /// </summary> /// <param name="offset"></param> /// <returns></returns> public static MSongList GetSongList(int type, int size, int offset) { MSongList list = new MSongList(); string url = string.Format("http://tingapi.ting.baidu.com/v1/restserver/ting?format=json&callback=&from=webapp_music&method=baidu.ting.billboard.billList&type={0}&size={1}&offset={2}", type, size, offset); MyHttpClient client = new MyHttpClient(url); string html = client.ExecuteGet(); list = JsonConvert.DeserializeObject<MSongList>(html); return list; } // 搜尋 // 引數:query = '' //搜尋關鍵字 // http://tingapi.ting.baidu.com/v1/restserver/ting?format=json&callback=&from=webapp_music&method=baidu.ting.search.catalogSug&query=%E4%B8%80%E5%89%91%E8%BD%BB%E5%AE%89 /// <summary> /// 搜尋歌名或歌手 /// </summary> /// <param name="key"></param> public static MQuerySong QuerySong(string key) { MQuerySong model = new MQuerySong(); string url = string.Format("http://tingapi.ting.baidu.com/v1/restserver/ting?format=json&callback=&from=webapp_music&method=baidu.ting.search.catalogSug&query={0}", key); MyHttpClient client = new MyHttpClient(url); string html = client.ExecuteGet(); html = html.Replace("(", string.Empty).Replace(");", string.Empty); model = JsonConvert.DeserializeObject<MQuerySong>(html); return model; } // 播放 // 引數:songid = 877578 //歌曲id // http://tingapi.ting.baidu.com/v1/restserver/ting?format=json&callback=&from=webapp_music&method=baidu.ting.song.play&songid=877578 /// <summary> /// 播放歌曲資訊 /// </summary> /// <param name="songid"></param> /// <returns></returns> public static MPlaySong PlaySong(string songid) { MPlaySong model = new MPlaySong(); string url = string.Format("http://tingapi.ting.baidu.com/v1/restserver/ting?format=json&callback=&from=webapp_music&method=baidu.ting.song.play&songid={0}", songid); MyHttpClient client = new MyHttpClient(url); string html = client.ExecuteGet(); html = html.Replace("(", string.Empty).Replace(");", string.Empty); model = JsonConvert.DeserializeObject<MPlaySong>(html); return model; } // 歌詞 // 引數:songid = 877578 //歌曲id // http://tingapi.ting.baidu.com/v1/restserver/ting?format=json&callback=&from=webapp_music&method=baidu.ting.song.lry&songid=877578 /// <summary> /// 歌詞資訊 /// </summary> /// <param name="songid"></param> /// <returns></returns> public static MPlaySongLrc PlaySongLRC(string songid) { MPlaySongLrc model = new MPlaySongLrc(); string url = string.Format("http://tingapi.ting.baidu.com/v1/restserver/ting?format=json&callback=&from=webapp_music&method=baidu.ting.song.lry&songid={0}", songid); MyHttpClient client = new MyHttpClient(url); string html = client.ExecuteGet(); model = JsonConvert.DeserializeObject<MPlaySongLrc>(html); return model; } // 下載 // 引數: songid = 877578//歌曲id // _t = 1430215999,, //時間戳 // http://tingapi.ting.baidu.com/v1/restserver/ting?format=json&callback=&from=webapp_music&method=baidu.ting.song.downWeb&songid=73866069&bit=24&_t=1492565440 /// <summary> /// 下載歌曲到本地 不可用 /// </summary> /// <param name="songid"></param> /// <returns></returns> public static string DownLoadSong(string songid, string filepath) { string _t = StringUtils.GetTimeStamp(true); string url = string.Format("http://tingapi.ting.baidu.com/v1/restserver/ting?format=json&callback=&from=webapp_music&method=baidu.ting.song.downWeb&songid={0}&bit=24&_t={1}", songid, _t); MyHttpClient client = new MyHttpClient(url, filepath, true); string path = client.HttpDownloadFile(); return path; } /// <summary> /// 通過播放資訊中的url去下載 /// </summary> /// <param name="url"></param> /// <param name="filepath"></param> /// <param name="api"></param> /// <returns></returns> public static string DownLoadSong(string url, string filepath, bool api) { MyHttpClient client = new MyHttpClient(url, filepath, true); string path = client.HttpDownloadFile(); return path; } // 歌手資訊 // 引數: tinguid = 877578 //歌手ting id // http://tingapi.ting.baidu.com/v1/restserver/ting?format=json&callback=&from=webapp_music&method=baidu.ting.artist.getInfo&tinguid=877578 /// <summary> /// 歌手資訊 /// </summary> /// <param name="ting_id"></param> /// <returns></returns> public static MArtistInfo GetArtistInfo(string ting_id) { MArtistInfo model = new MArtistInfo(); string url = string.Format("http://tingapi.ting.baidu.com/v1/restserver/ting?format=json&callback=&from=webapp_music&method=baidu.ting.artist.getInfo&tinguid={0}", ting_id); MyHttpClient client = new MyHttpClient(url); string json = client.ExecuteGet(); json = json.Replace("(", string.Empty).Replace(");", string.Empty); model = JsonConvert.DeserializeObject<MArtistInfo>(json); return model; } // 歌手歌曲列表 // 引數: tinguid = 877578//歌手ting id // limits = 6//返回條目數量 // // http://tingapi.ting.baidu.com/v1/restserver/ting?format=json&callback=&from=webapp_music&method=baidu.ting.artist.getSongList&tinguid=110942340&limits=20&use_cluster=1&order=2 /// <summary> /// 獲取歌手歌曲列表 /// </summary> /// <param name="tinguid"></param> /// <param name="limits"></param> /// <returns></returns> public static MSingerSongList GetSingerSongs(string tinguid, int limits) { MSingerSongList model = new MSingerSongList(); string url = string.Format("http://tingapi.ting.baidu.com/v1/restserver/ting?format=json&callback=&from=webapp_music&method=baidu.ting.artist.getSongList&tinguid={0}&limits={1}&use_cluster=1&order=2", tinguid, limits); return model; } }
相關推薦
分享一個音樂API介面
直接上原始碼C#的,使用其他語言的,直接看呼叫的API地址就好。 public class BaiduMusicAPI { /// <summary> /// 搜尋歌曲 解析網頁的方式 /// </
[文件和原始碼分享] 基於WIN32 API介面程式設計實現的百戰天蟲小遊戲
在遊戲編寫的過程中,我一直在思考我自己製作的遊戲的主旨是什麼,想來想去,結合“百戰天蟲”遊戲的特點,我想到了“戰爭”這個主旨。遊戲中陣營的相互廝殺不正如國家之間的戰爭嗎?於是,我希望通過這款遊戲反映我對戰爭的一些思考。在遊戲結束或者暫停的時候,沒有顯示勝利者,因為我覺得戰爭沒有贏家,而在螢幕上
[原始碼和報告分享]基於WIN32 API介面程式設計實現的2048遊戲
遊戲功能 l 倒計時 遊戲有一個 15分鐘 的倒計時,玩家需要在規定時間內完成遊戲(即合併出數字為2048的方塊) l 方塊出現規則 在遊戲中,方塊的出現完全隨機,僅出現在空方格中。當方塊出現時,方塊上的數字有
[文件和原始碼分享] 基於WIN32 API介面程式設計實現的Flappy Bird小遊戲
Flappy bird是一款卷軸類的躲避遊戲。設計中可用空格操控遊戲的開始和暫停,通過控制向上的方向使小鳥不斷向上飛,但是不能落到地面和上邊界也不能撞到障礙物,否則遊戲結束彈出“Game Over!”的視窗。遊戲可以通過堅持的時間控制障礙物移動的速度,從而加大遊戲難度。 障礙物
分享第三方免費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/do
[原始碼和文件分享]基於WIN32 API介面程式設計實現的貪吃蛇遊戲
1 設計目的和任務 本次期末大作業採用課程設計的形式進行,作為《Windows程式設計》課程的期末考核。要求綜合運用Windows程式設計的相關知識,完成大作業的相關內容,並撰寫設計報告。其目的和任務是: 鞏固和加深學生對本課程基本知識的理解和掌握 熟悉使用Windows環
微信小程式呼叫qq音樂API介面
2018年11月14日 15:23:10 LC_cat 閱讀數:8 標籤: 小程式
[原始碼和文件分享]基於WIN32 API介面程式設計的下100層小遊戲
一 需求分析 程式面向windows程式設計課的課程設計作品。做了一個簡易的小遊戲,下一百層,介面為SDK,運用GDI技術。 走一塊磚算為下一層,總共有100塊磚,也就是100層。 其中有5種磚。分別為:碰到後會扣血的釘子磚,碰到後會立刻碎掉的碎磚,小人站上去後會隨之向左向右移動的旋轉磚
百度MP3音樂API介面及應用
最近在做一個播放器的專案,要實現從網路下載歌曲和歌詞,看了很多別人的帖子和部落格,今天上午終於搞定,也來總結一下,希望能幫助大家,好了,不說廢話了,進入正題。 百度提供了一個開放音樂搜尋的api,在瀏覽器的位址列輸入: 其中歌名和歌手兩個欄位值需要經過utf-8編碼 URLEncoder.encod
Android UI開發第十五篇——分享一個登入緩衝介面
今天在網上發現了一個很漂亮的緩衝介面,在這裡分享一下。主要還是用的android Anim。java code:public class Main extends Activity { private Animation anm; private int ma
用Spring Boot開發一個web API 介面返回資料
需求:開發微信小程式無法直接獲取到伺服器資料庫資料,所以需要一個API返回 開發軟體:IntelliJ IDEA 框架:Spring Boot 第一步 新建一個Spri
分享一批可用Api介面-Ten·Api
- 一言:http://tenapi.cn/yiyan/get- 隨機動漫圖片:- 每日Bing:https://tenapi.cn/bing- Ico站標獲取:http://tenapi.cn/ico.php?url=請求內容- 新增QQ好友:https://tenapi.
分享一個網易新聞的api介面
首頁一進入就獲取資料可以用下面這個 通過跨域請求,我用的是script跨域,即 var oScipt= document.createElement('script') oScript.src='http://3g.163.com/touch/jsonp
[原始碼和文件分享]分別基於WIN32 API介面程式設計和Cocos2d-x實現的兩個版本FlappyBird遊戲
1 開發背景 遊戲程式設計涉及了學科中的各個方面,鑑於目的在於學習與進步,本遊戲《Flappy Bird 》採用了兩個不同的開發方式來開發本款遊戲,一類直接採用win32底層API來實現,另一類採用當前火熱的cocos2d-x遊戲引擎來開發本遊戲。 2 需求分析 2.1 資料分析 本
使用Node.js寫一個簡單的api介面
引入Http模組 預設你已經安裝了Node.js Node當中內建了Http模組; 可以使用 var http= require("http"); 複製程式碼 引入http模組; Hello world 用Node.js實現一個HTTP伺服器程式非常簡單。我們實現一個最簡單的Web程式, 它對於所有請
彩票免費API 全國彩票開獎結果資料呼叫API介面分享
彩票行業在我國是一個異常敏感的行業。一方面國家通過彩票銷售獲得了千億級別的財政收入,另一方面由於開獎資料被灰色產業利用,導致國家彩票管理中心直接停止了網際網路的彩票銷售。 隨著網際網路彩票的禁售,各大省市除了低頻彩如雙色球、福彩3D、七樂彩、大樂透、排列三、排列五、七星彩等開獎資料公佈之外。
使用百度音樂盒API介面實現音樂播放器
百度音樂盒提供了一個便捷的API可以拿來訪問一些音樂資源,開發者通過訪問指定格式的url可以拿到返回的資料,這個資料可以是json或者xml,這裡麵包含了歌曲的資訊。完整的API各種訪問格式是非常豐富的,參見http://www.cnblogs.com/liuying19
JMeter、Postman、Requests介面測試經驗分享-一個請求中傳送多個檔案
之前就已經有打算分享一篇關於使用Post請求傳送多個檔案的部落格;最近好好工作、天天打遊戲,也就耽誤許久。今天來分享下,這個上傳多個檔案的請求實際也是一種 一個引數傳多個值的情況; (一)POST請求-multipart/form-data 這篇分享:POST請求方法之content
JMeter、Postman、Requests介面測試經驗分享-一個引數傳多個值(三)
原本以為是a piece of cake,深挖下,結果自己越跑越遠; 所幸有些收穫,但不見得準確,希望大家多多指正。 JSON格式的POST請求在利用Requests庫在用三種方法傳遞引數時出現了新問題,有2種是400 Bad Request,即我傳的(Requests轉化完的)JSON
JMeter、Postman、Requests介面測試經驗分享-一個引數傳多個值(二)
上一篇分享真實介面,好多馬賽克;這一篇就分享沒有馬賽克的; 與此同時,因為那個post請求的Content-Type是application/x-www-form-urlencoded,沒有寫JSON的機會;我一直以為我會遇到的JSON問題是工具JMeter、Postman的,但沒想到是