找回密码
 免费注册

[API开发] 抖音汽水音乐API

[复制链接]
admin 发表于 2024-2-21 17:52:42 | 显示全部楼层 |阅读模式

收集了那么多音乐api不差这一个了
这个播放器的音乐都是网红歌曲,主要为了获取榜单排行榜音乐
这个播放器有加密但是它不校验加密,丢浏览器都能直接请求的那种
好像是抖音旗下的属实有点冷门
不逼逼了直接放代码结束

  1. package coke;

  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import org.apache.http.HttpResponse;
  5. import org.apache.http.client.methods.HttpGet;
  6. import org.apache.http.client.methods.HttpPost;
  7. import org.apache.http.entity.StringEntity;
  8. import org.apache.http.impl.client.CloseableHttpClient;
  9. import org.apache.http.impl.client.HttpClients;
  10. import org.apache.http.util.EntityUtils;
  11. import java.io.IOException;
  12. import java.text.MessageFormat;
  13. import java.util.HashMap;
  14. import java.util.List;
  15. import java.util.Map;

  16. public class coke_music {

  17.     public static String get_musiclist(int music_type){
  18.         /*
  19.         获取歌单列表
  20.         music_type=类型
  21.         0=每日推荐
  22.         93=官方
  23.         9=欧美
  24.         38=说唱
  25.         16=电子
  26.         15=摇滚
  27.         18=民谣
  28.         19=R&B
  29.         20=国风
  30.         40=学习
  31.         45=睡前
  32.         69=治愈
  33.         8=华语
  34.         14=流行
  35.         */
  36.         String url = "https://beta-luna.douyin.com/luna/feed/playlist-square?request_tag_from=lynx&device_platform=android&os=android&ssmix=a&_rticket=1659112744687&cdid=4a6a891c-e1e1-4fec-8ef6-94f28a302b0b&channel=xiaomi_8478&aid=8478&app_name=luna&version_code=10090140&version_name=1.9.1&manifest_version_code=10090140&update_version_code=10090140&resolution=1080*2030&dpi=440&device_type=MI+6X&device_brand=xiaomi&language=zh&os_api=28&os_version=9&ac=wifi&package=com.luna.music&hybrid_version_code=10090140&device_model=MI+6X&tz_name=Asia%2FShanghai&tz_offset=28800&network_speed=5246&iid=&device_id=";
  37.         JSONObject param = new JSONObject();
  38.         param.put("category_id", music_type);
  39.         String result = null;
  40.         HttpPost httpPost = new HttpPost(url);
  41.         CloseableHttpClient client = HttpClients.createDefault();
  42.         StringEntity entity = new StringEntity(param.toJSONString(), "UTF-8");
  43.         httpPost.setHeader("User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1");
  44.         httpPost.setEntity(entity);
  45.         try {
  46.             HttpResponse response = client.execute(httpPost);
  47.             if (response.getStatusLine().getStatusCode() == 200) {
  48.                 result = EntityUtils.toString(response.getEntity(), "utf-8");
  49.             }
  50.         } catch (IOException e) {
  51.             e.printStackTrace();
  52.             result = "error";
  53.         }

  54.         return result;
  55.     }


  56.     public static String get_musicrank(){
  57.         /*
  58.         获取rank榜
  59.         */
  60.         String url = "https://beta-luna.douyin.com/luna/discover?device_platform=android&os=android&ssmix=a&_rticket=1659122791092&cdid=05d1276c-3cad-4d05-892c-bb5187ca51b8&channel=xiaomi_8478&aid=8478&app_name=luna&version_code=10090140&version_name=1.9.1&manifest_version_code=10090140&update_version_code=10090140&resolution=1080*2030&dpi=440&device_type=MI+6X&device_brand=xiaomi&language=zh&os_api=28&os_version=9&ac=wifi&package=com.luna.music&hybrid_version_code=10090140&device_model=MI+6X&tz_name=Asia%2FShanghai&tz_offset=28800&network_speed=5297&iid=&device_id=";

  61.         String result = null;
  62.         HttpPost httpPost = new HttpPost(url);
  63.         CloseableHttpClient client = HttpClients.createDefault();
  64.         Map<String, String> map = new HashMap<>();
  65.         map.put("body", null);
  66.         StringEntity entity = new StringEntity(map.toString(), "UTF-8");
  67.         httpPost.setEntity(entity);
  68.         httpPost.setHeader("User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1");
  69.         try {
  70.             HttpResponse response = client.execute(httpPost);
  71.             if (response.getStatusLine().getStatusCode() == 200) {
  72.                 result = EntityUtils.toString(response.getEntity(), "utf-8");
  73.             }
  74.         } catch (IOException e) {
  75.             e.printStackTrace();
  76.             result = "error";
  77.         }

  78.         return result;
  79.     }



  80.     public static String get_playlist(String playlist_id){
  81.         /*获取歌单里面的歌曲*/
  82.         String url = MessageFormat.format("https://beta-luna.douyin.com/luna/playlist/detail?playlist_id={0}&cursor&device_platform=android&os=android&ssmix=a&_rticket=1659112831329&cdid=4a6a891c-e1e1-4fec-8ef6-94f28a302b0b&channel=xiaomi_8478&aid=8478&app_name=luna&version_code=10090140&version_name=1.9.1&manifest_version_code=10090140&update_version_code=10090140&resolution=1080*2030&dpi=440&device_type=MI+6X&device_brand=xiaomi&language=zh&os_api=28&os_version=9&ac=wifi&package=com.luna.music&hybrid_version_code=10090140&device_model=MI+6X&tz_name=Asia%2FShanghai&tz_offset=28800&network_speed=5246&iid=&device_id=", playlist_id);

  83.         String result = null;
  84.         HttpGet httpGet = new HttpGet(url);
  85.         CloseableHttpClient client = HttpClients.createDefault();
  86.         httpGet.setHeader("User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1");

  87.         try {
  88.             HttpResponse response = client.execute(httpGet);
  89.             if (response.getStatusLine().getStatusCode() == 200) {
  90.                 result = EntityUtils.toString(response.getEntity(), "utf-8");
  91.             }
  92.         } catch (IOException e) {
  93.             e.printStackTrace();
  94.             result = "error";
  95.         }

  96.         return result;
  97.     }

  98.     public static void main(String[] args) {
  99.         String musicrank = get_musicrank();
  100.         System.out.println("榜单列表:" + musicrank);

  101.         String musiclist = get_musiclist(0);
  102.         System.out.println("歌单列表:" + musiclist);
  103.         JSONObject obj = JSONObject.parseObject(musiclist);
  104.         List<Object> Array = obj.getJSONArray("items");
  105.         JSONArray jsonArray = new JSONArray(Array);
  106.         /*这里demo就取随机一个,你也可以固定或者全部取*/
  107.         int listint = (int) (Math.random() * jsonArray.toArray().length);
  108.         JSONObject obj1 = jsonArray.getJSONObject(listint);
  109.         String list_id = obj1.getString("id");
  110.         System.out.println(list_id);
  111.         String playlist = get_playlist(list_id);
  112.         System.out.println("音乐列表:" + playlist);

  113.         obj = JSONObject.parseObject(playlist);
  114.         Array = obj.getJSONArray("tracks");
  115.         jsonArray = new JSONArray(Array);
  116.         listint = (int) (Math.random() * jsonArray.toArray().length);
  117.         obj1 = jsonArray.getJSONObject(listint);
  118.         String music_id = obj1.getString("vid");
  119.         System.out.println("音乐ID:" + music_id);
  120.         /*得到这个id就等于结束了,不要从音乐列表去获取音乐的url,我测试是不行无法播放,具体原因懒得研究了。这里直接用抖音的万能解析接口
  121.         https://www.douyin.com/aweme/v1/play/?video_id=这里输入上面获取的音乐ID&line=0&is_play_url=1&source=PackSourceEnum_PUBLISH
  122.         请求后即可获得播放地址,会员音乐也是可以获取到的,目前全程无任何加密!
  123.         * */
  124.     }
  125. }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

QQ|Archiver|手机版|小黑屋|信息共享网

GMT+8, 2024-5-15 10:59 , Processed in 0.065946 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表