QQ音乐搜索

QQ音乐搜索,点歌只是一部分

API接口稳定可用 · 支持高并发请求
总调用次数: 加载中...

API接口信息

接口地址

https://yutangxiaowu.cn:3015/api/qmusic/search

请求方法

GET

请求参数

参数名 类型 是否必填 说明
key string 必填 QQ音乐搜索关键词
t number 可选
0 单曲
2 歌单
7 歌词
8 专辑
9 歌手
12 mv
pageNo string 可选 返回第几页内容
pageSize string 可选 返回每页内容数量

响应格式

JSON

响应示例(根据t值变化)

{
  "result": 100,
  "data": {
    "list": [
      {
        "albumid": 29699930,          // 专辑ID
        "albummid": "001cDTUl3t7mhW", // 专辑媒体ID
        "albumname": "等不来花开",    // 专辑名称
        "albumname_hilight": "等不来花开", // 高亮显示的专辑名称
        "songid": 370416389,          // 歌曲ID
        "songmid": "003ixYUI2lWxXJ",  // 歌曲媒体ID
        "songname": "等不来花开",     // 歌曲名称
        "singer": [                   // 歌手信息数组
          {
            "id": 8429584,
            "mid": "001Hvkjy0MJQFG",
            "name": "兰音Reine"
          }
        ],
        "interval": 139,               // 歌曲时长(秒)
        "size128": 2235455,            // 128kbps音质文件大小
        "size320": 5588324,            // 320kbps音质文件大小
        "sizeflac": 32517688,          // FLAC无损音质文件大小
        "pay": {                       // 付费信息
          "payplay": 1,                // 是否需要付费播放
          "paydownload": 1             // 是否需要付费下载
        }
      }
    ],
    "pageNo": 2,                      // 当前页码
    "pageSize": 2,                    // 每页数量
    "total": 600,                     // 总数量
    "key": "兰音",                    // 搜索关键词
    "t": "0",                         // 搜索类型
    "type": "song"                    // 结果类型
  }
}

代码示例

JavaScript (Axios)
const axios = require('axios');
const url = 'https://yutangxiaowu.cn:3015/api/qmusic/search';

// t=0:单曲, t=2:歌单, t=7:歌词, t=8:专辑, t=9:歌手, t=12:mv
axios.get(url, {
    params: {
        key: '兰音',  // 搜索关键词
        t: 0,         // 搜索类型
        pageNo: 1,    // 页码
        pageSize: 10  // 每页数量
    }
})
.then(response => {
    console.log('搜索结果:', response.data);
    // 根据不同的t值处理不同结构的返回数据
    if (response.data.result === 100) {
        switch(response.data.data.t) {
            case '0':
                console.log('单曲列表:', response.data.data.list);
                break;
            case '2':
                console.log('歌单列表:', response.data.data.list);
                break;
            case '7':
                console.log('歌词列表:', response.data.data.list);
                break;
            // 其他类型的处理
        }
    }
})
.catch(error => {
    console.error('请求失败:', error.message);
});
JavaScript (Fetch)
const apiUrl = 'https://yutangxiaowu.cn:3015/api/qmusic/search';
const searchKey = '兰音';
const searchType = 0; // t=0:单曲, t=2:歌单, t=7:歌词, t=8:专辑, t=9:歌手, t=12:mv

// 构建查询参数
const params = new URLSearchParams({
    key: searchKey,
    t: searchType,
    pageNo: 1,
    pageSize: 10
});

fetch(`${apiUrl}?${params}`)
    .then(response => response.json())
    .then(data => {
        console.log('搜索结果:', data);
        if (data.result === 100) {
            // 根据返回的类型处理数据
            console.log(`获取到${data.data.total}条${data.data.type}结果`);
            console.log('列表数据:', data.data.list);
        }
    })
    .catch(error => console.error('请求失败:', error));
Python
import requests

