吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5204|回复: 13
收起左侧

[Python 转载] python + moresound 音乐下载脚本

[复制链接]
小天0027 发表于 2020-4-11 09:43
本帖最后由 小天0027 于 2020-4-11 09:44 编辑
最近因为无聊,又想听歌,就看了下论坛大神的帖子,然后自己写了一遍,粗糙的脚本,初学者应该也能看的懂(毕竟我也是初学的),哈哈

感谢    考拉熊  https://www.52pojie.cn/thread-823339-1-1.html,此处只是更新部分脚本,并没有集成TK,毕竟我学不会UI设计(好吧,我承认是我偷懒)

    ## 哈哈,希望有大佬可以把界面写出来,如有违规,请删除

这里我用Markdown 编辑的时候显示是白色背景,不知道发出去之后会不会变成黑色,白色背景下面有些字符显示不到,如果看到的话,可以选择代码去看,,,emmmm 还是循例说一句,此代码仅供学习使用

废话不多说,上代码

#!/usr/bin/env python

import requests
import json
from re import sub

class MoreSound(object):
        # 初始化请求头,好像要检测cookies,cookies貌似也不过期,哈哈
    def __init__(self):
        headers = {
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',
            'cookie': 'XLA_CI=524d712cbc042638e82facf37fac93e4; IP=cBUpkdzEhlphEhKRGYnYs79LiFtojigjY%252Fy1spZXf4M%253B; QQMUSIC_SIP=%5B%22http%3A//122.5.0.155/amobile.music.tc.qq.com/%22%2C%22http%3A//122.5.0.156/amobile.music.tc.qq.com/%22%2C%22http%3A//122.5.0.144/amobile.music.tc.qq.com/%22%5D; QQ=',
        }
        self.headers = headers

        #搜索歌曲并返回 歌名 以及 歌手列表
    def get_list(self, s_name):
        id_list = []
        name_list = []
        n = 1
        url = 'https://moresound.tk/music/api.php?search=mg'
        data = {
            'w': s_name,
            'p': '1',
            'n': '15',
        }
        res = requests.post(url=url, headers=self.headers, data=data)
        res = json.loads(res.text)
        info = res['song_list']
        # print(info)
        print('编号', '\t', '歌名---' , '\t','---歌手')
        for k in info:

            song_name = k['songname']
            song_name = sub('<sup.*|\n|\r|', '', str(song_name)).replace(' ', '')
            song_id = k['songmid']
            singer = k['singer'][0]['name']
            id_list.append(song_id)
            name_list.append(song_name)
            print(n, '\t', song_name+'---'+ singer)
            n += 1

        return id_list, name_list

        #得到的歌曲信息
    def get_info(self, id):
        n = 1
        type_list = []
        data = {'mid': id, }
        url = 'https://moresound.tk/music/api.php?get_song=mg'
        res = requests.post(url=url, data=data, headers=self.headers)
        res = json.loads(res.text)
        url_info = res['url']

        print('编号', '\t', '格式')

        for key, val in zip(url_info.keys(), url_info.values()):
            type_list.append(val)
            print(n, '\t', key)
            n += 1

        return type_list

        # 获取真正的url 并下载保存
    def get_real_url(self, type_id, name):
        url = 'https://moresound.tk/music/'
        url = url + type_id
        res = requests.get(url=url, headers=self.headers)
        res = json.loads(res.text)
        try:
            ty = res['suffix']
            real_url = res['url']
            r = requests.get(url=real_url, headers=self.headers, stream=False)
                                                #此处保存在F:\music文件夹,没有请新建
            with open('F:\\music\\{0}.{1}'.format(name, ty), 'wb') as f:
                f.write(r.content)
                # for chunk in r.iter_content():
                #     f.write(chunk)
        except Exception as e:
            print('暂无资源,请重新选择!')

        print('done!')

if __name__ == '__main__':
    while True:
        c = input('请输入歌名或者歌手名字,回车确认,输入Q退出!:')
        if c.lower() =='q':
            break
        a = MoreSound()
        id_list, name_list = a.get_list(c)
        # print(id_list)
        s_id = input('请输入需要下载的歌曲编号,回车确认:')
        id = id_list[int(s_id) - 1]
        name = name_list[int(s_id) - 1]
        type_list = a.get_info(id)
        t_id = input('请输入需要下载的格式,回车确认:')
        type_id = type_list[int(t_id) - 1]
        b = a.get_real_url(type_id, name)

免费评分

参与人数 3吾爱币 +6 热心值 +3 收起 理由
虎尼玛 + 1 + 1 谢谢@Thanks!
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
UPC + 1 我很赞同!

查看全部评分

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

qunaliangne 发表于 2020-4-11 10:14
刚刚试了,到了最后一步,没有资源的话,直接退出了。要重新搜索。我改了一下,没有资源格式返回请重新选择资源(只是单独一个没有),这样就不用再重新搜索歌曲。又要重新再来一遍
同样是初学者
moda 发表于 2020-4-12 13:46
我是逸先生 发表于 2020-4-11 20:08
@moda 摩狗,你的音乐站被爬了,哈哈哈。说实话,以前还以为你OK的,现在你把果核也给举报了,才发现你这人 ...

无知,那个tk都不在腾讯上班了,要不是有个沙雕在群里哔哔,我都懒得做样子给他看
UPC 发表于 2020-4-11 10:08
vethenc 发表于 2020-4-11 10:19
感谢分享
larden520 发表于 2020-4-11 10:28
文件保存名乱码
龙出天翔 发表于 2020-4-11 10:33
厉害顶一个。。
 楼主| 小天0027 发表于 2020-4-11 15:21
qunaliangne 发表于 2020-4-11 10:14
刚刚试了,到了最后一步,没有资源的话,直接退出了。要重新搜索。我改了一下,没有资源格式返回请重新选择 ...

大哥牛逼
 楼主| 小天0027 发表于 2020-4-11 15:24

不会吧,我几个朋友试过都没问题
园林艺人 发表于 2020-4-11 16:22
试了试,在下载专辑封面和歌词的时候还需要加个判断,与MV和音乐分开拼接下载链接,我这专辑封面和歌词下载失败,MV和音乐下载成功。
qunaliangne 发表于 2020-4-11 17:14

你才是大哥。这个音乐下载真的挺好的,细节多多优化,还是可行的。互相进步啊,代码这东西都是互相讨论,进步空间会更大
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-26 03:25

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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