在CSDN中,许多的听音乐代码是在用户已有一个音乐的MP3文件的情况下实现自动播放音频。接下来的代码可以实现你说什么音乐,他就放什么音乐。

首先我们来分析一下实现这个功能分为那几步骤。

用户输入歌名/歌手——>自动上网查询——>自动保存到pythonproject文件——>自动打开保存文件

这些步骤我们可以进行归纳为两部分:保存目标歌曲、打开保存文件

保存目标歌曲代码:

'''
自动下载QQ音乐制定歌手的歌曲到本地MP3
'''import requests
import json
import os #插入几个包headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'
}                     #模拟
def get_music_info():"""搜索功能"""music_info_list = []name = input('请输入歌手或歌曲:')   #获取用户想要的内容page = 1num = 1url = f'https://c.y.qq.com/soso/fcgi-bin/client_search_cp?p={page}&n={num}&w={name}'response = requests.get(url, headers=headers).text  # 获取到的是字符串# 将response切分成json格式 类似字典 但是现在还是字符串music_json = response[9:-1]# json转字典music_data = json.loads(music_json)  # 转换成 字典# print(music_data)music_list = music_data['data']['song']['list']for music in music_list:music_name = music['songname']  # 歌曲的名字singer_name = music['singer'][0]['name']  # 歌手的名字songmid = music['songmid']music_info_list.append((music_name, singer_name, songmid))return music_info_list
def get_purl(music_info_list):"""单首歌曲地址拼接"""music_data = []for music in music_info_list:music_name = music[0]singer_name = music[1]songmid = music[2]url = 'https://u.y.qq.com/cgi-bin/musicu.fcg?data={"req":{"module":"CDN.SrfCdnDispatchServer","method":"GetCdnDispatch","param":{"guid":"8846039534","calltype":0,"userip":""}},"req_0":{"module":"vkey.GetVkeyServer","method":"CgiGetVkey","param":{"guid":"8846039534","songmid":["%s"],"songtype":[0],"uin":"1152921504784213523","loginflag":1,"platform":"20"}},"comm":{"uin":"1152921504784213523","format":"json","ct":24,"cv":0}}' % songmidresponse = requests.get(url, headers=headers).json()purl = response['req_0']['data']['midurlinfo'][0]['purl']full_media_url = 'http://dl.stream.qqmusic.qq.com/' + purlmusic_data.append({'music_name': music_name,'singer_name': singer_name,'full_media_url': full_media_url})return music_data
def save_music_mp3(music_data):"""下载歌曲"""if not os.path.exists('歌曲下载'):os.mkdir('歌曲下载')for music in music_data:music_name = music['music_name']singer_name = music['singer_name']full_url = music['full_media_url']music_response = requests.get(full_url, headers=headers).content       #歌曲下载with open('歌曲下载/%s-%s.mp3' % (music_name, singer_name), 'wb')as fp:fp.write(music_response)print('[%s]保存成功!' % music_name)    #成功反馈if __name__ == '__main__':music_info_list = get_music_info()music_data = get_purl(music_info_list)save_music_mp3(music_data)

通过这段代码可以把音乐保存到一个叫“歌曲下载” 的文件中

那么如何把保存的文件自动打开呢?我们可以用Chromedriver打开

打开保存歌曲代码:

    for music in music_data:music_name = music['music_name']singer_name = music['singer_name']x = (music_name + "-" + singer_name)print(x)   #变量x就是我们刚刚那段代码保存下来的音乐名# coding = utf-8from time import sleepimport osfrom selenium import webdriverbrowser = webdriver.Chrome()# browser.get('http://www.baidu.com/')browser.get('file:///D:/PycharmProjects/pythonProject2/歌曲下载/'+ x + ".mp3") #路径可以自行修改login_form = browser.find_element_by_id('auto').click()# 等待5秒sleep(10 * 60)# 退出browser.quit()

最终代码:

