MusicLake Android端API簡介

簡介

MusicLake 是 Github上開源的在線音樂播放器(到目前為止已收獲1.1k????)涂臣,
MusicApi 是抽離Android端在線音樂項(xiàng)目接口的一個(gè)子項(xiàng)目习柠,用來維護(hù)接口陕靠,主項(xiàng)目通過引入不同的musicapi 版本來現(xiàn)實(shí)更新api。
[圖片上傳失敗...(image-6f907b-1564077426400)]

  • 簡單封裝網(wǎng)易云、百度音樂谷炸、蝦米音樂、QQ音樂API接口
  • 通過DSBridge for Android 解決Android跨域問題禀挫,Android端解析調(diào)用js音樂API的api
  • 增加NeteaseMusicApi接口
  • 具體的接口實(shí)現(xiàn)請(qǐng)看MusicLake

DSbridge使用

通過BaseApiImpl旬陡,調(diào)用js方法拼接api請(qǐng)求地址,然后AjaxHandler收到請(qǐng)求地址语婴,再通過okhhtp請(qǐng)求描孟,獲取返回?cái)?shù)據(jù),然后在回到j(luò)s組裝返回?cái)?shù)據(jù)砰左。最后返回一個(gè)json字符串匿醒,在BaseApiImpl 回調(diào)方法中g(shù)son解析成具體對(duì)象。

API

  • 百度音樂Api接口定義 : BaiduApiService(具體實(shí)現(xiàn)在MusicLake)
  • 網(wǎng)易音樂Api接口定義 : NeteaseApiService(具體實(shí)現(xiàn)在MusicLake)
  • 在線歌單Api接口定義 : PlaylistApiService(具體實(shí)現(xiàn)在MusicLake)
  • 音樂播放Api接口app.native.js : 同PC端Api接口sunzongzheng/musicApi/dist/app.native.js
    為了節(jié)省時(shí)間缠导,減少維護(hù)成本廉羔,PC端和Android端使用同一api js,使用 DSbridge 解決Android跨域問題僻造, 實(shí)現(xiàn)Android js交互憋他。具體接口實(shí)現(xiàn)在BaseApiImpl孩饼,app.native.js 包含的接口如下:
    /**
     * 搜索
     *
     * @param query 搜索文本
     * @param limit 每頁多少歌曲
     * @param offset 偏移量
     * @param success 結(jié)果返回回調(diào)
     * @param fail 失敗返回回調(diào)
     */
    fun searchSong(query: String, limit: Int, offset: Int, success: (result: SearchData) -> Unit, fail: ((String?) -> Unit)? = null) {
        .....
    }

    /**
     * 獨(dú)立請(qǐng)求
     * @param query 搜索文本
     * @param type 歌曲類型 [QQ,XIAMI,NETEASE]
     * @param limit 每頁多少歌曲
     * @param offset 偏移量
     * @param success 結(jié)果返回回調(diào)
     */
    fun searchSongSingle(query: String, type: String, limit: Int, offset: Int, success: (result: SearchSingleData) -> Unit) {
        .....
    }


    /**
     * 獲取歌曲詳情
     * @param vendor 歌曲類型 [qq,xiami,netease]
     * @param id 歌曲Id
     * @param success 結(jié)果返回回調(diào)
     * @param fail 失敗返回回調(diào)
     */
    fun getSongDetail(vendor: String, id: String, success: (result: SongDetail) -> Unit, fail: (() -> Unit)? = null) {
        .....
    }

    /**
     * 批量獲取歌曲詳情
     *
     * @param vendor 歌曲類型 [qq,xiami,netease]
     * @param ids 歌曲Ids [101126,16435051,139808]
     * @param success 成功回調(diào)
     */
    fun getBatchSongDetail(vendor: String, ids: Array<String>, success: (result: BatchSongDetail) -> Unit) {
        .....
    }


    /**
     * 獲取服務(wù)器網(wǎng)易排行榜列表
     */
    fun getTopList(id: String, success: (result: NeteaseBean) -> Unit) {
        .....
    }


    /**
     * 獲取歌詞信息
     *
     * @param vendor 歌曲類型 [qq,xiami,netease]
     * @param success 成功回調(diào)
     */
    fun getLyricInfo(vendor: String, id: String, success: (result: LyricData) -> Unit) {
        .....
    }

    /**
     * 獲取評(píng)論信息
     *
     * @param vendor 歌曲類型 [qq,xiami,netease]
     * @param id 歌曲Id
     * @param success 成功回調(diào)
     */
    fun getComment(vendor: String, id: String, success: (result: Any) -> Unit, fail: ((String) -> Unit)? = null) {
        .....
    }

    /**
     * 獲取播放地址
     * @param vendor 歌曲類型 [qq,xiami,netease]
     * @param id 歌曲Id
     * @param br 音質(zhì) 默認(rèn)12800
     * @param success 成功回調(diào)
     * @param fail 失敗回調(diào)
     */
    fun getSongUrl(vendor: String, id: String, br: Int = 128000, success: (result: SongBean) -> Unit, fail: (() -> Unit)? = null) {
        .....
    }

    /**
     * 獲取歌手單曲列表
     * @param vendor 歌曲類型 [qq,xiami,netease]
     * @param id 歌手ID
     * @param offset 偏移量
     * @param limit 每頁限制
     * @param success 成功回調(diào)
     * @param fail 失敗回調(diào)
     */
    fun getArtistSongs(vendor: String, id: String, offset: Int, limit: Int, success: (result: ArtistSongsData) -> Unit, fail: ((String) -> Unit)? = null) {
        .....
    }

    /**
     * 獲取專輯歌曲列表
     * @param vendor 歌曲類型 [qq,xiami,netease]
     * @param id 專輯ID
     * @param success 成功回調(diào)
     * @param fail 失敗回調(diào)
     */
    fun getAlbumSongs(vendor: String, id: String, success: (result: ArtistSongsData) -> Unit, fail: ((String) -> Unit)? = null) {
        .....
    }

    /**
     * 獲取專輯詳情
     * @param vendor 歌曲類型 [qq,xiami,netease]
     * @param id 專輯ID
     * @param success 成功回調(diào)
     * @param fail 失敗回調(diào)
     */
    fun getAlbumDetail(vendor: String, id: String, success: (result: AlbumData) -> Unit, fail: ((String) -> Unit)? = null) {
        .....
    }

    /**
     * 獲取歌手列表詳情(qq歌手列表)
     * @param offset 偏移量
     * @param params 例:val params = mapOf("area" to area, "sex" to sex, "genre" to genre, "index" to index)
     * @param success 成功回調(diào)
     * @param fail 失敗回調(diào)
     */
    fun getArtists(offset: Int, params: Any, success: (result: ArtistsData) -> Unit, fail: ((String) -> Unit)? = null) {
        .....
    }

    /**
     * 獲取任意平臺(tái)歌手詳情
     * id,專輯ID
     * @param ids 歌手ID列表 map(id,vendor) 歌手id 和 歌曲類型 [qq,xiami,netease]
     * @param success 成功回調(diào)
     * @param fail 失敗回調(diào)
     */
    fun getAnyVendorSongDetail(ids: MutableList<Map<String, String?>>, success: (result: MutableList<MusicInfo>) -> Unit, fail: ((String) -> Unit)? = null) {
        .....
    }

