当前位置: 首页 > news >正文

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

前言

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

又到了学Python时刻~

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

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


目录

    • 前言
    • 第三方库:
    • 开发环境:
      • 如果安装python第三方模块:
      • 如何配置pycharm里面的python解释器?
      • pycharm如何安装插件?
    • 分析思路(分析数据来源)
      • 实现代码:
    • 代码
    • 效果
    • 尾语 💝


第三方库:

  • 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也是对博主的鼓舞吖 💞 感谢 💐

相关文章:

  • 【微服务40】分布式事务Seata源码解析八:AT模式下本地事务的执行流程
  • 面试汇总(一)
  • 分布式任务调度XXL-JOB-第二章-SpringBoot集成XXL-JOB
  • Linux系统下查看被杀死进程的信息
  • 粒子群算法PSO求解最大值和最小值案例(超详细注释)
  • LeetCode每日一题——902. 最大为 N 的数字组合
  • Java学习--JDBC
  • C++中GDAL批量创建多个栅格图像文件并批量写入数据
  • 基于maven的spring项目实现登录注册(SSM)
  • 【C++】动态内存管理
  • 波士顿动力再惊艳!机器人大秀男团舞,举手投足人味满满,多次转卖后展示新标签...
  • Python 代码托管到码云平台,原来这么简单
  • 【MATLAB教程案例26】图像特征点提取算法matlab仿真与分析——sift,surf,kaze,corner,BRISK等
  • 前端深拷贝与浅拷贝(附实现方法)
  • C#工业生产线MES系统,源代码分享
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • FastReport在线报表设计器工作原理
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • JAVA 学习IO流
  • laravel with 查询列表限制条数
  • React Transition Group -- Transition 组件
  • REST架构的思考
  • uva 10370 Above Average
  • 技术:超级实用的电脑小技巧
  • 经典排序算法及其 Java 实现
  • 前端性能优化——回流与重绘
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • 白色的风信子
  • 扩展资源服务器解决oauth2 性能瓶颈
  • !$boo在php中什么意思,php前戏
  • # Panda3d 碰撞检测系统介绍
  • (ZT)一个美国文科博士的YardLife
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (十一)图像的罗伯特梯度锐化
  • ******之网络***——物理***
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • ??myeclipse+tomcat
  • [2019.3.5]BZOJ1934 [Shoi2007]Vote 善意的投票
  • [AIGC] Java 和 Kotlin 的区别
  • [Android] Upload package to device fails #2720
  • [android] 看博客学习hashCode()和equals()
  • [ccc3.0][数字钥匙] UWB配置和使用(二)
  • [Gym-102091E] How Many Groups
  • [Hadoop in China 2011] 蒋建平:探秘基于Hadoop的华为共有云
  • [IE编程] IE中使网页元素进入编辑模式
  • [IE编程] WebBrowser控件中设置页面的缩放
  • [JavaScript]_[初级]_[关于forin或for...in循环语句的用法]
  • [LaTex]arXiv投稿攻略——jpg/png转pdf
  • [leetcode]56. Merge Intervals归并区间