//go下载qq音乐 
package main import (
_ "fmt"
jsoniter "github.com/json-iterator/go"
"io"
"io/ioutil"
"net/http"
"os"
"strconv"
) //练习json解析
//var jsonStr = `{
//"code":0,
//"data":{
//"keyword":"桥边娘",
//"priority":0,
//"qc":[{"text":"桥边姑娘","type":1}],"semantic":{"curnum":0,"curpage":1,"list":[],"totalnum":0},
//"song":{
//"curnum":2,
//"curpage":1,
//"list":[
//{"action":{"alert":2,"icons":8527740,"msg":14,"switch":17413891},
//"album":{"id":9160555,"mid":"0037Yq3H3RznaX","name":"桥边姑娘","pmid":"0037Yq3H3RznaX_1","subtitle":"","title":"桥边姑娘","title_hilight":"<em>桥边姑娘</em>"},"chinesesinger":0,"desc":"","desc_hilight":"","docid":"126909805796459913","file":{"b_30s":0,"e_30s":60000,"media_mid":"001zLvbN1NYMuv","size_128":2931359,"size_128mp3":2931359,"size_320":7328081,"size_320mp3":7328081,"size_aac":4442882,"size_ape":0,"size_dts":0,"size_flac":20665526,"size_ogg":4495348,"size_try":960887,"strMediaMid":"001zLvbN1NYMuv","try_begin":56459,"try_end":84621},"fnote":4009,"genre":0,"grp":[],"id":244625442,"index_album":1,"index_cd":0,"interval":183,"isonly":1,"ksong":{"id":6374470,"mid":"002Rn3IH1mlv0E"},"language":0,"lyric":"","lyric_hilight":"","mid":"001zLvbN1NYMuv","mv":{"id":0,"vid":""},"name":"桥边姑娘","newStatus":1,"nt":87800508,"pay":{"pay_down":1,"pay_month":1,"pay_play":0,"pay_status":0,"price_album":0,"price_track":200,"time_free":0},"pure":0,
//"singer":[{"id":1294564,"mid":"0041vdG63lbLge","name":"海伦","title":"海伦","title_hilight":"海伦","type":0,"uin":0}],
//"status":0,"subtitle":"","t":1,"tag":11,"time_public":"2019-11-09",
//"title":"桥边姑娘",
//"title_hilight":"<em>桥边姑娘</em>",
//"type":0,
//"url":"http://stream10.qqmusic.qq.com/244625442.wma","ver":0,
//"volume":{"gain":-7.768000125885010,"lra":9.609000205993652,"peak":0.9330000281333923}},
//{"action":{"alert":11,"icons":135752,"msg":0,"switch":77587},
//"album":{"id":0,"mid":"","name":"","pmid":"","subtitle":"","title":"","title_hilight":""},
//"chinesesinger":0,"desc":"","desc_hilight":"","docid":"8751829731153775463",
//"file":
//{"b_30s":0,"e_30s":0,"media_mid":"001fkaP431i0UO","size_128":2956833,"size_128mp3":2956833,"size_320":7391798,"size_320mp3":7391798,"size_aac":4415052,"size_ape":0,"size_dts":0,"size_flac":0,"size_ogg":3851434,"size_try":0,"strMediaMid":"001fkaP431i0UO","try_begin":0,"try_end":0},
//"fnote":8013,"genre":0,"grp":[],"id":127400312,"index_album":0,"index_cd":0,"interval":184,"isonly":0,
//"ksong":{"id":0,"mid":""},
//"language":0,"lyric":"","lyric_hilight":"",
//"mid":"002rI3Yb1nZjPy",
//"mv":{"id":0,"vid":""},
//"name":"桥边姑娘","newStatus":1,"nt":1324451929,"pay":{"pay_down":0,"pay_month":0,"pay_play":0,"pay_status":0,"price_album":0,"price_track":0,"time_free":0},"pure":0,
//"singer":[{"id":3209257,"mid":"001a520s0HBgIS","name":"张茜","title":"张茜","title_hilight":"张茜","type":1,"uin":0}],"status":0,"subtitle":"","t":1,"tag":0,"time_public":"","title":"桥边姑娘","title_hilight":"<em>桥边姑娘</em>","type":0,"url":"http://stream10.qqmusic.qq.com/127400312.wma","ver":0,
//"volume":{"gain":0.0,"lra":0.0,"peak":0.0}}],"totalnum":600},"tab":0,"taglist":[],"totaltime":0,"zhida":{"type":null}},
//"message":"",
//"notice":"",
//"subcode":0,
//"time":1578533969,
//"tips":""
//}` type Datas struct {
Code int `json:"code"`
Message string `json:"message"`
Time int `json:"time"`
Data Data `json:"data"`
}
type Data struct {
Keyword string `json:"keyword"`
Song Song `json:"song"`
} type Song struct {
Curnum int `json:"curnum"`
List []List `json:"list"`
} type List struct {
Title string `json:"title"`
TimePublic string `json:"time_public"`
Mid string `json:"mid"`
Name string `json:"name"`
ID int `json:"id"`
File File `json:"file"`
Album Album `json:"album"`
Singer []Singer `json:"singer"`
} type Singer struct {
Name string `json:"name"`
} type File struct {
StrMediaMid string `json:"strMediaMid"`
} type Album struct {
Name string `json:"name"`
} type Lyric struct {
UserIp string `json:"userip"`
Data LyData `json:"data"`
}
type LyData struct {
Expiration int `json:"expiration"`
Items []Item `json:"items"`
}
type Item struct {
Vkey string `json:"vkey"`
} /**
下载QQ音乐
@param string keyword 歌曲名称关键词
@param int num 需要下载的歌曲数量
*/
func download(keyword string, num int) {
pathPwd, _ := os.Getwd()
url := "https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song" +
"&searchid=57124856116396257&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&" +
"n=" + strconv.Itoa(num) + "&w=" + keyword + "&g_tk=5381&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq&needNewCode=0"
resp, err := http.Get(url)
if err != nil {
println("get出错", err)
return
} defer resp.Body.Close()
jsonstr, err := ioutil.ReadAll(resp.Body)
if err != nil {
println(err)
return
}
jsonStr := jsonstr
strMediaMids := []string{}
songmids := []string{}
songnames := []string{}
singers := []string{}
albumns := []string{}
songid := []int{}
data := Datas{}
var json2 = jsoniter.ConfigCompatibleWithStandardLibrary
_ = json2.Unmarshal([]byte(jsonStr), &data)
//fmt.Println(data.Data.Song.List)
for _, v := range data.Data.Song.List {
strMediaMids = append(strMediaMids, v.File.StrMediaMid)
songmids = append(songmids, v.Mid)
songnames = append(songnames, v.Name)
singers = append(singers, v.Singer[0].Name)
albumns = append(albumns, v.Album.Name)
songid = append(songid, v.ID)
} for k, v := range strMediaMids {
//将strMediaMids和songmids重新组合到url中
url2 := "https://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg?&jsonpCallback=MusicJsonCallback&format=json&cid=205361747&songmid=" + songmids[k] + "&filename=C400" + v + ".m4a&guid=6612300644"
println(url2)
resp, err := http.Get(url2)
if err != nil {
println("get出错", err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
println("出错了", err)
return
}
var filter = Lyric{}
json2.Unmarshal([]byte(body), &filter)
vkey := filter.Data.Items[0].Vkey
//这是最终的歌曲url
song_url := "http://dl.stream.qqmusic.qq.com/C400" + v + ".m4a?vkey=" + vkey + "&guid=6612300644&uin=0&fromtag=66"
//歌词url
lyric_url := "https://c.y.qq.com/lyric/fcgi-bin/fcg_query_lyric.fcg?nobase64=1&musicid=" + strconv.Itoa(songid[k]) + "&callback=jsonp1&g_tk=5381&jsonpCallback=json&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq&needNewCode=0"
client := &http.Client{}
refer := "https://y.qq.com/n/yqq/song/" + songmids[k] + ".html"
request, err := http.NewRequest("GET", lyric_url, nil)
request.Header.Add("Referer", refer)
request.Header.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36")
response, err := client.Do(request)
defer response.Body.Close()
if err != nil {
return
}
body2, err := ioutil.ReadAll(response.Body)
if err != nil {
println("出错了", err)
return
}
println(string(body2))
println("正在下载--->" + songnames[k])
res, err := http.Get(song_url)
if err != nil {
panic(err)
}
//f, err := os.Create(pathPwd + "/" + songnames[k] + strconv.Itoa(k+1) + ".mp3")
f, err := os.Create(pathPwd + "/" + songnames[k] + ".mp3")
if err != nil {
panic(err)
}
io.Copy(f, res.Body)
println("下载第" + strconv.Itoa(k+1) + "首<" + songnames[k] + ">已经保存成功嘿嘿嘿~~~") }
} func main() {
//传参形式
//if len(os.Args) <= 1 {
// fmt.Println("请输入需要下载的音乐名称.")
// return
//}
//fmt.Println("音乐名称 ", os.Args[1])
//num := os.Args[2]
//println(num)
//todo:可以加入协程来耍耍
download("冯提莫", 3)
}

  go版本下载qq音乐 略有粗糙 见谅 见谅

go 下载qq音乐的更多相关文章

  1. 亲测可用!免费下载QQ音乐大部分资源!

    优化后亲测可用!免费下载QQ音乐大部分资源 通知 时间问题 博客园这边暂时停更要下载的去GitHub或者90盘 GitHub项目地址 https://github.com/TotoWang-hhh/m ...

  2. Python 应用爬虫下载QQ音乐

    Python应用爬虫下载QQ音乐 目录: 1.简介怎样实现下载QQ音乐的过程: 2.代码 1.下载QQ音乐的过程 首先我们先来到QQ音乐的官网: https://y.qq.com/,在搜索栏上输入一首 ...

  3. 爬虫下载QQ音乐:获取所有歌手-每个歌手的专辑-每个专辑里的歌曲

    # coding=utf-8 # !/usr/bin/env python ''' author: dangxusheng desc : 稍微有点难度,需要多次请求获取key date : 2018- ...

  4. JY播放器【QQ音乐破解下载】

    今天给大家带来一款神器----JY播放器.可以直接下载QQ音乐的歌曲. 目前已经支持平台(蜻蜓FM.喜马拉雅FM.网易云音乐.QQ音乐) 使用方法: 在网页打开QQ音乐网站找到你要听的歌曲或歌单.复制 ...

  5. Deepin-安装QQ音乐(Windows程序)

    打开命令行,输入: sudo apt-get install wine 安装完成后,下载QQ音乐的安装包 然后安装 示例:wine xx.exe 实例:wine QQMusic.exe 安装完成,启动 ...

  6. python3 爬取qq音乐作者所有单曲 并且下载歌曲

    1 import requests import re import json import os # 便于存放作者的姓名 zuozhe = [] headers = {'User-Agent': ' ...

  7. QQ音乐MP3下载

    QQ音乐MP3下载 没错本次写的内容的对象是我们熟知的QQ Music. 本篇文章涉及内容包括:Python,爬虫,json解析,request 库的使用 缘起 前几天刷B站无意中又刷到了一首神曲,“ ...

  8. 转发一个关于下载qq无损音乐的博客

    import requests import json headers = { 'Host': 'c.y.qq.com', 'Referer': 'http://c.y.qq.com/', 'User ...

  9. Python Scrapy的QQ音乐爬虫 音乐下载、爬取歌曲信息、歌词、精彩评论

    QQ音乐爬虫(with scrapy)/QQ Music Spider UPDATE 2019.12.23 已实现对QQ音乐文件的下载,出于版权考虑,不对此部分代码进行公开.此项目仅作为学习交流使用, ...

随机推荐

  1. 多因素线性回归|adjusted R^2|膨胀系数|非线性回归|Second-order model with 1 independent variable|Interaction model with 2 independent variables|偏相关|fraction[a]|contribution

    多因素线性回归 系数由最小二乘法得到 R^2;adjusted R^2:变量变多之后,r^2自然变大,但是这不是反应客观事实,所以引入了adjusted R^2 使用散点图看独立性,也可以使用软件,c ...

  2. Linux修改主机名称方法

    碰到这个问题的时候,是在安装Zookeeper集群的时候,碰到如下问题 java.net.UnknownHostException: XXXX Name or service not knownjav ...

  3. Date类与SimpleDateFormat类中parse()方法和format()方法

    package ppt11util类; import java.text.ParseException; import java.text.SimpleDateFormat; import java. ...

  4. iOS电商常见动画与布局、微信悬浮窗、音乐播放器、歌词解析、拖动视图等源码

    iOS精选源码 MXScroll 介绍 混合使用UIScrollView ios 电商demo(实现各种常见动画效果和页面布局) 一行代码集成微信悬浮窗 可拖动,大小的视图,可放置在屏幕边缘. 在使用 ...

  5. Golang os/exec 实现

    os/exec 实现了golang调用shell或者其他OS中已存在的命令的方法. 本文主要是阅读内部实现后的一些总结. 如果要运行ls -rlt,代码如下: package main import ...

  6. Windows下的GUI 库

    Windows 下的 GUI 解决方案比较多: 基于 C++ 的有 Qt.MFC.WTL.wxWidgets.DirectUI.Htmlayout: 基于 C# 的有 WinForm.WPF: 基于 ...

  7. springboot 配置热部署 及 热部署后依旧是404的坑

    springboot配置热部署的教程网上一大堆: 个人喜欢这种方式: https://www.cnblogs.com/winner-0715/p/6666579.html 本文主要强调的是,大家如果配 ...

  8. 接口测试-chap3-https请求证书问题

    接口地址如果是HTTPS,需要安装证书,或者在发送请求时传入参数verify=False,表示忽略 res = requests.get(url, verify=False)

  9. Nginx 原理和架构

    Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器.Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名Nginx 里 ...

  10. Luogu_2876_[USACO07JAN]解决问题Problem Solving

    题目描述 过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目. 精确地说,他们有\(P(1 \leq P \leq 300)\)道题目要做. 他们还离开了农场并且象普通人一 ...