main.py 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import asyncio
  2. import socket
  3. import time
  4. from fastapi import FastAPI, Request
  5. from fastapi.responses import HTMLResponse
  6. from fastapi.staticfiles import StaticFiles
  7. from fastapi.templating import Jinja2Templates
  8. import requests
  9. import uvicorn
  10. from fastapi.responses import FileResponse,JSONResponse
  11. from fastapi import FastAPI, Depends, HTTPException, Form
  12. import httpx
  13. import os
  14. from config import *
  15. from db.engine import create_all_table
  16. from fastapi.middleware.cors import CORSMiddleware
  17. from api.login import login_router
  18. from api.upload import upload_router
  19. from api.webhook import webhook_route
  20. from api.asr import asr_router
  21. from contextlib import asynccontextmanager
  22. from sqlmodel import SQLModel
  23. from douyin.manage_user import auto_refresh_access_token,auto_renew_refresh_token
  24. # from task_manage.main_task import rk_app
  25. @asynccontextmanager
  26. async def lifespan(app: FastAPI):
  27. # 在应用启动前运行的代码
  28. create_all_table()
  29. asyncio.create_task(auto_refresh_access_token())
  30. asyncio.create_task(auto_renew_refresh_token())
  31. yield
  32. # 在应用关闭后运行的代码
  33. pass
  34. app = FastAPI(lifespan=lifespan)
  35. app.add_middleware(
  36. CORSMiddleware,
  37. allow_origins=["*"],
  38. allow_credentials=True,
  39. allow_methods=["*"],
  40. allow_headers=["*"],
  41. )
  42. app.include_router(login_router)
  43. app.include_router(upload_router)
  44. app.include_router(webhook_route)
  45. app.include_router(asr_router)
  46. def get_session(request: Request):
  47. return request.session
  48. @app.get("/")
  49. async def read_root(request: Request):
  50. return {"message": "FastApi server is running.", "time":time.strftime("%Y-%m-%d_%H-%M-%S", time.localtime())}
  51. def main():
  52. logger.debug(f"https://open-douyin-cf.magong.site 公网代理地址,cloudflare dns proxy ,由 caddy 转发到 8600 端口")
  53. logger.debug(f"https://open-douyin-wk.magong.site 公网代理地址,cloudflare workers 转发到 8600 端口")
  54. logger.debug(f"http://sv-v2.magong.site:{PORT} 仅支持 ipv6 ,直连、满速、无延迟。缺点是不支持 https 协议,因为不经过 Caddy 代理,直达 Fastapi 没有配置 https")
  55. logger.debug(f"https://open-douyin.magong.site 内网穿透隧道,cloudflare tunnel ,经常访问不了")
  56. logger.info(f"http://localhost:{PORT} ⭐ 推荐。 vscode 会自动建立一条本地隧道,可以在本地浏览器直接打开")
  57. # 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")
  58. # "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJfMDAwTGlWX28wRkdLTXdhWmdxR01DdmNWU2YtVUFuTlVfa2siLCJleHAiOjE3MjAzNDMyOTR9.vmTMpzXb-Z4uc963e0odepOT8AcvgYELtng0PDKBeDA"
  59. 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")
  60. logger.info(f"https://swl.magong.site/ 访问前端网站")
  61. uvicorn.run(app, host=None, port=PORT, log_level="info")
  62. if __name__ == "__main__":
  63. main()