首页>代码>教你怎么通过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);
	}
}
最近下载更多
红茶馆 LV41月4日
月亮
zhytest LV22020年12月11日
星星星星
benbosn LV82020年6月20日
月亮月亮
shshopop LV102020年5月7日
月亮月亮星星星星
w5650100 LV32020年4月13日
星星星星星星
oldgentleman LV12020年2月16日
星星
wei112233 LV152020年2月2日
月亮月亮月亮星星星星星星
a58807333 LV92020年1月7日
月亮月亮星星
139465 LV92019年12月1日
月亮月亮星星
gaomutongxue LV12019年10月23日
星星
最近浏览更多
laivie4月8日
暂无贡献等级
fy6666 LV123月31日
月亮月亮月亮
zhuiqiu LV43月23日
月亮
喵小兵 LV93月14日
月亮月亮星星
dbhelper1233月12日
暂无贡献等级
Emusuyunjian2月24日
暂无贡献等级
love丶陳 LV12月19日
星星
jy34521 LV32月8日
星星星星星星
jay1992 LV102月2日
月亮月亮星星星星
2016612843 LV21月20日
星星星星
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友