Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/letmefly666/share1024
力扣2022-1024马尔科夫链活动,卡牌分享网
https://github.com/letmefly666/share1024
1024 1024-markov-chain django leetcode leetcode1024
Last synced: 3 months ago
JSON representation
力扣2022-1024马尔科夫链活动,卡牌分享网
- Host: GitHub
- URL: https://github.com/letmefly666/share1024
- Owner: LetMeFly666
- License: gpl-3.0
- Created: 2022-10-27T02:27:15.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2022-11-05T01:14:52.000Z (about 2 years ago)
- Last Synced: 2023-03-04T18:27:11.278Z (almost 2 years ago)
- Topics: 1024, 1024-markov-chain, django, leetcode, leetcode1024
- Language: Python
- Homepage: https://Share1024.LetMeFly.xyz
- Size: 132 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Share1024
[力扣2022-1024马尔科夫链活动](https://leetcode.cn/2022-1024),卡牌分享网,**当前正在搭建中**,后端服务可能只会运行到活动结束在这里,你可以领取任意你需要的卡牌,但是,你领取完别人的卡牌后**必须分享出来**。只有这样,才能实现卡牌的*可持续发展*
在这里,**诚信至上,白嫖达咩** だめ
此项目完全公益,**不盈利**
因此,还请各位大佬手下留情,不要攻击我的低配服务器哦~
## 文件结构说明
```/docs/``` 文件夹其实为**前端页面**,Github pages 的 deploy from branch 不支持(root)和/docs之外的文件夹的自动部署
```/back/``` 文件夹为后端代码,运行在我的服务器上
### back
**准备阶段:**
1. 拥有一台具有公网ip并且已备案的服务器
2. 服务器上配置好```Python```、```django```、```MySQL```(最好为这个项目单独创建一个用户,防止可能的漏洞导致其他数据库的数据泄露问题)
3. 配置好例如Nginx等服务,以便将来自外网的访问转交给此服务进行处理。**配置阶段:**
你需要在```/back/```文件夹下自己创建一```Secrets.py```,用于配置各种密码、令牌等。
此文件需要包括:
```python
"""这个文件中的内容需要自己配置,打死也不要告诉他人哦"""
SECRET_KEY = "django-insecure-qs0quxd^b0a0#2+6cxv)qs)(f(fx=m9ri_5#ladh8x5)i#cgh+"
DATABASE_DBNAME = '' # 数据库名称
DATABASE_USER = '' # 数据库用户名
DATABASE_PASSWORD = '' # 数据库密码
DATABASE_HOST = '' # 数据库服务器IP
DATABASE_PORT = 3306 # 数据库端口
EMAIL_SENDER_NAME = "[email protected]" # 邮件发送者邮箱
EMAIL_SENDER_PASSWORD = "LeetCode2022-1024Share" # 邮件发送者密码```
**启动服务:**
首次启动服务需要执行命令:
```bash
python manage.py makemigrations
python manage.py migrate
```之后仅需运行
```bash
python manage.py runserver
```## 接口说明
以下说明了后端为前端提供的各种接口,我提供这些接口是为了方便用户写程序去调用(比如卡牌监控等),但是请注意调用频率,不要对服务器照成太大的压力。推荐频率:1次/秒(蒟蒻的服务器不抗揍)
### /user/baseInfo/
获取用户基本信息
**方法**
POST
**请求**
data
```json
{
"warrant1024": "theWarrant484s48e4fs84e"
}
```**返回**
若未登录:
```json
{"login": false}
```若已登录:
```json
{
"username": "tisfy",
"cardNotShare": "" // 是否有领取但为传递的卡牌。如果无,则为空;如果有,则为卡牌ID
}
```### /user/cards/
获取用户卡牌信息
**方法**
GET
**请求**
data
```json
{
"warrant1024": "theWarrant484s48e4fs84e"
}
```**返回**
若未登录,则返回的各种卡牌都为空列表
若已登录,则返回
```json
{
"shared": [123, 542], // 所分享的卡牌ID
"got": [120, 521], // 所领取的卡牌ID
"error": [542], // 被报失效的卡牌
}
```### /user/login/
**方法**
POST
**请求**
data
```json
{
"username": "tisfy",
"password": "LeetCode2022-1024Share"
}
```**返回**
若登录成功
```json
{
"warrant1024": "theWarrant484s48e4fs84e"
}
```否则
```json
{
"warrant1024": "",
"message": "Username or password wrong"
}
```其中,message当前支持:
+ 账号或密码为空:```There isn't a username or password in the request```
+ 账号或密码不正确:```Username or password wrong```
+ 该账号不存在:```No such user```### /user/logout/
**方法**
POST
**请求**
data
```json
{
"warrant1024": "theWarrant484s48e4fs84e"
}
```**响应**
```json
{
"response": "ok"
}
```### /user/register/
**请求**
data
```json
{
"username": "tisfy",
"password": "LeetCode2022and1024Share",
"email": "[email protected]",
"code": "1234", // 邮箱验证码
}
```**返回**
若注册成功
```json
{
"warrant1024": "theWarrant484s48e4fs84e"
}
```否则
```json
{
"warrant1024": "",
"message": "Verification Code unavailable"
}
```其中,message当前支持:
+ 用户名不合法:```Username unavailable```
+ 邮箱不合法:```Email unavailable```
+ 密码不合法:```Password unavailable```
+ 验证码不正确:```Verification Code unavailable```### /user/register/sendCode/
**方法**
POST
**请求**
data
```json
{
"email": "[email protected]"
}
```**返回**
若成功
```json
{
"response": "ok"
}
```否则
```json
{
"response": "",
"message": "Request too fast"
}
```其中,message当前支持:
+ 发送过于频繁:```Request too fast```
+ 邮件地址不合法:```Email unavailable```
+ 其他原因的邮件发送失败:```Email send failed```### /card/remain/all/
获取有多少张未被领取完的卡牌
**方法**
GET
**返回**
返回所有卡牌的未被领取数量(一张卡牌最多算一次)
```json
{
"0": 21,
"1": 50,
// ...
}
```### /card/remain/typeAndID/
获取所有有剩余的卡牌,按ID排列
**方法**
GET
**返回**
```json
{
"125": "007" // "卡牌ID": "卡牌种类"
}
```### /card/remain/oneType/?cardType={卡牌类型}
返回某(一)种卡牌的所有未被领取的卡牌的ID
注意,```&```在此处被编码为```AND```
**方法**
GET
**示例**
```
/card/remain/oneType?cardType=007
```**返回**
```json
{
"cards": [125, 129, 510, 515]
}
```### /card/oneCard/?cardID={卡牌ID}
返回某张卡牌的具体信息
**方法**
GET
**返回**
若获取成功
```json
{
"cardID": 125,
"cardType": "007",
"shareBy": "tisfy", // 分享者
"get1": 1, // |- 0:待领取
"get2": 2, // ---| 1:已领取
"get3": 0, // |- 2:被报无效
"gotTimes": 2, // 也能由get123求得
// 注意,这里不包含力扣的卡牌领取链接,白嫖达咩
}
```若获取失败
```json
{
"cardID": 0,
"message": "Card doesn't exist"
}
```其中,message当前支持:
+ 卡牌不存在:```Card doesn't exist```
### /card/oneCard/getURL/
领取一张卡牌
**方法**
POST
**请求**
data:
```json
{
"warrant1024": "theWarrant484s48e4fs84e",
"cardID": 1221
}
```**返回**
正常:
```json
{
"leetcodeURL": "https://leetcode.cn/2022-1024?id=1111111&userSlug=tisfy"
}
```若未登录:返回```{"leetcodeURL": "", "message": "Please login first"}```
若登录且有未传递的卡牌:返回```{"leetcodeURL": "", "message": "Please share back what you got", "shouldGo": "card1.html?cardID=555"}```
若卡牌为空或不存在:返回```{"leetcodeURL": "", "message": "Card doesn't exist"}```
若卡牌被领完:返回```{"leetcodeURL": "", "message": "Too late, all cards were taken"}```
### /card/share/
分享一张卡牌(未判断传递卡牌和原始卡牌是否相同)
**方法**
POST
**请求**
```json
{
"warrant1024": "theWarrant484s48e4fs84e",
"parent": "", // 若为领取后的传递而不是直接分享,则parent为空串;否则parent为领取自的卡牌 // 若parent的ID不合法,则默认为直接分享
"leetcodeURL": "https://leetcode.cn/2022-1024?id=1111111&userSlug=tisfy", // 力扣卡牌分享链接
"type": "007", // 卡牌类型
// "remain": "3" // 这张卡牌还剩几张(默认为3),不提倡,要保证没有公开卡牌分享链接
}
```**返回**
若成功:
```json
{
"newCardID": 1024
}
```若未登录:返回```{"newCardID": "", "message": "Please login first"}```
若登录且有未传递的卡牌且未传递的卡牌不是这张卡牌:返回```{"newCardID": "", "message": "Please share back what you got", "shouldGo": "card1.html?cardID=555"}```
若力扣卡牌链接不合法:返回 ```{"newCardID": "", "message": "Not a right link"}```
若卡牌类型不存在:返回 ```{"newCardID": "", "message": "We don't have a cardType of this"}```
### /card/cannotUse/
报无效
**方法**
POST
**请求**
data
```json
{
"warrant1024": "theWarrant484s48e4fs84e",
"cardID": 159
}
```**响应**
若成功:
```json
{
"response": "ok"
}
````若未登录:返回```{"response": "", "message": "Please login first"}```
若登录且有为传递的卡牌且未传递的卡牌不是这张卡牌:返回```{"response": "", "message": "Please report what you got", "shouldGo": "card1.html?cardID=555"}```
若登录且无未传递的卡牌:返回```{"response": "", "message": "Sorry, you shouldn't report this card"}```
若被报卡牌不存在:返回```{"response": "", "message": "The cardID is unavailable"}```
## TODO
+ 一人领两次的问题
+ 卡片为```&```时url解析错误的问题(我记得专门修复过这个问题捏,算了,遗留为永久BUG吧)## End
By the way,通过a.com的网页向b.a.com发送登录请求,b.a.com真的没有办法直接设置a.com的cookie吗?X_X 或者说,三级域名能设置二级域名的cookie吗