鱼C论坛

 找回密码
 立即注册
查看: 1215|回复: 0

[作品展示] 简单下载QQ音乐

[复制链接]
发表于 2020-6-1 15:32:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 aa1448176630 于 2020-6-1 15:34 编辑
import requests as r
import json
import re
import os

head={'User-Agent':'Mozilla/5.0'}
music_list=[]#歌曲链接
sname_list=[]#歌手名
name_list=[]#歌名

#m2_list=p['data']['song']['list'][i]['file']['media_mid']#歌曲mid

def find(m_list):
    for each in m_list:
        #print(each['mid'])#与media_mid相同都是歌曲mid
        
        name_list.append(each['name'])#添加歌名
        mid_list=each['file']['media_mid']#获取mid
        sname_list.append(each['singer'][0]['name'])#添加歌手名
        #print(name_list)
        
        #print(each['file']['media_mid'])
        new_url='https://y.qq.com/n/yqq/song'+'//'+mid_list+'.html'
        #print(new_url)
        data={'mid': new_url}
        req=r.post('http://www.douqq.com/qqmusic/qqapi.php',headers=head,data=data).text
        req=json.loads(req)#json解析完后还是string 并非字典 所以下面用正则获取链接
        req=req.replace('\/','/')
        p=r'm4a":"([^"]+)'
        nl=re.findall(p,req)
        music_list.append(nl)#添加歌曲链接
        
    
def document():
    i=0
    if not os.path.exists(r'C:\Users\Administrator\Desktop\music'):
        
        os.mkdir(r'C:\Users\Administrator\Desktop\music')
        os.chdir(r'C:\Users\Administrator\Desktop\music')
    
    
    for each in music_list:
        
        #print(each)
        
        if not each:
            i=i+1
            continue
        
        path=r'C:\Users\Administrator\Desktop\music'+'\\'+name_list[i]+','+sname_list[i]+'.mp3'
        with open(path,'wb+') as f:
            #print("1")
            #print(music_list[i][0],name_list[i])
            p=r.get(music_list[i][0]).content
            f.write(p)
            print(name_list[i]+','+sname_list[i]+"下载完成")
            i=i+1
            

if __name__=='__main__':
    try:
        content=input("请输入歌手名或歌名:")
        #url由抓包所得(抓搜索音乐时的url)
        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=55043609442258168&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=10&w={}&g_tk_new_20200303=5381&g_tk=5381&loginUin=229554158&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq.json&needNewCode=0'.format(content)
        res=r.get(url,headers=head)
        p=json.loads(res.text)
        m_list=p['data']['song']['list']#获取歌曲列表
    except:
        print("发生错误!!")
    find(m_list)
    document()
    

爬虫新手 只是为交作业 大佬勿喷
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 22:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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