用Python制作一款属于自己的Music Downloader

文章目录

一、创作灵感:

二、效果图:

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 = 1
    for 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 += 1
        total_list.append(list)

    print('歌名   /   歌手  /   专辑')
    print('')
    for li in total_list:
        print(li[0], li[1], li[2], li[3])
        print('')

    choice = int(input("您想下载的歌曲编号:"))-1
    url = 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.打包成功后,运行程序,下载需要的歌曲,会自动生成文件夹保存下载的歌曲。

五、结语:

到这里就全部制作完成了!喜欢的话记得点赞+关注+收藏哦!

一、《成语大全》查询方式有: 1、音序表框查询以英文字母顺序排列的该音部的第一条成语。 2、随机序号查询框显示当前成语序号,可输入随机序号查找。序号微调器可向前或向后查询。 3、多种查询功能按钮可以查询: A、直接输入成语词目查询。 B、检索码查询:按拼音字母的首字母查询,如“一帆风顺”的检索码为:“yffs”。 C、灯谜谜面反查成语:如按灯谜谜面输入“带钱进棺材”可查到成语为:“爱财如命”。 D、歇后语反查成语:如按歇后语输入“万岁爷的顺民”可以查到成语为:“安分守己”。 E、直接查询:点击列表框内的任一个成语。 F、近义词反查:输入一成语可查其相关的近义词成语。 G、反义词反查:输入一成语可查其相关的反义词成语。 4、缺字查询及字固定位置查询: A、缺字查询:在输入框输入1至4个字,如输入“爱”字可以查到带“爱”字的成语。 B、字固定位置查询:最多可选7个字位,可直接点击生肖、季节或数字实行趣味查询。 5、关键字查询:在输入框输入“高兴”,然后选择查询范围:中文解释、成语出处、应用举例、成语故事,可查出包含“高兴”在内的成语。 6、四键查询:可查第一条或最后一条、前一条、后一条。 二、学习与娱乐功能: 1、成语缺字填空:每页可以先浏览20个成语,然后填所缺的字。 2、成语顶真游戏:输入一个4字成语,最多可自动连接首尾相连的成语88个。 3、成语接龙游戏:输入一个1个首字,然后人工连接成首尾相连的成语84个。 4、猜成语灯谜游戏:每页可猜10个成语谜语。 三、成语资料: 1、每条成语包含:成语词目、拼音、近(反)义词、歇后语、灯谜面、用法、中文(日语、法语、德语、英语、俄语、西班牙语、葡萄牙语、拉丁语、意大利语)解释、成语出处、举例、故事、检索码、常用性、产生年代、结构、词性等属性。 2、软件分学生版与专业版,学生版只提供1万多条常用成语,专业版则提供成语4万1千多条。 3、所有成语资料均为本工作室输入编辑的,里面设有防盗码。 4、外文解释有多条同义解释的,在第一条后用“<>”隔开,“<>”之间有同义的用“;”隔开。英文解释中可替换的单词间用“/”号隔开。 5、外文解释中含有“()”,表示括号内的内容可以省略。 6、部分德文与法文字母存在与中文简体编码冲突,请查看readme.txt文件中有关替代问题。 7、文学作品资料的作者朝代以他死亡为准,如张岱1597-1676归为清朝人士。先秦至清朝以前划为古代,清朝至1930年划为近代,1931年至现在划为现代。 四、《成语大全》购买说明: 1、收费标准:专业版数据库文件(cydq.dbf)收费38元/份(恕不提供发票) 2、优惠办法(只能直接与作者联系生效): A、您在有关报纸上发表对《成语大全》的推介文章或评论文章,请将该报纸原件寄来可免费得到完整的专业数据库文件。 B、学生版数据库收费15元。 3、帐号如下: 开户行:中国农业银行 收款人:肖 琼 帐 号:1037522111004601964 4、付费方式: A:银行异地存款方式,将您的存款回单号、姓名(或将存款回单扫描)电邮给作者,作者落实款到后,用电子邮件发送完整的数据库文件。 B:华军软件注册中心代理注册:向注册中心缴纳注册费,然后由注册中心通知作者,由作者向用户发送完整的数据库文件。 C:天空软件注册中心代理注册:向注册中心缴纳注册费,然后由注册中心通知作者,由作者向用户发送完整的数据库文件。 (谢绝邮局汇款) 5、注意事项: 请事先检查您的电子信箱(建议使用163.com邮箱)能否接纳单个文件大小在8兆左右的文件,如不行的话,请申请一个。 6、联系地址:海南省海口市海秀西路167号金海大院204# (邮编:570311) 7、技术支持Email: [email protected] [email protected] [email protected] 您的支持就是《成语大全》美好的明天!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穿梭的编织者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值