1. 程式人生 > >分享一個音樂API介面

分享一個音樂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的,但沒想到是