我把 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 平台运行:
#!/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)
效果如下: