文章目录
一、创作灵感:
二、效果图:
1.exe文件:
2.程序运行界面:
三、实现流程:
四、分步介绍:
1.引入模块:
2.完整代码:
3.打包文件:
五、结语:
一、创作灵感:
深夜整理硬盘时,总觉得自己在银河打捞星尘。每个flac文件都是凝结的月光,mp3则是封存雨声的时间胶囊。当流媒体如潮水退去,这些数字指纹依然在硬盘深处闪烁,成为对抗信号荒漠的密钥。通勤隧道里降噪耳机亮起的蓝光,机舱舷窗边播放列表的呼吸灯,失眠时蜷缩成胎儿的充电线圈——在电波无法抵达的褶皱里,我们与下载的旋律完成着最私密的量子纠缠。(DeepSeek的创作能力非常强大!)
二、效果图:
1.exe文件:
最后生成一个打包好的exe文件,可以随时运行。右下角图标是我们自己生成的,看着和其他应用没有任何违和感,哈哈!
2.程序运行界面:
没有做图形化,自己用着方便就行,有需要的伙伴可以自己研究下,做成可视化界面。
三、实现流程:
1)运用一个while死循环,提示用户输入想下载的歌曲,获取数据并保存成JSON格式。
2)提取JSON中的数据打印歌曲列表,提示用户输入需要下载第几首歌曲,传入参数并获取歌曲下载链接。
3)创建文件夹保存下载下来的歌曲。
4)打包成exe文件使用。
四、分步介绍:
1.引入模块:
requests,和os模块都是系统自带的,不需要另外安装
import requests
import os
2.完整代码:
主要通过获取 copyrightId,contentId, albumId 这三个变量来确定歌曲下载的url位置。可通过Fidddler抓包软件进行捕获分析。
import requests
import os
print('******************************\n该程序由<朱老师>提供')
print('不得用作商业用途!仅供学习!\n******************************')
while True:name = input('你想下载的歌曲名称:')# 换行print('')search_url = f'https://c.musicapp.migu.cn/v1.0/content/search_all.do?text={name}&pageNo=1&pageSize=20&isCopyright=1&sort=1&searchSwitch=%7B%22song%22%3A1%2C%22album%22%3A0%2C%22singer%22%3A0%2C%22tagSong%22%3A1%2C%22mvSong%22%3A0%2C%22bestShow%22%3A1%7D'search_res = requests.get(search_url)# 转化成JSON数据JSON = search_res.json()song_list = JSON['songResultData']['result']total_list = []count = 1for song_data in song_list:song_name = song_data['name']singers = song_data['singers'][0]['name']contentId = song_data['contentId']copyrightId = song_data['copyrightId']try:albumId = song_data['albums'][0]['id']albums_name = song_data['albums'][0]['name']list = [count,song_name,singers,albums_name,contentId,copyrightId,albumId]except:list = [count, song_name, singers, '0', contentId, copyrightId, '0']count += 1total_list.append(list)print('歌名 / 歌手 / 专辑')print('')for li in total_list:print(li[0], li[1], li[2], li[3])print('')choice = int(input("您想下载的歌曲编号:"))-1url = f'https://c.musicapp.migu.cn/MIGUM3.0/strategy/listen-url/v2.3?copyrightId={total_list[choice][5]}&contentId={total_list[choice][4]}&resourceType=2&albumId={total_list[choice][-1]}&netType=01&toneFlag=PQ'headers = {'channel': '0140210'}res = requests.get(url, headers=headers)JSON1 = res.json()down_url = JSON1['data']['url']res1 = requests.get(down_url)# 创建下载完成的歌曲需要保存的文件夹folder_path = './【朱老师为您推荐】music'if not os.path.exists(folder_path):os.makedirs(folder_path)file_path = os.path.join(folder_path, f'{name}.mp3')# 打开文件并写入内容with open(file_path, 'wb') as f:f.write(res1.content)print(f'《{name}》已经下载好了!')
3.打包文件:
1.找到上面代码生成的py文件根目录,把文件命名为 音乐下载器.py。
2.网上找一张以 ico为后缀的图标文件放入根目录中。
3.在根目录下运行cmd,安装模块,输入: pip install pyinstaller
4.回车等待安装好后输入: pyinstaller -F -i aa.ico 音乐下载器.py 进行打包操作(aa.ico是刚刚网上下载的图标文件)
5.打包成功后,运行程序,下载需要的歌曲,会自动生成文件夹保存下载的歌曲。
五、结语:
到这里就全部制作完成了!喜欢的话记得点赞+关注+收藏哦!