利用 Python 实现网易云音乐自动签到

本贴最后更新于 1757 天前,其中的信息可能已经事过境迁

我把 api 搭建在自己的服务器上了

$ docker pull binaryify/netease_cloud_music_api $ docker run -d -p 8090:3000 --name netease_cloud_music_api -e http_proxy= -e https_proxy= -e no_proxy= -e HTTP_PROXY= -e HTTPS_PROXY= -e NO_PROXY= binaryify/netease_cloud_music_api $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e25f4fc06c81 binaryify/netease_cloud_music_api "docker-entrypoint.s…" About an hour ago Up About an hour 0.0.0.0:8090->3000/tcp netease_cloud_music_api 55a900b38684 b3log/solo "java -cp lib/*:. or…" 2 days ago Up 2 days solo 066c823540cc b3log/lute-http "/opt/lute-http/lute…" 2 days ago Up 2 days lute-http

如下 api 平台运行:
image.png

  • 实现 python 自动签到
#!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2020/03/27 # @Author : cuijianzhe # @File : music.py # @Software: PyCharm import os import json import requests headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36', 'Content-Type': 'application/x-www-form-urlencoded', 'Referer': 'http://music.163.com/discover', 'Accept': '*/*' } class NeteaseSignin(): def __init__(self,username,password): self.name = username self.password = password self.session = NeteaseSignin.login(username,password) def run(self): signin_url = "http://www.cjzshilong.cn:8090/daily_signin" res_signin = self.session.get(signin_url, headers=headers) print(res_signin.text) @staticmethod def login(username,password): session = requests.Session() api_url = "http://cjzshilong.cn:8090/login?email=%s&password=%s" % (username,password) res = session.get(api_url, headers=headers) str_res = json.loads(res.text) return session if __name__ == '__main__': if os.path.exists('config.json'): f = open('config.json', 'r', encoding='utf-8') info = json.load(f) f.close() else: username = input('--username:') password = input('--password:') info = {'username': username, 'password': password} f = open('config.json', 'w', encoding='utf-8') json.dump(info, f) f.close() sign_in = NeteaseSignin(username=info.get('username'),password=info.get('password')) sign_in.run()
  • 同时为了通知到位,把相关信息集成到飞书进行提醒:
#!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2020/03/27 21:36 # @Author : cuijianzhe # @File : music.py # @Software: PyCharm import os import json import requests headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36', 'Content-Type': 'application/x-www-form-urlencoded', 'Referer': 'http://music.163.com/discover', 'Accept': '*/*' } class NeteaseSignin(): def __init__(self,username,password): self.name = username self.password = password self.session = NeteaseSignin.login(username,password) def run(self): signin_url = "http://www.cjzshilong.cn:8090/daily_signin" res_signin = self.session.get(signin_url, headers=headers) data = json.loads(res_signin.text) if data.get('code') == 200: info = '''今日网易云签到获得%s云贝 返回相关信息:%s'''%(data.get('point'),data) return info else: info = '''今日网易云%s 返回相关信息:%s'''%(data.get('msg'),data) return info @staticmethod def login(username,password): session = requests.Session() api_url = "http://cjzshilong.cn:8090/login?email=%s&password=%s" % (username,password) res = session.get(api_url, headers=headers) # str_res = json.loads(res.text) return session class feishu(): def __init__(self,mobile,text): self.mobile = mobile self.token = feishu.get_token() self.text = text def getuserid(self): headers_group = { "Authorization": "Bearer %s" % self.token, "Content-Type": "application/json" } try: userurl = "https://open.feishu.cn/open-apis/user/v1/batch_get_id?mobiles=%s" %self.mobile res_data = requests.get(url=userurl, headers=headers_group) code = json.loads(res_data.text).get('code') if code == 0: userid = json.loads(res_data.text)['data']['mobile_users'][self.mobile][0]['user_id'] return userid else: error = json.loads(res_data.text).get('msg') print('请求出错:{}'.format(error)) except: print('请求失败') def send_messages(self,userid): headers_group = { "Authorization": "Bearer %s" % self.token, "Content-Type": "application/json" } message_url = "https://open.feishu.cn/open-apis/message/v4/send/" # 发送富文本消息 data = { "user_id": userid, "msg_type": "post", "content": { "post": { "zh_cn": { "title": "今日网易云音乐签到内容如下:", "content": [ [ { "tag": "text", "un_escape": True, "text": "%s " % self.text }, { "tag": "at", "user_id": userid } ] ] } } } } request = requests.post(url=message_url, headers=headers_group, json=data) @staticmethod #静态方法 类或实例均可调用 def get_token(): #改静态方法函数里不传入self 或 cls data = {"app_id":"cli_9xxxxd","app_secret":"YJJxxxxYUi"} headers = {"Content-Type": "application/json"} url_token = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal/" try: res = requests.post(url_token, json=data, headers=headers) if res.status_code == 200: token = (json.loads(res.text)).get('tenant_access_token') return token except: print('请求失败') if __name__ == '__main__': filepath = '/scripts/music163/config.json' if os.path.exists(filepath): f = open(filepath, 'r', encoding='utf-8') info = json.load(f) f.close() else: username = input('--username:') password = input('--password:') info = {'username': username, 'password': password} f = open(filepath, 'w', encoding='utf-8') json.dump(info, f) f.close() sign_in = NeteaseSignin(username=info.get('username'),password=info.get('password')) text = sign_in.run() mobiles = '186xxxx6142' res = feishu(mobiles,text) userid = res.getuserid() res.send_messages(userid)

