From 381816bbad5f03e3164c517668ef889ec0bd3de2 Mon Sep 17 00:00:00 2001 From: wlt233 <1486185683@qq.com> Date: Mon, 26 May 2025 17:12:06 +0800 Subject: [PATCH] feat: tweet detail server api --- config/config_template.json | 1 + server.py | 21 ++++++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/config/config_template.json b/config/config_template.json index 3d89910..1a0733b 100644 --- a/config/config_template.json +++ b/config/config_template.json @@ -3,6 +3,7 @@ "email": "114514@1919.com", "password": "810810", + "url": "127.0.0.1:7237", "callback_url": "http://localhost:1145", "proxy": "socks5://localhost:7890", diff --git a/server.py b/server.py index 35d4541..deec7c3 100644 --- a/server.py +++ b/server.py @@ -8,7 +8,9 @@ from apscheduler.triggers.interval import IntervalTrigger from loguru import logger from quart import Quart, jsonify, request +from src.twi_api import get_detail from src.twitter import task_handler +from src.twi_parser import parse_detail app = Quart(__name__) scheduler = AsyncIOScheduler() @@ -64,14 +66,31 @@ async def list_task(): +@app.route("/tweet/detail", methods=["GET"]) +async def tweet_detail(): + tweet_id = request.args.get("tweet_id") + if not tweet_id: + return jsonify({"error": "tweet_id is required"}), 400 + + try: + data = await get_detail(tweet_id) + data = parse_detail(data) + return jsonify(data) + except Exception as e: + logger.error(f"Tweet detail api error: {e}") + return jsonify({"error": str(e)}), 500 + + + if __name__ == "__main__": import asyncio from hypercorn.asyncio import serve from hypercorn.config import Config + with open("./config/config.json", "r", encoding="utf-8") as f: conf = json.load(f) config = Config() - config.bind = ["127.0.0.1:7217"] + config.bind = [conf["url"]] config.accesslog = logging.getLogger('hypercorn.access') config.errorlog = logging.getLogger('hypercorn.error') asyncio.run(serve(app, config))