import asyncio import socket import time from fastapi import FastAPI, Request from fastapi.responses import HTMLResponse from fastapi.staticfiles import StaticFiles from fastapi.templating import Jinja2Templates import requests import uvicorn from fastapi.responses import FileResponse,JSONResponse from fastapi import FastAPI, Depends, HTTPException, Form import httpx import os from config import * from db.engine import create_all_table from fastapi.middleware.cors import CORSMiddleware from api.login import login_router from api.upload import upload_router from api.webhook import webhook_route from api.asr import asr_router from contextlib import asynccontextmanager from sqlmodel import SQLModel from douyin.manage_user import auto_refresh_access_token,auto_renew_refresh_token # from task_manage.main_task import rk_app @asynccontextmanager async def lifespan(app: FastAPI): # 在应用启动前运行的代码 create_all_table() asyncio.create_task(auto_refresh_access_token()) asyncio.create_task(auto_renew_refresh_token()) yield # 在应用关闭后运行的代码 pass app = FastAPI(lifespan=lifespan) app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.include_router(login_router) app.include_router(upload_router) app.include_router(webhook_route) app.include_router(asr_router) def get_session(request: Request): return request.session @app.get("/") async def read_root(request: Request): return {"message": "FastApi server is running.", "time":time.strftime("%Y-%m-%d_%H-%M-%S", time.localtime())} def main(): logger.debug(f"https://open-douyin-cf.magong.site 公网代理地址,cloudflare dns proxy ,由 caddy 转发到 8600 端口") logger.debug(f"https://open-douyin-wk.magong.site 公网代理地址,cloudflare workers 转发到 8600 端口") logger.debug(f"http://sv-v2.magong.site:{PORT} 仅支持 ipv6 ,直连、满速、无延迟。缺点是不支持 https 协议,因为不经过 Caddy 代理,直达 Fastapi 没有配置 https") logger.debug(f"https://open-douyin.magong.site 内网穿透隧道,cloudflare tunnel ,经常访问不了") logger.info(f"http://localhost:{PORT} ⭐ 推荐。 vscode 会自动建立一条本地隧道,可以在本地浏览器直接打开") # logger.info(f"扫码登录 https://open.douyin.com/platform/oauth/connect/?client_key=aw6aipmfdtplwtyq&response_type=code&scope=user_info,renew_refresh_token,trial.whitelist,item.comment&redirect_uri=https://api.magong.site/swl/douyin/verify_callback") # "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJfMDAwTGlWX28wRkdLTXdhWmdxR01DdmNWU2YtVUFuTlVfa2siLCJleHAiOjE3MjAzNDMyOTR9.vmTMpzXb-Z4uc963e0odepOT8AcvgYELtng0PDKBeDA" logger.info(f"扫码登录 https://open.douyin.com/platform/oauth/connect/?client_key=aw6aipmfdtplwtyq&response_type=code&scope=user_info,renew_refresh_token&redirect_uri=https://api.magong.site/swl/douyin/verify_callback") logger.info(f"https://swl.magong.site/ 访问前端网站") uvicorn.run(app, host=None, port=PORT, log_level="info") if __name__ == "__main__": main()