提交 ab6a8885 编写于 作者: ZainCheung's avatar ZainCheung

add document

上级 336df6e9
......@@ -9,11 +9,12 @@
* * [GitHub](api/github "使用GitHub部署API")
* * [复制服务](api/remix "使用Glitch的remix部署API")
* * [服务器](api/server "使用服务器部署API")
* [配置账号](config/ "配置文件的修改")
* 效果演示
* * [账号升级](show/up "账号升级页面演示")
* * [微信提醒](show/wechat "微信推送消息")
* * [播放次数](show/count "刷单曲播放次数")
* [项目配置](config/)
* [接口文档](document/)
* [下载地址](download/)
* [查看日志](log/)
* [注意事项](attention/)
......
## 从GitHub导入项目
## 从GitHub导入项目 {docsify-ignore-all}
使用这种方式部署网站接口,0成本且快速可用,且不用担心环境部署运维等问题,当然如果有条件用自己的服务器搭建也是可以的。
......@@ -6,7 +6,7 @@
fork这个API项目到你的仓库,记得点个Star哦
![](https://s1.ax1x.com/2020/06/29/NWoCGj.png)
![](https://s1.ax1x.com/2020/08/05/as0qZ8.png)
#### 2. 导入项目
......
## 直接复制项目
## 直接复制项目 {docsify-ignore-all}
或者可以直接复制一份这个API项目成为你的项目,进入开发者的api服务器: https://glitch.com/edit/#!/netease-cloud-api 选择右上角的 `Remix to Exit`,即可成为你自己的项目,你便可以对代码进行修改,自定义你的域名。
......
## 服务器部署
## 服务器部署 {docsify-ignore-all}
部署到服务器,对于新手还是比较建议安装宝塔面板,然后就可以在浏览器中进行界面化操作,免得有的人不会Linux的命令行。
......
# 注意事项
### 1. Server酱
### Server酱
一定要绑定微信才会有效果
Server酱的官网地址:[http://sc.ftqq.com/](http://sc.ftqq.com/)
### 2. MD5
### MD5
**制作时选择32位小写!!!**
......@@ -14,7 +14,7 @@ Server酱的官网地址:[http://sc.ftqq.com/](http://sc.ftqq.com/)
比较建议大家使用MD5,因为别人即使知道了你的MD5,也很难还原你的密码,相对而言要安全很多,而原密码在你制作MD5时就被隐藏起来了,只有你一个人知道密码
### 3. 修改听歌次数
### 修改听歌次数
注意:云函数修改`index.py`,服务器或者本地的话则是修改`main.py`
......@@ -30,10 +30,10 @@ for i in range(1,3):
time.sleep(30)
```
### 4. 可用性
### 可用性
可能有人会说,直接使用网页或者电脑程序每天打卡不就好了,干嘛还要脚本。是的,使用网站和程序确实可以做到一样的效果,不过我懒啊,还总是忘事,所以就让它彻底全自动化,可能也有不少人愿意像我这样折腾一番,然后就可以坐享其成一劳永逸,每天坐等微信提醒就行。
### 5. 初衷
### 初衷
使用网易云也有挺久了,听的歌也挺多,但总是会听重复的歌,而重复的歌又不算进等级里去,所以还是很想升级的。
\ No newline at end of file
......@@ -14,7 +14,7 @@
## 1. 账号
## 账号
```bash
[token]
......@@ -35,7 +35,7 @@ password = bfa834f7de58cb650ca01edb********
## 2. 设置
## 设置
```bash
[setting]
......@@ -52,7 +52,7 @@ api是指提供接口的服务器地址,这里提供一个Demo,源码也已
### 2-1. MD5
### MD5
```bash
......@@ -70,35 +70,29 @@ md5开关,如果自己不会加密md5,那么将这个开关置为true,并
### 2-2. 多账号
### 微信提醒
```bash
# 是否开启多账号功能,如果打开将会忽视配置文件里的账号而从account.json中寻找账号信息
# 如果选择使用多账号,请配置好account里的账号和密码,即account和password,而sckey不是必需的,如果为空则不会进行微信推送
# 介于账号安全着想,account.json中的密码必须填写md5加密过的,请不要向他人透露自己的明文密码
peopleSwitch = false
# Server酱的密匙,不需要推送就留空,密匙的免费申请参考:http://sc.ftqq.com/
sckey = SCU97783T70c13167b4daa422f4d419a765eb4ebb5ebc9********
```
这个开关是为那些拥有多账号或者准备带朋友一起使用的朋友准备的,正如注释所说,如果你有多个账号,都想使用这个服务,那么可以打开`peopleSwitch`置为true,那么配置文件里的账号就会被程序忽略,直接读取`account.json`中的账号信息,关于`account.json`的配置在后面。
Server酱,是一个可以向你的微信推送消息的服务,并且消息内容完全自定义,使用之前只需要前往官网,使用GitHub登陆,扫码绑定微信,便可以获得密匙,从此免费使用Server酱
------
### 2-3. 微信提醒
## 配置多账号
```bash
# Server酱的密匙,不需要推送就留空,密匙的免费申请参考:http://sc.ftqq.com/
sckey = SCU97783T70c13167b4daa422f4d419a765eb4ebb5ebc9********
# 是否开启多账号功能,如果打开将会忽视配置文件里的账号而从account.json中寻找账号信息
# 如果选择使用多账号,请配置好account里的账号和密码,即account和password,而sckey不是必需的,如果为空则不会进行微信推送
# 介于账号安全着想,account.json中的密码必须填写md5加密过的,请不要向他人透露自己的明文密码
peopleSwitch = false
```
Server酱,是一个可以向你的微信推送消息的服务,并且消息内容完全自定义,使用之前只需要前往官网,使用GitHub登陆,扫码绑定微信,便可以获得密匙,从此免费使用Server酱
------
## 3. 配置多账号
这个开关是为那些拥有多账号或者准备带朋友一起使用的朋友准备的,正如注释所说,如果你有多个账号,都想使用这个服务,那么可以打开`peopleSwitch`置为true,那么配置文件里的账号就会被程序忽略,直接读取`account.json`中的账号信息。
第一次打开`account.json`,内容会是这样
......
# 接口文档
## 调用前须知
!> 本项目不提供线上 demo,请不要轻易信任使用他人提供的公开服务,如果使用,填写密码时一定要自己加密MD5,以免发生安全问题,泄露自己的账号和密码。
!> 为使用方便,降低门槛, 文档示例接口直接使用了 GET 请求,本项目同时支持 GET/POST 请按实际需求使用
!> 本项目仅供学习使用,请尊重版权,请勿利用此项目从事商业行为
!> API登陆接口只接收MD5加密后的密码,并且不会储存你的个人信息,原密码除了你自己谁也不知道
!> 使用本项目不会影响你的听歌风格,刷的歌都来自你的每日推荐歌单。
## 登录
说明 : 登录有两个接口,建议使用`encodeURIComponent`对密码编码或者使用`POST`请求,避免某些特殊字符无法解析,如`#`(`#`在url中会被识别为hash,而不是query)
**无论是手机登录还是邮箱登陆,密码都必须使用MD5,不可以直接传入明文**
明文例如:123456abcd
MD5例如:efa224f8de55cb668cd01edbccdfc8a9
### 1. 手机登录
**必选参数 :**
`uin`: 手机号码
`pwd`: 密码
**接口地址 :** `/?do=login`
**可选参数 :** `r`: 0至1的随机数,例如`0.20246864764818318`
**调用例子 :** `/?do=login&uin=xxx&pwd=yyy`
### 2. 邮箱登录
**必选参数 :**
`uin`: 163 网易邮箱
`pwd`: 密码
**接口地址 :** `/?do=email`
**调用例子 :** `/?do=email&uin=xxx&pwd=yyy`
完成登录后 , 会在浏览器保存一个 Cookies 用作登录凭证 , 大部分 API 都需要用到这个 Cookies,请求会自动带上 Cookies
## 签到
说明:调用接口这个接口可以签到
**接口地址 :** `/?do=sign`
## 打卡听歌
说明:由于网易云官方问题,如果打卡听歌只刷了一部分,可以多请求几次,建议每次间隔30秒请求3次左右
**接口地址 :** `/?do=daka`
## 获取用户详情
说明 : 登陆后调用此接口 , 传入用户 id, 可以获取用户详情
**必选参数 :**
`uid` : 用户 id
**接口地址 :** `/?do=detail`
**调用例子 :** `/?do=detail&uid=32953014`
注意获取用户信息接口传入的时`uid`,而登陆接口传入的是`uin`,不要搞混淆
## 检查接口
说明:调用此接口可检查当前项目API是否可用,建议在调用接口前先调用此接口做个判断
**接口地址 :** `/?do=check`
## 刷单曲播放次数
说明 : 登陆后调用此接口 , 传入指定歌单id和次数, 可以使该歌单内每首单曲各增加一定的播放次数
?> 应用场景常用于定向性训练账号的听歌趋向,可自主纠正系统的个性化推送,让它推送你真正喜欢的内容。这里的次数是指歌单播放次数,比如歌单内有两首歌,次数定为300,则两首歌各增加300次播放次数,如果只想提高某一首歌的次数,那就让这个歌单只留下这一首即可。
**必选参数 :**
`id` : 歌单 id
`time` : 歌单播放次数
**接口地址 :** `/?do=listen`
**调用例子 :** `/?do=listen&id=5101628912&time=300`
# 下载地址
# 下载地址 {docsify-ignore-all}
## 升级服务
## netease-cloud(升级服务)
项目地址:[https://github.com/ZainCheung/netease-cloud](https://github.com/ZainCheung/netease-cloud)
Python项目地址:[https://github.com/ZainCheung/netease-cloud](https://github.com/ZainCheung/netease-cloud)
api接口项目地址:[https://github.com/ZainCheung/netease-cloud-api](https://github.com/ZainCheung/netease-cloud-api)
## netease-cloud-api(API接口)
api接口项目地址:[https://github.com/ZainCheung/netease-cloud-api](https://github.com/ZainCheung/netease-cloud-api)
api的Demo演示地址:[https://netease-cloud-api.glitch.me/](https://netease-cloud-api.glitch.me/)
......@@ -16,7 +18,7 @@ api的Glitch在线服务器:[https://glitch.com/edit/#!/netease-cloud-api](htt
## 定制日推
## netease-cloud-fastplay(快速刷歌)
项目地址:[https://github.com/ZainCheung/netease-cloud-fastplay](https://github.com/ZainCheung/netease-cloud-fastplay)
......
......@@ -3,6 +3,7 @@
<head>
<meta charset="UTF-8">
<title>网易云音乐升级</title>
<link rel="icon" href="favicon.ico">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="description" content="Description">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
......@@ -13,12 +14,18 @@
<script>
window.$docsify = {
name: '网易云升级',
repo: 'https://github.com/ZainCheung/netease-cloud',
repo: 'ZainCheung/netease-cloud',
loadSidebar: true,
onlyCover: false,
auto2top: true
auto2top: true,
subMaxLevel: 3
}
</script>
<script>
// if (typeof navigator.serviceWorker !== 'undefined') {
// navigator.serviceWorker.register('sw.js')
// }
</script>
<script src="//cdn.jsdelivr.net/npm/docsify/lib/docsify.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/zoom-image.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/docsify-copy-code"></script>
......
## 云函数
## 云函数 {docsify-ignore-all}
**全民升级时代来了!项目支持了云函数!!!**
......
## 本地使用
## 本地使用 {docsify-ignore-all}
> 本地部署需要电脑下载并**安装配置好Python**
......
## 服务器部署
## 服务器部署 {docsify-ignore-all}
推荐使用宝塔面板,在宝塔应用商店里面有一个Python项目管理器,下载安装,并选择3.0以上版本,推荐3.7.2版本.
......
# 常见问题
# 常见问题 {docsify-ignore-all}
### 1. 确保自己的账号密码都没有问题,却总是提示检查账号密码怎么回事?
答:很有可能是当前的API不可用了,默认API使用的人较多,,而且大多都挤在一个时间段用了,,导致平台反应不过来,本身就是国外站,速度比较慢,大家可以分开点做任务,下午晚上都是可以的,不然这个API就会被挤挂掉了,还是建议大家自己搭建API,这样自己访问速度也会快很多。
大家部署完API记得在 **init.config**文件中更改 **api**地址为自己部署的地址,比如你的域名是api.test.com或者api.glitch.me等等。
### 2. 已经换了API,还是报错检查账号密码?
答:如果确定API可以用,但依旧提示账号密码有问题,还请检查一下配置文件的账号密码以及**md5Switch**有没有选对,密码的MD5一定要是**32位小写**,已经有人因为没注意这个而出错的了。
并且 **init.config**文件中要更改 **api**地址为自己部署的地址。
### 3. 打卡完成后为什么歌曲累计播放没有涨或者涨幅很小?
答:打卡完成后听歌数量并不会立刻更新,建议等待半小时或者更多一段时间,由于官方计数规则限制,只有从未听过的歌曲才计入总数,所以如果你的播放量本来就很高,建议加大打卡的循环次数,教程见其他事项第三条。
### 4. 自己用服务器搭建的API,首页能打开,但点击检查没反应?
答:API一定要用PHP部署,如果是纯静态是没有任何作用的,建议新手或者小白使用前两种部署方式,有能力者使用第三种。
......
# 项目结构
## netease-cloud
```
|-- 项目文件夹
|-- LICENSE
......@@ -23,4 +27,36 @@
`requirements.txt`:依赖清单
`run.log`:运行日志
## netease-cloud-fastplay
```
|-- 项目文件夹
|-- LICENSE
|-- README.md
|-- init.config
|-- main.py
|-- ui.py
|-- api.py
|-- requirements.txt
|-- run.log
```
`LICENSE`:开源许可证
`README.md`:项目自述文件
`init.config`:配置文件
`main.py`:主程序
`ui.py`:界面模块
`api.py`:接口模块
`requirements.txt`:依赖清单
`run.log`:运行日志
\ No newline at end of file
/* ===========================================================
* docsify sw.js
* ===========================================================
* Copyright 2016 @huxpro
* Licensed under Apache 2.0
* Register service worker.
* ========================================================== */
const RUNTIME = 'docsify'
const HOSTNAME_WHITELIST = [
self.location.hostname,
'fonts.gstatic.com',
'fonts.googleapis.com',
'cdn.jsdelivr.net'
]
// The Util Function to hack URLs of intercepted requests
const getFixedUrl = (req) => {
var now = Date.now()
var url = new URL(req.url)
// 1. fixed http URL
// Just keep syncing with location.protocol
// fetch(httpURL) belongs to active mixed content.
// And fetch(httpRequest) is not supported yet.
url.protocol = self.location.protocol
// 2. add query for caching-busting.
// Github Pages served with Cache-Control: max-age=600
// max-age on mutable content is error-prone, with SW life of bugs can even extend.
// Until cache mode of Fetch API landed, we have to workaround cache-busting with query string.
// Cache-Control-Bug: https://bugs.chromium.org/p/chromium/issues/detail?id=453190
if (url.hostname === self.location.hostname) {
url.search += (url.search ? '&' : '?') + 'cache-bust=' + now
}
return url.href
}
/**
* @Lifecycle Activate
* New one activated when old isnt being used.
*
* waitUntil(): activating ====> activated
*/
self.addEventListener('activate', event => {
event.waitUntil(self.clients.claim())
})
/**
* @Functional Fetch
* All network requests are being intercepted here.
*
* void respondWith(Promise<Response> r)
*/
self.addEventListener('fetch', event => {
// Skip some of cross-origin requests, like those for Google Analytics.
if (HOSTNAME_WHITELIST.indexOf(new URL(event.request.url).hostname) > -1) {
// Stale-while-revalidate
// similar to HTTP's stale-while-revalidate: https://www.mnot.net/blog/2007/12/12/stale
// Upgrade from Jake's to Surma's: https://gist.github.com/surma/eb441223daaedf880801ad80006389f1
const cached = caches.match(event.request)
const fixedUrl = getFixedUrl(event.request)
const fetched = fetch(fixedUrl, { cache: 'no-store' })
const fetchedCopy = fetched.then(resp => resp.clone())
// Call respondWith() with whatever we get first.
// If the fetch fails (e.g disconnected), wait for the cache.
// If there’s nothing in cache, wait for the fetch.
// If neither yields a response, return offline pages.
event.respondWith(
Promise.race([fetched.catch(_ => cached), cached])
.then(resp => resp || fetched)
.catch(_ => { /* eat any errors */ })
)
// Update the cache with the version we fetched (only for ok status)
event.waitUntil(
Promise.all([fetchedCopy, caches.open(RUNTIME)])
.then(([response, cache]) => response.ok && cache.put(event.request, response))
.catch(_ => { /* eat any errors */ })
)
}
})
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册