首页>代码>教你怎么通过java脚本下载QQ付费音乐>/down-qq-music/src/main/java/com/xiaoc/down_qq_music/App.java
/**  
* @Title: App.java 
* @Description:
* @Copyright: Copyright (c) 2019
* @author: Su.Yuanlin  
* @date 2019年2月12日  
* @QQ 314078331  
* @Like 流水落花春去也,天上人间
*/
package com.xiaoc.down_qq_music;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

import com.alibaba.druid.support.json.JSONParser;

import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSON;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONUtil;

public class App {

	public static final String __LIST = "list";
	public static final String __SONG = "song";
	public static final String __TAB = "tab";
	public static final String __SINGER = "singer";
	public static final String __NAME = "name";
	public static final String __SONGNAME = "songname";
	public static final String __SONGMID = "songmid";
	public static final String __MP3_L = "mp3_l";
	public static final String __MID = "mid";

	public static final String QUERY_MUSIC_URL = "https://c.y.qq.com/soso/fcgi-bin/client_search_cp?&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=20&w=";
	public static final String DOWNURL = "http://www.douqq.com/qqmusic/qqapi.php";

	public static String getSeachData(String keyWord) {
		String url = QUERY_MUSIC_URL + keyWord;
		String resultStr = HttpUtil.get(url);
		int begin = resultStr.indexOf(__SONG) + 6;
		int end = resultStr.indexOf(__TAB) - 2;
		return resultStr.substring(begin, end);
	}

	public static Map<Integer, String> getMusicDic(JSONArray jsonArrayData) {
		Map<Integer, String> sonmidMap = new HashMap<Integer, String>();
		// 将音乐放入map,提供下载选择
		for (int i = 0; i < jsonArrayData.size(); i++) {
			JSON jsonObject = JSONUtil.parse(jsonArrayData.get(i));
			JSONArray jsonArray = new JSONArray(jsonObject.getByPath(__SINGER));
			Object songName = JSONUtil.parse(jsonArray.get(0)).getByPath(__NAME);
			System.out.println(i + "---------" + jsonObject.getByPath(__SONGNAME) + "------" + songName.toString());
			sonmidMap.put(i, jsonObject.getByPath(__SONGMID).toString());
		}
		return sonmidMap;
	}

	public static String getDownLoadUrl(Map<Integer, String> musicDicMap, int order) {
		String post = HttpUtil.post(DOWNURL, "mid=" + musicDicMap.get(order).toString());
		JSONParser jsp = new JSONParser(post);
		Object byPath2 = JSONUtil.parse(jsp.parse()).getByPath(__MP3_L);
		System.out.println(byPath2);
		return byPath2.toString();
	}

	public static void main(String[] args) {
		System.out.print("请输入歌曲名称:");
		String _keyWord = new Scanner(System.in).nextLine();

		String jsonData = getSeachData(_keyWord);

		// System.out.println(jsonData);

		JSON objectJsonData = JSONUtil.parse(jsonData);

		Object listJsonData = objectJsonData.getByPath(__LIST);
		JSON listJson = JSONUtil.parse(listJsonData);
		JSONArray jsonArrayData = new JSONArray(listJson);

		Map<Integer, String> sonmidMap = getMusicDic(jsonArrayData);

		System.out.print("请输入歌曲编号:");
		int nextInt = new Scanner(System.in).nextInt();

		String downLoadUrl = getDownLoadUrl(sonmidMap, nextInt);
		System.out.println("请用浏览器打开,如果是H5播放页面,则点击播放页面省略号中的下载按钮即可");
		System.out.println(downLoadUrl);
	}
}
最近下载更多
qq1176648922  LV6 2022年11月9日
chenccf86  LV1 2022年4月28日
云翳tel青  LV11 2022年1月10日
红茶馆  LV5 2021年1月4日
zhytest  LV2 2020年12月11日
benbosn  LV15 2020年6月20日
shshopop  LV10 2020年5月7日
w5650100  LV3 2020年4月13日
oldgentleman  LV1 2020年2月16日
wei112233  LV15 2020年2月2日
最近浏览更多
xingbing  LV9 2023年2月10日
kdwz0329 2022年12月28日
暂无贡献等级
wawayv  LV2 2022年12月12日
云龙123456  LV7 2022年12月9日
qq1176648922  LV6 2022年11月9日
ijiabing  LV6 2022年10月16日
agjbvfhjbg  LV6 2022年9月2日
yangshifu  LV1 2022年6月5日
qiaofu22  LV4 2022年6月3日
crosa_Don  LV18 2022年6月1日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友