-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
75 lines (65 loc) · 2.22 KB
/
main.py
File metadata and controls
75 lines (65 loc) · 2.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import flask
import requests
import logging
from flask import request, render_template
app = flask.Flask(__name__)
logger = logging.getLogger()
@app.route("/", methods=["GET", "POST"])
def index():
if request.method == "GET":
return app.send_static_file("index.html")
elif request.method == "POST":
content = request.json
ua = request.headers.get("User-Agent")
plain_cookies = content.get("cookies")
try:
cookies = dict(p.split("=") for p in plain_cookies.split("; "))
except ValueError:
return flask.jsonify({})
logger.info("room_id: {}".format(content.get("room_id")))
post_data = dict(
room_id=content.get("room_id"),
platform="pc",
area_v2=content.get("area_v2"),
csrf_token=cookies.get("bili_jct"),
csrf=cookies.get("bili_jct"),
)
headers = {
"User-Agent": ua,
}
r = requests.post(
"https://api.live.bilibili.com/room/v1/Room/startLive",
headers=headers,
data=post_data,
cookies=cookies,
)
return flask.jsonify(r.json())
@app.route("/scan", methods=["GET", "POST"])
def login():
ua = request.headers.get("User-Agent")
headers = {"User-Agent": ua}
if request.method == "GET":
r = requests.get(
"https://passport.bilibili.com/qrcode/getLoginUrl", headers=headers
)
return flask.jsonify(r.json())
elif request.method == "POST":
oauthKey = request.json.get("oauthKey")
s = requests.session()
r = s.post(
"https://passport.bilibili.com/qrcode/getLoginInfo",
headers=headers,
data=dict(oauthKey=oauthKey),
).json()
if r.get("status") == True:
c = s.cookies
f = ["%s=%s" % (name, value) for (name, value) in c.items()]
cookies = "; ".join(f)
r["cookies"] = cookies
return flask.jsonify(r)
@app.route("/area_list", methods=["GET"])
def get_area_list():
r = requests.get("https://api.live.bilibili.com/room/v1/Area/getList").json()
return flask.jsonify(r.get("data"))
if __name__ == "__main__":
app.run()