提交 b722af48 编写于 作者: 6 62f3568c7066201db17ad50a

Feat(service/video): Add service.video code

上级
http://kelezj.com/v/api/getJuzi
http://kelezj.com/v/api/sortWeb
http://kelezj.com/v/api/getTop
http://kelezj.com/v/api/getDyfx
http://kelezj.com/v/api/getTTZJB
http://kelezj.com/v/api/getGirls
http://kelezj.com/v/api/getXiaoy
http://kelezj.com/v/api/getGGang
\ No newline at end of file
http://kelezj.com/v/api/gettoken
\ No newline at end of file
{"token": "udr9bg76jc8", "user": "movie_211229kl"}
\ No newline at end of file
from flask import Flask, request
from video.video_service import get_token, TOKEN_ERROR, get_resource_by_token
import logging
app = Flask(__name__)
app.config["JSON_AS_ASCII"] = False
@app.route("/api/video/<string:video_name>")
def get_video_resource(video_name):
token = get_token()
if token == TOKEN_ERROR:
return TOKEN_ERROR
return get_resource_by_token(token, video_name)
if __name__ == '__main__':
app.run(host="0.0.0.0", port=5000, debug=True)
import requests
import logging
import json
HEADER = {
"User-Agent": "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5"
}
PAYLOAD = {
"name": "",
"token": "",
"tabN": "",
"topNo": 10,
"whr": 'question like "video_name" or byname like "video_name"',
"orderBy": "isTop DESC, date_time",
"orderType": "DESC",
"keys": "question,answer,isTop,id"
}
IS_TOKEN = True
TOKEN_ERROR = 'CANNOT_GET_TOKEN_ERROR'
logging.basicConfig(level = logging.DEBUG,
format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s', filename='./resource/logs/video_log', encoding='utf-8')
logger = logging.getLogger(__name__)
def get_token_by_request():
global HEADER
with open('./resource/video/token', 'r') as file:
token_url = file.readline()
logging.debug(f'Get token from {token_url=}')
return requests.get(token_url, headers=HEADER).json()
def get_token():
global IS_TOKEN
global TOKEN_ERROR
if (not IS_TOKEN):
return TOKEN_ERROR
try:
token = get_token_by_request()
logging.debug(f'Get token success: {token=}')
with open('./resource/video/token_backup', 'w') as file:
token['user'] = 'movie_' + token['user'][0]
file.write(json.dumps(token))
logging.debug(f'Get token successed! Write to ./resource/token_backup')
return token
except requests.exceptions.JSONDecodeError:
with open('./resource/token_backup', 'r') as file:
token = json.loads(file.readline())
logging.warning(f'JSONDecodeError: Get token failed!, Read backup local token from ./resource/token_backup')
return token
except Exception as e:
logging.error(f'{e}: The url of get token is not normal, please check service configruation now!')
IS_TOKEN = False
return TOKEN_ERROR
def get_resource_by_token(token, name):
global PAYLOAD
global HEADER
with open('./resource/video/post', 'r') as file:
urls = file.readlines()
PAYLOAD["tabN"] = token["user"]
PAYLOAD["name"] = name
PAYLOAD["whr"] = f'question like "%{name}%" or byname like "%{name}%"'
PAYLOAD["token"] = token["token"]
logging.debug(f'Get {PAYLOAD=}')
video_list = []
for url in urls:
try:
url = url.replace('\n', '')
video = requests.post(url, headers=HEADER, data=PAYLOAD)
logging.debug(f'{url}: {video}')
video = video.json()
if len(video['list']) > 0:
video_list.append(video['list'])
except Exception as e:
logging(f'{e}:Get video resource from {url} failed!')
return video_list
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册