美文网首页
如何让不给听得歌乖乖听话?python教你如何做...

如何让不给听得歌乖乖听话?python教你如何做...

作者: 颜狗一只 | 来源:发表于2022-10-18 16:57 被阅读0次

    前言

    嗨喽,大家好呀~这里是爱看美女的茜茜呐

    又到了学Python时刻~

    在面对想听的歌没得权时,正常人一般的操作是百度一下又或者直接找朋友借

    但是程序员就不一样了~直接展示一手如何用Python 实现通过输入歌手名或歌名一秒下载 ~


    第三方库:

    • requests >>> pip install requests

    • prettytable >>> pip install PrettyTable


    开发环境:

    • 版 本: python 3.8

    • 编辑器:pycharm 2021.2


    如果安装python第三方模块:

    1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车

    2. 在pycharm中点击Terminal(终端) 输入安装命令


    如何配置pycharm里面的python解释器?

    1. 选择file(文件) >>> setting(设置) >>> Project(项目) >>> python interpreter(python解释器)

    2. 点击齿轮, 选择add

    3. 添加python安装路径


    pycharm如何安装插件?

    1. 选择file(文件) >>> setting(设置) >>> Plugins(插件)

    2. 点击 Marketplace 输入想要安装的插件名字 比如:翻译插件 输入 translation / 汉化插件 输入 Chinese

    3. 选择相应的插件点击 install(安装) 即可

    4. 安装成功之后 是会弹出 重启pycharm的选项 点击确定, 重启即可生效


    分析思路(分析数据来源)

    现搜索功能, 获取到所有我们要下载的音乐

    下载音乐的功能

    实现代码:

    1. 发送请求

    2. 获取数据

    3. 解析数据 想要的内容提取出来

    4. 保存数据

    原理:

    模拟 客户端 向 服务器 发送请求

    代码

    导入模块

    import requests          # 第三方模块 额外安装的
    import prettytable as pt # 第三方模块 打印的内容 变好看
    

    Python版本: 越新 新的功能也就越多 但是可能不稳定 3.9以上

    太老了的版本 3.5 以下

    key = input('搜索音乐/歌手:')
    rn = input('请输入歌曲数量:')
    pn = input('请输入页码:')
    

    f 是往字符串里面传变量 类似于format

    因为代码里有链接,不给过的,所以我只能截个图展示一下,你们可以根据下方图片添加完整哦~

    加入伪装,以防识别出不是浏览器

    headers = {
        'Cookie': '_ga=GA1.2.1545626940.1657202295; uname3=%u3002; t3kwid=168444131; userid=168444131; websid=1306648885; pic3="http://q.qlogo.cn/qqapp/100243533/92BBD7D4B7F9106BA10CBE2CD0A7FA92/100"; t3=qq; Hm_lvt_cdb524f42f0ce19b169a8071123a4797=1665230479; _gid=GA1.2.404923496.1665230479; Hm_lpvt_cdb524f42f0ce19b169a8071123a4797=1665231228; kw_token=CVYN9V11H8C',
        'csrf': 'CVYN9V11H8C',
    
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'
    }
    

    1. 发送请求

    get/post

    response = requests.get(url=url, headers=headers)
    

    2. 获取数据

    json_data = response.json()
    

    3. 解析数据

    怎么取?

    字典 数据容器

    存储数据 快速的定位到数据位置

    我可以通过:前面的内容快速定位到:后面的内容

    data_list = json_data['data']['list']
    tb = pt.PrettyTable()   # 新建了一个表格
    count = 0               # 定义一个序号
    tb.field_names = ['序号', '歌曲名称', '歌手名', '音乐链接']
    info_list = []
    # [{字典}, {}, {}, {}]
    for data in data_list:
        name = data['name']
        artist = data['artist']
        rid = data['rid']
    

    print(rid, name, artist)

    往表格里面添加数据

    代码操作 大家 只可以用于学习, 切勿商用

        music_url = requests.get(info_url).json()['data']['url']
        tb.add_row([count, name, artist, music_url])
        info_list.append([name, artist, music_url])
        count += 1
    print(tb)
    
    # 死循环
    while True:
        index = int(input("请输入你要下载的歌曲序号(-1退出):"))
        if index == -1:
            break
        name = info_list[index][0]
        artist = info_list[index][1]
        music_url = info_list[index][2]
        # 音频 / 视频 / 图片 二进制的形式
        music_data = requests.get(music_url).content
    

    4. 保存数据

        with open(f'music/{name}-{artist}.mp3', mode='wb') as f:
            f.write(music_data)
            print(f'{name}-{artist} 下载成功!!!')
    

    效果

    我们可以通过输入歌名或者歌手名来搜索

    先试试Eason的,来个一页,十首歌~

    这时候要下载哪首直接就输入对应序号即可

    这里我选择了0号孤勇者

    2首网抑云是听不了的,一首是VIP的

    尾语 💝

    感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

    希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

    躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

    最后,博主要一下你们的三连呀(点赞、评论、收藏),不要钱的还是可以搞一搞的嘛~

    不知道评论啥的,即使扣个6666也是对博主的鼓舞吖 💞 感谢 💐

    相关文章

      网友评论

          本文标题:如何让不给听得歌乖乖听话?python教你如何做...

          本文链接:https://www.haomeiwen.com/subject/kifszrtx.html