效果如下:

image.png

  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    557 引用 • 675 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
cuijianzhe
6 号黑客成员, 2000-03-03 23:22:13 加入 北京

推荐标签 标签

  • DNSPod

    DNSPod 建立于 2006 年 3 月份,是一款免费智能 DNS 产品。 DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。

    6 引用 • 26 回帖 • 531 关注
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 57 关注
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    188 引用 • 319 回帖 • 251 关注
  • 书籍

    宋真宗赵恒曾经说过:“书中自有黄金屋,书中自有颜如玉。”

    78 引用 • 396 回帖
  • 微服务

    微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务。服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在独立的进程中。服务于服务之间才用轻量级的通信机制互相沟通。每个服务都围绕着具体业务构建,能够被独立的部署。

    96 引用 • 155 回帖 • 4 关注
  • MongoDB

    MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。

    91 引用 • 59 回帖 • 3 关注
  • Sublime

    Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。

    10 引用 • 5 回帖 • 3 关注
  • OpenCV
    15 引用 • 36 回帖 • 7 关注
  • Caddy

    Caddy 是一款默认自动启用 HTTPS 的 HTTP/2 Web 服务器。

    12 引用 • 54 回帖 • 177 关注
  • abitmean

    有点意思就行了

    34 关注
  • 开源

    Open Source, Open Mind, Open Sight, Open Future!

    412 引用 • 3588 回帖
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    693 引用 • 537 回帖 • 1 关注
  • 阿里巴巴

    阿里巴巴网络技术有限公司(简称:阿里巴巴集团)是以曾担任英语教师的马云为首的 18 人,于 1999 年在中国杭州创立,他们相信互联网能够创造公平的竞争环境,让小企业通过创新与科技扩展业务,并在参与国内或全球市场竞争时处于更有利的位置。

    43 引用 • 221 回帖 • 60 关注
  • 旅游

    希望你我能在旅途中找到人生的下一站。

    96 引用 • 901 回帖
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    92 引用 • 752 回帖
  • BookxNote

    BookxNote 是一款全新的电子书学习工具,助力您的学习与思考,让您的大脑更高效的记忆。

    笔记整理交给我,一心只读圣贤书。

    1 引用 • 1 回帖
  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    70 引用 • 193 回帖 • 413 关注
  • BAE

    百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。

    19 引用 • 75 回帖 • 668 关注
  • 资讯

    资讯是用户因为及时地获得它并利用它而能够在相对短的时间内给自己带来价值的信息,资讯有时效性和地域性。

    56 引用 • 85 回帖
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖 • 4 关注
  • 小薇

    小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。

    由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!

    35 引用 • 468 回帖 • 764 关注
  • LaTeX

    LaTeX(音译“拉泰赫”)是一种基于 ΤΕΧ 的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在 20 世纪 80 年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由 TeX 所提供的强大功能,能在几天,甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。

    13 引用 • 57 回帖 • 8 关注
  • frp

    frp 是一个可用于内网穿透的高性能的反向代理应用,支持 TCP、UDP、 HTTP 和 HTTPS 协议。

    20 引用 • 7 回帖 • 1 关注
  • VirtualBox

    VirtualBox 是一款开源虚拟机软件,最早由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。

    10 引用 • 2 回帖 • 17 关注
  • Facebook

    Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。

    4 引用 • 15 回帖 • 448 关注
  • Word
    13 引用 • 41 回帖