'''
自动下载QQ音乐制定歌手的歌曲到本地MP3
'''import requests
import json
import os
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'
}
def get_music_info():"""搜索功能"""music_info_list = []name = input('请输入歌手或歌曲:')  #page = 1num = 1url = f'https://c.y.qq.com/soso/fcgi-bin/client_search_cp?p={page}&n={num}&w={name}'response = requests.get(url, headers=headers).text  # 获取到的是字符串# 将response切分成json格式 类似字典 但是现在还是字符串music_json = response[9:-1]# json转字典music_data = json.loads(music_json)  # 转换成 字典# print(music_data)music_list = music_data['data']['song']['list']for music in music_list:music_name = music['songname']  # 歌曲的名字singer_name = music['singer'][0]['name']  # 歌手的名字songmid = music['songmid']music_info_list.append((music_name, singer_name, songmid))return music_info_list
def get_purl(music_info_list):"""单首歌曲地址拼接"""music_data = []for music in music_info_list:music_name = music[0]singer_name = music[1]songmid = music[2]url = 'https://u.y.qq.com/cgi-bin/musicu.fcg?data={"req":{"module":"CDN.SrfCdnDispatchServer","method":"GetCdnDispatch","param":{"guid":"8846039534","calltype":0,"userip":""}},"req_0":{"module":"vkey.GetVkeyServer","method":"CgiGetVkey","param":{"guid":"8846039534","songmid":["%s"],"songtype":[0],"uin":"1152921504784213523","loginflag":1,"platform":"20"}},"comm":{"uin":"1152921504784213523","format":"json","ct":24,"cv":0}}' % songmidresponse = requests.get(url, headers=headers).json()purl = response['req_0']['data']['midurlinfo'][0]['purl']full_media_url = 'http://dl.stream.qqmusic.qq.com/' + purlmusic_data.append({'music_name': music_name,'singer_name': singer_name,'full_media_url': full_media_url})return music_data
def save_music_mp3(music_data):"""下载歌曲"""if not os.path.exists('歌曲下载'):os.mkdir('歌曲下载')for music in music_data:music_name = music['music_name']singer_name = music['singer_name']full_url = music['full_media_url']music_response = requests.get(full_url, headers=headers).contentwith open('歌曲下载/%s-%s.mp3' % (music_name, singer_name), 'wb')as fp:fp.write(music_response)print('[%s]保存成功!' % music_name)if __name__ == '__main__':music_info_list = get_music_info()music_data = get_purl(music_info_list)save_music_mp3(music_data)for music in music_data:music_name = music['music_name']singer_name = music['singer_name']x = (music_name + "-" + singer_name)print(x)# coding = utf-8from time import sleepimport osfrom selenium import webdriverbrowser = webdriver.Chrome()# browser.get('http://www.baidu.com/')browser.get('file:///D:/PycharmProjects/pythonProject2/歌曲下载/'+ x + ".mp3")login_form = browser.find_element_by_id('auto').click()# 等待5秒sleep(10 * 60)# 退出browser.quit()

以上代码就可以实现自动播放音乐这个功能了