api_url = 'https://yutangxiaowu.cn:3015/api/qmusic/search'
params = {
    'key': '兰音',    # 搜索关键词
    't': 0,           # 搜索类型:0-单曲,2-歌单,7-歌词,8-专辑,9-歌手,12-mv
    'pageNo': 1,      # 页码
    'pageSize': 10    # 每页数量
}

response = requests.get(api_url, params=params)
data = response.json()

if data.get('result') == 100:
    print(f"搜索类型: {data['data']['type']}")
    print(f"总数量: {data['data']['total']}")
    print(f"当前页数据: {data['data']['list']}")
else:
    print(f"请求失败: {data}")
PHP
$apiUrl = 'https://yutangxiaowu.cn:3015/api/qmusic/search';
$params = [
    'key' => '兰音',    // 搜索关键词
    't' => 0,           // 搜索类型:0-单曲,2-歌单,7-歌词,8-专辑,9-歌手,12-mv
    'pageNo' => 1,      // 页码
    'pageSize' => 10    // 每页数量
];

$url = $apiUrl . '?' . http_build_query($params);
$response = file_get_contents($url);
$data = json_decode($response, true);

if ($data['result'] == 100) {
    echo "搜索类型: " . $data['data']['type'] . "\n";
    echo "总数量: " . $data['data']['total'] . "\n";
    print_r($data['data']['list']);
} else {
    echo "请求失败: " . json_encode($data);
}
Java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;

public class QQMusicApi {
    public static void main(String[] args) throws Exception {
        String apiUrl = "https://yutangxiaowu.cn:3015/api/qmusic/search";
        
        // 构建请求参数
        Map params = new HashMap<>();
        params.put("key", "兰音");    // 搜索关键词
        params.put("t", "0");         // 搜索类型:0-单曲,2-歌单,7-歌词,8-专辑,9-歌手,12-mv
        params.put("pageNo", "1");    // 页码
        params.put("pageSize", "10"); // 每页数量
        
        // 拼接参数
        StringBuilder query = new StringBuilder();
        for (Map.Entry entry : params.entrySet()) {
            if (query.length() > 0) {
                query.append("&");
            }
            query.append(URLEncoder.encode(entry.getKey(), StandardCharsets.UTF_8))
                 .append("=")
                 .append(URLEncoder.encode(entry.getValue(), StandardCharsets.UTF_8));
        }
        
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create(apiUrl + "?" + query.toString()))
            .build();
            
        client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
            .thenApply(HttpResponse::body)
            .thenAccept(response -> {
                System.out.println("搜索结果: " + response);
                // 可以使用JSON解析库(如Jackson、Gson)解析响应
            })
            .join();
    }
}
C#
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Threading.Tasks;

class Program {
    static async Task Main() {
        string apiUrl = "https://yutangxiaowu.cn:3015/api/qmusic/search";
        
        // 构建查询参数
        var parameters = new Dictionary {
            { "key", "兰音" },    // 搜索关键词
            { "t", "0" },         // 搜索类型:0-单曲,2-歌单,7-歌词,8-专辑,9-歌手,12-mv
            { "pageNo", "1" },    // 页码
            { "pageSize", "10" }  // 每页数量
        };
        
        using var client = new HttpClient();
        var content = new FormUrlEncodedContent(parameters);
        string queryString = await content.ReadAsStringAsync();
        
        string response = await client.GetStringAsync(
            $"{apiUrl}?{queryString}"
        );
        
        Console.WriteLine("搜索结果: " + response);
        // 可以使用Newtonsoft.Json解析JSON响应
    }
}
Ruby
require 'net/http'
require 'uri'
require 'json'

api_url = 'https://yutangxiaowu.cn:3015/api/qmusic/search'

# 构建请求参数
params = { 
  key: '兰音',    # 搜索关键词
  t: 0,           # 搜索类型:0-单曲,2-歌单,7-歌词,8-专辑,9-歌手,12-mv
  pageNo: 1,      # 页码
  pageSize: 10    # 每页数量
}

