吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11526|回复: 31
上一主题 下一主题
收起左侧

[Python 转载] 音乐下载器

  [复制链接]
跳转到指定楼层
楼主
2513002960 发表于 2020-12-19 17:02 回帖奖励
本帖最后由 2513002960 于 2020-12-19 19:01 编辑

新手贴,希望大家可以多加支持

排版可能不好看,多家见谅

前两天看到酷我新出了一个软件没发现里面周董的歌居然也可以免费听

对于苦于没有东西联系爬虫的我简直是发现了一个宝藏

打包好的软件
链接:https://shuxiaobai.lanzouj.com/iBK7Sjil7af
音乐下载成功后软件会自动关闭,这个测试用就行

下面就是我的源代码
[Python] 纯文本查看 复制代码
import os
import re
import requests

"""
获取下载连接  https://yueyue.kuwo.cn/api/service/music/audioUrl/{}
获取歌曲     http://yueyue.kuwo.cn/api/search/music/list?pn=0&rn=20&keyword={}&uid=-1&token=
"""

headers = {
    'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Mobile Safari/537.36'
}


def get_music_name(name, rn):
    url = 'http://yueyue.kuwo.cn/api/search/music/list?pn=0&rn={}&keyword={}&uid=-1&token='.format(rn, name)
    response = requests.get(url, headers=headers).json()
    return response['data']['resultList']


def get_url(id):
    url = 'https://yueyue.kuwo.cn/api/service/music/audioUrl/{}'.format(id)
    response = requests.get(url, headers=headers).json()
    return response['data']['audioUrl']


def dow(name, url):
    print(f'开始下载{name}')
    if not os.path.exists('./音乐/'):
        os.mkdir('./音乐/')
    pattern = re.compile(r"[\/\\\:\*\?\"\<\>\|]")
    name = re.sub(pattern, ' ', name)
    response = requests.get(url).content
    with open(f'./音乐/{name}.mp3', mode='wb') as f:
        f.write(response)
    print(f'{name} 下载完成')


in_name = input('请输入你要搜索的音乐: ')
in_rn = input('请输入你要搜索的数量: ')
if in_rn == '':
    rn = 11
else:
    rn = int(in_rn) + 1

datas = get_music_name(in_name, rn)
data_list = []
print('搜索到的歌曲有:')
for i in range(len(datas)):
    music_name = datas[i]['songName'] + '-' + datas[i]['artist']
    music_id = datas[i]['musicRid'].split('_')[1]
    data_list.append({"music_name": music_name, "music_id": music_id})
    print(f'{i + 1}. {music_name}')
num_in = input('请输入你要下载的音乐的序号: ')
music_url = get_url(data_list[int(num_in) - 1]['music_id'])
name = in_name + '-' + datas[int(num_in) - 1]['artist']
dow(data_list[int(num_in) - 1]['music_name'], music_url)


免费评分

参与人数 9吾爱币 +8 热心值 +7 收起 理由
堕落小南 + 1 + 1 谢谢@Thanks!
rush1981001 + 1 谢谢@Thanks!
imyyx332956 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
haimiandashu + 1 + 1 鼓励转贴优秀软件安全工具和文档!
cdsgg + 1 + 1 要不要我帮你写个ui
CN_LiuTaiLin + 1 + 1 谢谢@Thanks!
fisherpau + 1 + 1 用心讨论,共获提升!
15278066219 + 1 谢谢@Thanks!
ccspace + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
52soft 发表于 2021-12-10 20:18
为什么我用了出错呢? 出错如下
Traceback (most recent call last):
  File " .py", line 46, in <module>
    datas = get_music_name(in_name, rn)
  File " .py", line 18, in get_music_name
    return response['data']['resultList']
KeyError: 'data'
推荐
 楼主| 2513002960 发表于 2021-12-12 14:13 |楼主
52soft 发表于 2021-12-10 20:18
为什么我用了出错呢? 出错如下
Traceback (most recent call last):
  File " .py", line 46, in

时间很长了,估计接口已经有改变了
沙发
ccspace 发表于 2020-12-19 17:21
3#
 楼主| 2513002960 发表于 2020-12-19 17:35 |楼主

谢谢,第一次发帖可能有很多不对的,欢迎指出
4#
15278066219 发表于 2020-12-19 17:39
阔以阔以 自己打包使用就很可
5#
max1066399 发表于 2020-12-19 17:56
就是那个波动音乐吗,我下载后周杰伦的歌就只有一首&#128563;
6#
 楼主| 2513002960 发表于 2020-12-19 18:09 |楼主
max1066399 发表于 2020-12-19 17:56
就是那个波动音乐吗,我下载后周杰伦的歌就只有一首&#128563;

我这边都可以下载啊,不过有的不是原版的,是现场版的
7#
 楼主| 2513002960 发表于 2020-12-19 18:27 |楼主
15278066219 发表于 2020-12-19 17:39
阔以阔以 自己打包使用就很可

我每天闲着也是闲着找点事情干
8#
短腿猫不吃鱼丶 发表于 2020-12-19 18:41

谢谢@Thanks!
9#
until-you 发表于 2020-12-19 18:45
楼主  这个怎么使用呀   新手哈  谅解一下
10#
 楼主| 2513002960 发表于 2020-12-19 18:58 |楼主
until-you 发表于 2020-12-19 18:45
楼主  这个怎么使用呀   新手哈  谅解一下

等下,哈我把编译好的发上去
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 10:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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