基于python实现在线听音乐(QQ音乐)相关推荐

  1. xmd后缀名改mp3_GitHub - dh9527/xMDPlayer: 一个可以在线听网易云音乐、QQ音乐、酷狗音乐的音乐播放器,还可以让你听自己的网易云歌单哦!...

    xMDPlayer 一个可以在线听网易云音乐.QQ音乐.酷狗音乐的音乐播放器,还可以让你听自己的网易云歌单哦! A player that can make you listen to music o ...

  2. 基于Python的在线音乐推荐系统的设计与实现

     源码获取:https://www.bilibili.com/video/BV1Ne4y1g7dC/ 基于Python的在线音乐推荐系统是一个基于Internet,采用PYTHON技术开发的服务于音乐 ...

  3. 【史上最强代码编辑器VS Code】之VS Code 在线听网易云音乐

    VS Code 在线听网易云音乐 一.vsc-netease-music简介 二.替换ffmpeg 动态链接库 版本更新时间:2020年7月30日10:26:25 三.安装并使用 一.vsc-nete ...

  4. Python数据分析初探项目 基于Python数据可视化的网易云音乐歌单分析系统 大学编程作业(TUST 天津科技大学 2022年)

    Python 数据分析初探项目 基于 Python 数据可视化的网易云音乐歌单分析系统 大学编程作业(TUST 天津科技大学 2022 年) Python 数据分析初探项目 基于 Python 数据可 ...

  5. 【基于python+Django的物品协同过滤音乐推荐系统-哔哩哔哩】 https://b23.tv/V2zN54R

    [基于python+Django的物品协同过滤音乐推荐系统-哔哩哔哩] https://b23.tv/V2zN54R https://b23.tv/V2zN54R

  6. 大数据信息资料采集:网易云音乐QQ音乐歌曲基本信息及评论采集爬虫

    大数据信息资料采集:网易云音乐QQ音乐歌曲基本信息及评论采集 数据采集满足多种业务场景:适合产品.运营.销售.数据分析.政府机关.电商从业者.学术研究等多种身份职业. 舆情监控:全方位监测公开信息,抢 ...

  7. 计算机毕业设计django基于python智能在线考试阅卷系统

    项目介绍 随着计算机多媒体技术的发展和网络的普及.采用当前流行的B/S模式以及3层架构的设计思想通过Python技术来开发此系统的目的是建立一个配合网络环境的基于python的学校对在线考试阅卷系统的 ...

  8. 基于Python的在线办公系统的设计和实现

    <基于Python的在线办公系统的设计和实现>该项目采用技术Python的django框架.mysql数据库,项目含有源码.论文.PPT.配套开发软件.软件安装教程.项目发布教程.核心代码 ...

  9. 基于python的在线音乐系统设计与实现

    摘 要 本音乐系统借助了当前互联网的发展趋势,近几年,随着网络的快速发展,网络已经融入人们的生活中.互联网给人们的生活带来了许多便利,基本上可以达到足不出户就能完成许多事情.互联网的使用基本实现全覆盖 ...

最新文章

  1. Java:何时使用静态方法
  2. Qt多线程示例--并发数据处理
  3. PerfLab(直接在服务器上完成)
  4. “宝藏”大会NVIDIA GTC Digital来袭!这些AI前沿课程不容错过
  5. 从零点五开始用Unity做半个2D战棋小游戏(九)
  6. python中时间处理去空格去冒号_Python实用日期时间处理方法汇总
  7. .NET的轻量级IOC框架芮双随笔
  8. 深度学习在Airbnb搜索推荐中的应用实践
  9. Hive中Database、Table的创建与查询
  10. rhel 6.4 增加光盘为yum repo
  11. python读取word element_Python:通过解析word将文本从docx提取到txt/文档.xm
  12. Android从assets和res中读取文件
  13. byte 类型_Go 语言string 也是引用类型
  14. 安卓能硬改的手机机型_这款iPhone手机专属特效AR相机,我真的爱了
  15. 用python完成《商务与经济统计(第13版)》课后练习——第九章
  16. 软件开发流程知识概括
  17. ARM.CMSIS.3.20.4.pack和Keil.STM32F1xx_DFP.1.0.5.pack这两个文件的意义
  18. GLSL到HLSL参考
  19. 递归实现在级联选择器中选择部门下的人员
  20. python N位水仙花数

热门文章

  1. URL编码 | quoted-printable编码
  2. 定积分的基本性质2 乘积可积性
  3. android6.0 cta认证,什么是CTA认证?CTA进网许可认证。
  4. Flutter 日期转换
  5. dedecms_标签调取大全
  6. A block IDR(s) method for nonsymmetric linear systems with multiple right-hand sides
  7. 斐讯N1 – 完美刷机Armbian教程
  8. 放回不等概率抽样-PPS抽样
  9. 一名大学生选择军哥的乾颐堂是如何顺利通过华为HCIE的,又如何应对HCIE面试呢?...
  10. Codeforces Round #521 (Div. 3) B. Disturbed People