瀏覽代碼

rearrange

ming 3 年之前
父節點
當前提交
db28fd57fd
共有 5 個文件被更改,包括 55 次插入54 次删除
  1. 二進制
      api/__pycache__/main.cpython-39.pyc
  2. 二進制
      api/__pycache__/models.cpython-39.pyc
  3. 15 54
      api/main.py
  4. 40 0
      api/models.py
  5. 二進制
      api/util/__pycache__/swap_face.cpython-39.pyc

二進制
api/__pycache__/main.cpython-39.pyc


二進制
api/__pycache__/models.cpython-39.pyc


+ 15 - 54
api/main.py

@@ -1,13 +1,13 @@
-from fastapi import FastAPI,Cookie, Depends, FastAPI, Query, WebSocket, status, WebSocketDisconnect,File, UploadFile
-from os import listdir
+from fastapi import FastAPI,Cookie, Depends, Query, WebSocket, status, WebSocketDisconnect,File, UploadFile,Request,Response,HTTPException
+from fastapi.templating import Jinja2Templates
+from fastapi.responses import HTMLResponse, RedirectResponse, JSONResponse
+from typing import List, Optional
 from os.path import isfile, isdir, join
 from os.path import isfile, isdir, join
 import threading
 import threading
 import zhtts
 import zhtts
 import os 
 import os 
 import urllib
 import urllib
-from typing import List
 import requests
 import requests
-from pydantic import BaseModel
 from bs4 import BeautifulSoup
 from bs4 import BeautifulSoup
 from PIL import Image,ImageDraw,ImageFont
 from PIL import Image,ImageDraw,ImageFont
 import pyttsx3
 import pyttsx3
@@ -23,7 +23,7 @@ from fastapi.responses import FileResponse
 from websocket import create_connection
 from websocket import create_connection
 from fastapi.middleware.cors import CORSMiddleware
 from fastapi.middleware.cors import CORSMiddleware
 import dataset
 import dataset
-from datetime import datetime
+from datetime import datetime, timedelta
 from util.swap_face import swap_face
 from util.swap_face import swap_face
 from fastapi.staticfiles import StaticFiles
 from fastapi.staticfiles import StaticFiles
 import shutil
 import shutil
@@ -33,21 +33,16 @@ from passlib.context import CryptContext
 from jose import JWTError, jwt
 from jose import JWTError, jwt
 from fastapi_jwt_auth import AuthJWT
 from fastapi_jwt_auth import AuthJWT
 from fastapi_jwt_auth.exceptions import AuthJWTException
 from fastapi_jwt_auth.exceptions import AuthJWTException
+from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
+import models
 import pymysql
 import pymysql
 pymysql.install_as_MySQLdb()
 pymysql.install_as_MySQLdb()
 
 
 app = FastAPI()
 app = FastAPI()
 
 
