tiktok/WebApi.py

160 lines
4.0 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
@FileName : WebApi.py
@Project : apiproxy
@Description:
@Author : imgyh
@Mail : admin@imgyh.com
@Github : https://github.com/imgyh
@Site : https://www.imgyh.com
@Date : 2023/5/12 18:52
@Version : v1.0
@ChangeLog
------------------------------------------------
------------------------------------------------
'''
from flask import *
from apiproxy.douyin.douyinapi import DouyinApi
from apiproxy.douyin import douyin_headers
import argparse
def douyinwork(share_link, max_cursor, mode, cookie):
dy = DouyinApi()
if cookie is not None and cookie != "":
douyin_headers["Cookie"] = cookie
url = dy.getShareLink(share_link)
key_type, key = dy.getKey(url)
data = None
rawdata = None
cursor = None
has_more = None
if key_type == "user":
if mode == 'post' or mode == 'like':
data, rawdata, cursor, has_more = dy.getUserInfoApi(sec_uid=key, mode=mode, count=35,
max_cursor=max_cursor)
elif mode == 'mix':
data, rawdata, cursor, has_more = dy.getUserAllMixInfoApi(sec_uid=key, count=35, cursor=max_cursor)
elif mode == 'detail':
rawdata = dy.getUserDetailInfoApi(sec_uid=key)
data = rawdata
elif key_type == "mix":
data, rawdata, cursor, has_more = dy.getMixInfoApi(mix_id=key, count=35, cursor=max_cursor)
elif key_type == "music":
data, rawdata, cursor, has_more = dy.getMusicInfoApi(music_id=key, count=35, cursor=max_cursor)
elif key_type == "aweme":
data, rawdata = dy.getAwemeInfoApi(aweme_id=key)
elif key_type == "live":
data, rawdata = dy.getLiveInfoApi(web_rid=key)
datadict = {}
datadict["data"] = data
datadict["rawdata"] = rawdata
datadict["cursor"] = cursor
datadict["has_more"] = has_more
return datadict
def deal(mode=None):
usefuldict = {}
if request.headers.get("content_type") == "application/json":
result = request.get_json(force=True)
else:
result = request.form
share_link = None
cursor = 0
cookie = None
try:
share_link = result["share_link"]
cursor = result["cursor"]
cookie = result["cookie"]
except Exception as e:
usefuldict["status_code"] = 500
try:
if share_link is not None and share_link != "":
usefuldict = douyinwork(share_link, cursor, mode, cookie)
usefuldict["status_code"] = 200
except Exception as e:
usefuldict["status_code"] = 500
return jsonify(usefuldict)
app = Flask(__name__)
# 设置编码
app.config['JSON_AS_ASCII'] = False
def argument():
parser = argparse.ArgumentParser(description='抖音去水印工具 使用帮助')
parser.add_argument("--port", "-p", help="Web端口",
type=int, required=False, default=5000)
args = parser.parse_args()
return args
@app.route("/douyin/music", methods=["POST"])
def douyinMusic():
return deal()
@app.route("/douyin/mix", methods=["POST"])
def douyinMix():
return deal()
@app.route("/douyin/user/mix", methods=["POST"])
def douyinUserMix():
return deal(mode="mix")
@app.route("/douyin/user/like", methods=["POST"])
def douyinUserLike():
return deal(mode="like")
@app.route("/douyin/user/post", methods=["POST"])
def douyinUserPost():
return deal(mode="post")
@app.route("/douyin/user/detail", methods=["POST"])
def douyinUserDetail():
return deal(mode="detail")
@app.route("/douyin/aweme", methods=["POST"])
def douyinAweme():
return deal()
@app.route("/douyin/live", methods=["POST"])
def douyinLive():
return deal()
@app.route("/douyin", methods=["POST"])
def douyin():
return deal()
@app.route("/", methods=["GET"])
def index():
return render_template("index.html")
if __name__ == "__main__":
args = argument()
app.run(debug=False, host="0.0.0.0", port=args.port)