Usage

Step 1. Add the JitPack repository to your build file

allprojects {
            repositories {
                ...
                maven { url 'https://jitpack.io' }
            }
    }

Step 2. Add the dependency

dependencies {
            implementation 'com.github.caiyonglong:musicapi:1.0.3'
        }

Tips

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末镀娶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子此迅,更是在濱河造成了極大的恐慌汽畴,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耸序,死亡現(xiàn)場離奇詭異忍些,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)坎怪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門罢坝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人搅窿,你說我怎么就攤上這事嘁酿。” “怎么了男应?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵闹司,是天一觀的道長。 經(jīng)常有香客問我沐飘,道長游桩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任耐朴,我火速辦了婚禮借卧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘筛峭。我一直安慰自己铐刘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布影晓。 她就那樣靜靜地躺著镰吵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪俯艰。 梳的紋絲不亂的頭發(fā)上捡遍,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音竹握,去河邊找鬼画株。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的谓传。 我是一名探鬼主播蜈项,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼续挟!你這毒婦竟也來了紧卒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤诗祸,失蹤者是張志新(化名)和其女友劉穎跑芳,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體直颅,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡博个,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了功偿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盆佣。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖械荷,靈堂內(nèi)的尸體忽然破棺而出共耍,到底是詐尸還是另有隱情,我是刑警寧澤吨瞎,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布痹兜,位于F島的核電站,受9級(jí)特大地震影響颤诀,放射性物質(zhì)發(fā)生泄漏佃蚜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一着绊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧熟尉,春花似錦归露、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至往果,卻和暖如春疆液,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背陕贮。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國打工堕油, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓掉缺,卻偏偏與公主長得像卜录,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子眶明,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 隨著HTML5的不斷普及及優(yōu)化艰毒,以及移動(dòng)端對(duì)動(dòng)態(tài)化的需求越來越大,開發(fā)者經(jīng)常需要在app中嵌入一些網(wǎng)頁搜囱,然后會(huì)在w...
    lazydu閱讀 21,265評(píng)論 31 48
  • 劉曉飛 堅(jiān)持分享第682天 焦點(diǎn)網(wǎng)絡(luò)中級(jí)十期 20190601 今天是六一兒童節(jié)丑瞧,按照我和孩子們的約定要帶...
    花開盛夏閱讀 218評(píng)論 0 0
  • 一、HTTP 請(qǐng)求: HTTP 請(qǐng)求的格式: 第1部分: 動(dòng)詞 路徑 協(xié)議/版本 第2部分:Key1: value...
    格林姆大師閱讀 327評(píng)論 0 0
  • APPDelegate需要實(shí)現(xiàn)的代碼為: - (void)application:(UIApplication *...
    烈酒暖心i閱讀 338評(píng)論 0 0
  • 輾轉(zhuǎn)反側(cè)蜀肘,绊汹,,糾結(jié)幌缝,焦慮灸促,,焦慮涵卵,糾結(jié)浴栽,,轿偎,忽然典鸡。想開,坏晦,萝玷,人為預(yù)謀也罷,權(quán)當(dāng)是老天給我的禮物昆婿,心里瞬間輕松了
    咸鴨蛋丫閱讀 106評(píng)論 0 0