-origins = [
-    "https://hhh.com.tw"
-    "http://172.105.205.52",
-    "http://172.105.205.52:8001",
-    "http://172.104.93.163",
-]
 
 
 app.add_middleware(
 app.add_middleware(
     CORSMiddleware,
     CORSMiddleware,
-    # allow_origins=origins,
     allow_origins=["*"],
     allow_origins=["*"],
     allow_credentials=True,
     allow_credentials=True,
     allow_methods=["*"],
     allow_methods=["*"],
@@ -74,42 +69,7 @@ img_upload_folder = '/var/www/html/'+tmp_img_sub_folder
 video_dest = '/var/www/html/'+video_sub_folder
 video_dest = '/var/www/html/'+video_sub_folder
 avatar_dest = '/var/www/html/'+avatar_sub_folder
 avatar_dest = '/var/www/html/'+avatar_sub_folder
 
 
-class Token(BaseModel):
-    access_token: str
-    token_type: str
-
-class swap_req(BaseModel):
-    imgurl: str
-
-class request(BaseModel):
-    name: str
-    text_content: List[str]
-    image_urls: List[str]
-    avatar: str
-    client_id :str
-
-class request_eng(BaseModel):
-    name: str
-    text_content: List[str]
-    image_urls: List[str]
-    sub_titles: List[str]
-    avatar: str
-    client_id :str
-# AuthJWT setting
-class Settings(BaseModel):
-    authjwt_secret_key: str = SECRET_KEY
-    authjwt_token_location: set = {"cookies"}
-    authjwt_cookie_secure: bool = False
-    authjwt_cookie_csrf_protect: bool = True
-
-class User(BaseModel):
-    username: str
-    email: str
-    password: str
-    token: Optional[str] = None
-    
-class TokenData(BaseModel):
-    username: Optional[str] = None
+
 
 
 @app.get("/index2")
 @app.get("/index2")
 async def index2():
 async def index2():
@@ -176,7 +136,7 @@ async def access_token(form_data: OAuth2PasswordRequestForm = Depends(), Authori
 
 
 @app.post("/register")
 @app.post("/register")
 async def register(request: Request):
 async def register(request: Request):
-    user = User(**await request.form())
+    user = models.User(**await request.form())
     user_register(user)
     user_register(user)
     return templates.TemplateResponse("login.html", {'request': request,"success": True}, status_code=status.HTTP_302_FOUND)
     return templates.TemplateResponse("login.html", {'request': request,"success": True}, status_code=status.HTTP_302_FOUND)
 
 
@@ -197,7 +157,7 @@ async def avatar():
     return FileResponse('static/gen_avatar.html')
     return FileResponse('static/gen_avatar.html')
 
 
 @app.post("/swapFace")
 @app.post("/swapFace")
-async def swapFace(req:swap_req):
+async def swapFace(req:models.swap_req):
     if 'http' not in req.imgurl:
     if 'http' not in req.imgurl:
         req.imgurl= 'http://'+req.imgurl
         req.imgurl= 'http://'+req.imgurl
     try:
     try:
@@ -224,7 +184,7 @@ async def create_upload_file(file: UploadFile = File(...)):
     return {"msg": 'www.choozmo.com:8168/'+tmp_img_sub_folder+img_name+'.jpg'}
     return {"msg": 'www.choozmo.com:8168/'+tmp_img_sub_folder+img_name+'.jpg'}
 
 
 @app.post("/make_anchor_video_v2")
 @app.post("/make_anchor_video_v2")
-async def make_anchor_video_v2(req:request):
+async def make_anchor_video_v2(req:models.request):
     if len(req.image_urls) != len(req.text_content):
     if len(req.image_urls) != len(req.text_content):
         return {'msg':'副標題數量、圖片(影片)數量以及台詞數量必須一致'}
         return {'msg':'副標題數量、圖片(影片)數量以及台詞數量必須一致'}
     for idx in range(len(req.image_urls)):
     for idx in range(len(req.image_urls)):
@@ -249,7 +209,7 @@ async def make_anchor_video_v2(req:request):
     return {"msg":"製作影片需要時間,請您耐心等候,成果會傳送至LINE群組中"} 
     return {"msg":"製作影片需要時間,請您耐心等候,成果會傳送至LINE群組中"} 
 
 
 @app.post("/make_anchor_video_eng")
 @app.post("/make_anchor_video_eng")
-async def make_anchor_video_eng(req:request_eng):
+async def make_anchor_video_eng(req:models.request_eng):
     if len(req.image_urls) != len(req.sub_titles) or len(req.sub_titles) != len(req.text_content):
     if len(req.image_urls) != len(req.sub_titles) or len(req.sub_titles) != len(req.text_content):
         return {'msg':'副標題數量、圖片(影片)數量以及台詞數量必須一致'}
         return {'msg':'副標題數量、圖片(影片)數量以及台詞數量必須一致'}
     for idx in range(len(req.image_urls)):
     for idx in range(len(req.image_urls)):
@@ -282,7 +242,7 @@ async def history_input():
 
 
 @AuthJWT.load_config
 @AuthJWT.load_config
 def get_config():
 def get_config():
-    return Settings()
+    return models.Settings()
 
 
 @app.exception_handler(AuthJWTException)
 @app.exception_handler(AuthJWTException)
 def authjwt_exception_handler(request: Request, exc: AuthJWTException):
 def authjwt_exception_handler(request: Request, exc: AuthJWTException):
@@ -338,10 +298,11 @@ def get_password_hash(password):
 def verify_password(plain_password, hashed_password):
 def verify_password(plain_password, hashed_password):
     return pwd_context.verify(plain_password, hashed_password)
     return pwd_context.verify(plain_password, hashed_password)
 def authenticate_user(username: str, password: str):
 def authenticate_user(username: str, password: str):
+    db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/AI_anchor?charset=utf8mb4')
     if not check_user_exists(username):  # if user don't exist
     if not check_user_exists(username):  # if user don't exist
         return False
         return False
     user_dict = next(iter(db.query('SELECT * FROM AI_anchor.users where username ="'+username+'"')))
     user_dict = next(iter(db.query('SELECT * FROM AI_anchor.users where username ="'+username+'"')))
-    user = User(**user_dict)
+    user = models.User(**user_dict)
     if not verify_password(password, user.password):
     if not verify_password(password, user.password):
         return False
         return False
     return user
     return user

+ 40 - 0
api/models.py

@@ -0,0 +1,40 @@
+from pydantic import BaseModel
+from typing import List, Optional
+SECRET_KEY = "df2f77bd544240801a048bd4293afd8eeb7fff3cb7050e42c791db4b83ebadcd"
+ALGORITHM = "HS256"
+class Token(BaseModel):
+    access_token: str
+    token_type: str
+
+class swap_req(BaseModel):
+    imgurl: str
+
+class request(BaseModel):
+    name: str
+    text_content: List[str]
+    image_urls: List[str]
+    avatar: str
+    client_id :str
+
+class request_eng(BaseModel):
+    name: str
+    text_content: List[str]
+    image_urls: List[str]
+    sub_titles: List[str]
+    avatar: str
+    client_id :str
+# AuthJWT setting
+class Settings(BaseModel):
+    authjwt_secret_key: str = SECRET_KEY
+    authjwt_token_location: set = {"cookies"}
+    authjwt_cookie_secure: bool = False
+    authjwt_cookie_csrf_protect: bool = True
+
+class User(BaseModel):
+    username: str
+    email: str
+    password: str
+    token: Optional[str] = None
+    
+class TokenData(BaseModel):
+    username: Optional[str] = None

二進制
api/util/__pycache__/swap_face.cpython-39.pyc