uri = URI.parse(api_url)
uri.query = URI.encode_www_form(params)

response = Net::HTTP.get_response(uri)
data = JSON.parse(response.body)

if data['result'] == 100
  puts "搜索类型: #{data['data']['type']}"
  puts "总数量: #{data['data']['total']}"
  puts "列表数据: #{data['data']['list'].inspect}"
else
  puts "请求失败: #{data}"
end
Go
package main

import (
    "fmt"
    "net/http"
    "net/url"
    "io/ioutil"
    "encoding/json"
)

func main() {
    apiUrl := "https://yutangxiaowu.cn:3015/api/qmusic/search"
    
    // 构建请求参数
    params := url.Values{}
    params.Add("key", "兰音")    // 搜索关键词
    params.Add("t", "0")         // 搜索类型:0-单曲,2-歌单,7-歌词,8-专辑,9-歌手,12-mv
    params.Add("pageNo", "1")    // 页码
    params.Add("pageSize", "10") // 每页数量
    
    resp, err := http.Get(apiUrl + "?" + params.Encode())
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()
    
    body, _ := ioutil.ReadAll(resp.Body)
    
    // 解析JSON响应
    var result map[string]interface{}
    json.Unmarshal(body, &result)
    
    if result["result"] == float64(100) {
        data := result["data"].(map[string]interface{})
        fmt.Printf("搜索类型: %s\n", data["type"])
        fmt.Printf("总数量: %v\n", data["total"])
        fmt.Printf("列表数据: %v\n", data["list"])
    } else {
        fmt.Printf("请求失败: %s\n", body)
    }
}
Swift
import Foundation

let apiUrl = "https://yutangxiaowu.cn:3015/api/qmusic/search"
let searchKey = "兰音"
let searchType = 0 // 搜索类型:0-单曲,2-歌单,7-歌词,8-专辑,9-歌手,12-mv

// 构建查询参数
var components = URLComponents(string: apiUrl)!
components.queryItems = [
    URLQueryItem(name: "key", value: searchKey),
    URLQueryItem(name: "t", value: "\(searchType)"),
    URLQueryItem(name: "pageNo", value: "1"),
    URLQueryItem(name: "pageSize", value: "10")
]

if let url = components.url {
    let task = URLSession.shared.dataTask(with: url) {
        data, response, error in
        if let data = data {
            if let jsonString = String(data: data, encoding: .utf8) {
                print("搜索结果: \(jsonString)")
                // 可以使用JSONSerialization解析响应
            }
        }
    }
    task.resume()
}
Kotlin
import java.net.URLEncoder
import java.net.URL
import com.google.gson.Gson

data class ApiResponse(
    val result: Int,
    val data: Data?
)

data class Data(
    val list: List,
    val pageNo: Int,
    val pageSize: Int,
    val total: Int,
    val key: String,
    val t: String,
    val type: String
)

fun main() {
    val apiUrl = "https://yutangxiaowu.cn:3015/api/qmusic/search"
    val key = "兰音"
    val t = 0 // 搜索类型:0-单曲,2-歌单,7-歌词,8-专辑,9-歌手,12-mv
    
    // 构建查询参数
    val params = listOf(
        "key=${URLEncoder.encode(key, "UTF-8")}",
        "t=$t",
        "pageNo=1",
        "pageSize=10"
    ).joinToString("&")
    
    val url = URL("$apiUrl?$params")
    val response = url.readText()
    
    // 解析JSON响应
    val gson = Gson()
    val apiResponse = gson.fromJson(response, ApiResponse::class.java)
    
    if (apiResponse.result == 100 && apiResponse.data != null) {
        println("搜索类型: ${apiResponse.data.type}")
        println("总数量: ${apiResponse.data.total}")
        println("列表数据: ${apiResponse.data.list}")
    } else {
        println("请求失败: $response")
    }
}

在线测试工具