Browse Source

trying post with token

ming 4 years ago
parent
commit
b7e33d7c21

BIN
api/__pycache__/main.cpython-39.pyc


BIN
api/__pycache__/models.cpython-39.pyc


+ 13 - 7
api/main.py

@@ -1,4 +1,4 @@
-from fastapi import FastAPI,Cookie, Depends, Query, WebSocket, status, WebSocketDisconnect,File, UploadFile,Request,Response,HTTPException
+from fastapi import FastAPI,Cookie, Depends, Query, status,File, UploadFile,Request,Response,HTTPException
 from fastapi.templating import Jinja2Templates
 from fastapi.templating import Jinja2Templates
 from fastapi.responses import HTMLResponse, RedirectResponse, JSONResponse
 from fastapi.responses import HTMLResponse, RedirectResponse, JSONResponse
 from typing import List, Optional
 from typing import List, Optional
@@ -20,7 +20,6 @@ import re
 import asyncio
 import asyncio
 import urllib.request
 import urllib.request
 from fastapi.responses import FileResponse
 from fastapi.responses import FileResponse
-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, timedelta
 from datetime import datetime, timedelta
@@ -36,6 +35,7 @@ from fastapi_jwt_auth.exceptions import AuthJWTException
 from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
 from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
 import models
 import models
 import pymysql
 import pymysql
+from first import first
 pymysql.install_as_MySQLdb()
 pymysql.install_as_MySQLdb()
 
 
 app = FastAPI()
 app = FastAPI()
@@ -55,6 +55,7 @@ pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
 
 
 app.mount("/static", StaticFiles(directory="static"), name="static")
 app.mount("/static", StaticFiles(directory="static"), name="static")
 app.mount("/static/img", StaticFiles(directory="static/img"), name="static/img")
 app.mount("/static/img", StaticFiles(directory="static/img"), name="static/img")
+app.mount("/templates", StaticFiles(directory="templates"), name="templates")
 
 
 templates = Jinja2Templates(directory="templates")
 templates = Jinja2Templates(directory="templates")
 oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
 oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
@@ -80,10 +81,17 @@ async def index2():
     return FileResponse('static/index_eng.html')
     return FileResponse('static/index_eng.html')
 
 
 # home page
 # home page
+@app.get("/index", response_class=HTMLResponse)
+async def get_home_page(request: Request, response: Response):
+    return templates.TemplateResponse("index.html", {"request": request, "response": response})
 @app.get("/", response_class=HTMLResponse)
 @app.get("/", response_class=HTMLResponse)
 async def get_home_page(request: Request, response: Response):
 async def get_home_page(request: Request, response: Response):
     return templates.TemplateResponse("index.html", {"request": request, "response": response})
     return templates.TemplateResponse("index.html", {"request": request, "response": response})
 
 
+@app.get("/make_video", response_class=HTMLResponse)
+async def get_home_page(request: Request, response: Response):
+    return templates.TemplateResponse("make_video.html", {"request": request, "response": response})
+
 # login & register page
 # login & register page
 @app.get("/login", response_class=HTMLResponse)
 @app.get("/login", response_class=HTMLResponse)
 async def get_login_and_register_page(request: Request):
 async def get_login_and_register_page(request: Request):
@@ -108,12 +116,10 @@ async def login_for_access_token(request: Request, form_data: OAuth2PasswordRequ
     table.update(dict(user), ['username'])
     table.update(dict(user), ['username'])
     access_token = Authorize.create_access_token(subject=user.username)
     access_token = Authorize.create_access_token(subject=user.username)
     refresh_token = Authorize.create_refresh_token(subject=user.username)
     refresh_token = Authorize.create_refresh_token(subject=user.username)
-
     Authorize.set_access_cookies(access_token)
     Authorize.set_access_cookies(access_token)
     Authorize.set_refresh_cookies(refresh_token)
     Authorize.set_refresh_cookies(refresh_token)
-
-    return templates.TemplateResponse("index.html", {"request": request, "msg": 'Login'})
-    #return {"access_token": access_token, "token_type": "bearer"}
+    #return templates.TemplateResponse("index.html", {"request": request, "msg": 'Login'})
+    return {"access_token": access_token, "token_type": "bearer"}
 
 
 
 
 @app.post("/token")
 @app.post("/token")
@@ -130,7 +136,6 @@ async def access_token(form_data: OAuth2PasswordRequestForm = Depends(), Authori
     access_token = create_access_token(
     access_token = create_access_token(
         data={"sub": user.username}, expires_delta=access_token_expires
         data={"sub": user.username}, expires_delta=access_token_expires
     )
     )
-
     return {"access_token": access_token, "token_type": "bearer"}
     return {"access_token": access_token, "token_type": "bearer"}
 
 
 
 
@@ -146,6 +151,7 @@ def protected(request: Request, Authorize: AuthJWT = Depends()):
     current_user = Authorize.get_jwt_subject()
     current_user = Authorize.get_jwt_subject()
     return current_user
     return current_user
 
 
+
 @app.get('/logout')
 @app.get('/logout')
 def logout(request: Request, Authorize: AuthJWT = Depends()):
 def logout(request: Request, Authorize: AuthJWT = Depends()):
     Authorize.jwt_required()
     Authorize.jwt_required()

+ 4 - 1
api/models.py

@@ -37,4 +37,7 @@ class User(BaseModel):
     token: Optional[str] = None
     token: Optional[str] = None
     
     
 class TokenData(BaseModel):
 class TokenData(BaseModel):
-    username: Optional[str] = None
+    username: Optional[str] = None
+
+class phone(BaseModel):
+    price: int

BIN
api/static/img/Angela.webp


+ 14 - 0
api/static/script_msg.js → api/static/script_util.js

@@ -346,3 +346,17 @@ $('.owl-carousel').owlCarousel({
       }
       }
   }
   }
 })
 })
+
+$.ajax({
+  url: 'http://127.0.0.1:8000/user_profile2',
+  dataType: 'json', // 預期從server接收的資料型態
+  contentType: 'application/json; charset=utf-8', // 要送到server的資料型態
+  type: 'post',
+  success: function (suc_data) {
+    alert(suc_data.msg)
+  },
+  //data:JSON.stringify({n1:"12",n2:"22"}),
+  error: function (error) {
+    console.error(error)
+  }
+});

+ 42 - 0
api/static/style.css

@@ -711,3 +711,45 @@ footer {
 	background-color: #398ee9;
 	background-color: #398ee9;
 }
 }
 
 
+
+body {
+  font-family: "Lato", sans-serif;
+}
+.sidenav {
+  height: 100%;
+  width: 250px;
+  position: fixed;
+  z-index: 1;
+  top: 0;
+  left: 0;
+  background: linear-gradient(to bottom, #1C7CE0, #150051);
+  overflow-x: hidden;
+  transition: 0.5s;
+  padding-top: 20px;
+}
+
+.sidenav a {
+  padding: 8px 8px 8px 32px;
+  text-decoration: none;
+  font-size: 25px;
+  color: #818181;
+  display: block;
+  transition: 0.3s;
+}
+
+.sidenav a:hover {
+  color: #f1f1f1;
+}
+
+.sidenav .closebtn {
+  position: absolute;
+  top: 0;
+  right: 25px;
+  font-size: 36px;
+  margin-left: 50px;
+}
+
+@media screen and (max-height: 450px) {
+  .sidenav {padding-top: 15px;}
+  .sidenav a {font-size: 18px;}
+}

+ 21 - 2
api/templates/index.html

@@ -11,6 +11,24 @@
     <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
     <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
         integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
         integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
         crossorigin="anonymous"></script>
         crossorigin="anonymous"></script>
+        <meta charset="UTF-8">
+        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <title>AI ANCHOR GO</title>
+        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css">
+        <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" integrity="sha384-DNOHZ68U8hZfKXOrtjWvjxusGo9WQnrNx2sqG0tfsghAvtVlRW3tvkXWZh58N9jp"
+          crossorigin="anonymous">
+        <link rel="stylesheet"
+          href="https://use.fontawesome.com/releases/v5.1.0/css/all.css" integrity="sha384-lKuwvrZot6UHsBSfcMvOkWwlCMgc0TaWr+30HWe3a4ltaBwTZhyTEggF5tJv8tbt"
+          crossorigin="anonymous">
+          <link rel="preconnect" href="https://fonts.googleapis.com">
+          <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
+          <link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap" rel="stylesheet"> 
+        <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x" crossorigin="anonymous">
+        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/sweetalert2@11.0.18/dist/sweetalert2.min.css">
+        <link rel="stylesheet" href="static/owl.carousel.min.css">
+        <link rel="stylesheet" href="static/owl.theme.default.min.css">
+        <link rel="stylesheet" href="static/style.css">
+        <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
     <!-- <title>Login</title> -->
     <!-- <title>Login</title> -->
     <title>{% block title %}{% endblock %} - My Webpage</title>
     <title>{% block title %}{% endblock %} - My Webpage</title>
     {% endblock %}
     {% endblock %}
@@ -63,7 +81,7 @@
     <!-- footer -->
     <!-- footer -->
     <footer class="fixed-bottom text-center py-2">
     <footer class="fixed-bottom text-center py-2">
         {% block footer %}
         {% block footer %}
-        &copy; Copyright 2021 by <a href="http://www.choozmo.com/">ChoozMo</a>.
+    
         {% endblock %}
         {% endblock %}
     </footer>
     </footer>
     <!-- ================================================================= -->
     <!-- ================================================================= -->
@@ -73,8 +91,9 @@
     <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/js/bootstrap.min.js" integrity="sha384-Atwg2Pkwv9vp0ygtn1JAojH0nYbwNJLPhwyoVbhoPwBhjQPR5VtM2+xf0Uwh9KtT" crossorigin="anonymous"></script> 
     <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/js/bootstrap.min.js" integrity="sha384-Atwg2Pkwv9vp0ygtn1JAojH0nYbwNJLPhwyoVbhoPwBhjQPR5VtM2+xf0Uwh9KtT" crossorigin="anonymous"></script> 
     <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11.0.18/dist/sweetalert2.all.min.js"></script>
     <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11.0.18/dist/sweetalert2.all.min.js"></script>
     <script src="//cdnjs.cloudflare.com/ajax/libs/validate.js/0.13.1/validate.min.js"></script>
     <script src="//cdnjs.cloudflare.com/ajax/libs/validate.js/0.13.1/validate.min.js"></script>
-
+    <script src="static/owl.carousel.min.js"></script>
     <script src="templates/script_index.js"></script>
     <script src="templates/script_index.js"></script>
+    <script src="static/script_util.js"></script>
 </body>
 </body>
 
 
 </html>
 </html>

+ 171 - 0
api/templates/make_video.html

@@ -0,0 +1,171 @@
+{% extends "index.html" %}
+{% block title %}Login{% endblock %}
+{% block head %}
+{{ super() }}
+{% endblock %}
+{% block content %}
+
+
+
+  <div class="container-fluid">
+    <div id="mySidenav" class="sidenav">
+      <!-- <a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a> -->
+      <h2 class="go_title">AI ANCHOR GO</h2>
+      <ul class="nav-list">
+        <li class="nav-list-item pb-1 mb-3" data-bs-toggle="modal" data-bs-target="#howto"><i class="fas fa-book-open me-2"></i>使用說明</li>
+        <li class="nav-list-item pb-1" data-bs-toggle="modal" data-bs-target="#history" onclick="openNav()"><i class="fas fa-history me-2"></i>歷史紀錄</li>
+      </ul>
+      <p class="right-text text-white d-inline-block">Choozmo All Rights Reserved</p>
+    </div>
+    <!-- <span style="font-size:30px;cursor:pointer" onclick="openNav()">&#9776; 過去紀錄</span> -->
+    <div class="content ms-auto">
+      <form id="msform">
+        <div class="linker__box">
+          <p>預覽影片</p>
+          <i class="fas fa-link"></i>
+          <a id='linker' style="display: none;" class="ms-2">影片連結</a>
+        </div>
+        <!-- fieldsets -->
+        <fieldset>
+          <h3 class="fs-subtitle">標題<img class="ms-1" src="static/img/question.png" alt="" data-bs-toggle="tooltip" data-bs-placement="right" title="將作為影片的內嵌標題"></h3>
+          <input id=title type="text" name='t1' class='title_new' value="" placeholder="標題" /> <br/>
+        </fieldset>
+        <fieldset>
+          <h3  class="fs-subtitle">選擇人物<img class="ms-1" src="static/img/question.png" alt="" data-bs-toggle="tooltip" data-bs-placement="right" title="將作為影片的講者"></h3>
+          <select id="avatar" class='avatar'>
+            <option value="6">Angus</option>
+            <option value="7">Peggy</option>
+            <option value="8">Stacy</option>
+            <option value="10">Nina黑</option>
+            <option value="9">Nina灰</option>
+            <option value="11">Summer韓小夏</option>
+            <option value="12">Jocelyn</option>
+            <option value="12">Angela</option>
+          </select>
+          <div class="owl-carousel owl-theme">
+            <div class="card item" data-avatar="Angus" data-img="angus">
+              <div class="imgfr"><img src="static/img/angus.webp" class="card-img-top" alt="..."></div>
+              <div class="card-body">
+                <h5 class="card-title">Angus</h5>
+              </div>
+            </div>
+            <div class="card item" data-avatar="Peggy" data-img="peggy">
+              <div class="imgfr"><img src="static/img/peggy.webp" class="card-img-top" alt="..."></div>
+              <div class="card-body">
+                <h5 class="card-title">Peggy</h5>
+              </div>
+            </div>
+            <div class="card item" data-avatar="Stacy" data-img="stacy">
+              <div class="imgfr"><img src="static/img/stacy.webp" class="card-img-top" alt="..."></div>
+              <div class="card-body">
+                <h5 class="card-title">Stacy</h5>
+              </div>
+            </div>
+            <div class="card item" data-avatar="Nina黑" data-img="ninablack">
+              <div class="imgfr"><img src="static/img/ninablack.webp" class="card-img-top" alt="..."></div>
+              <div class="card-body">
+                <h5 class="card-title">Nina黑</h5>
+              </div>
+            </div>
+            <div class="card item" data-avatar="Nina灰" data-img="ninawhite">
+              <div class="imgfr"><img src="static/img/ninawhite.webp" class="card-img-top" alt="..."></div>
+              <div class="card-body">
+                <h5 class="card-title">Nina灰</h5>
+              </div>
+            </div>
+            <div class="card item" data-avatar="Summer韓小夏" data-img="summer">
+              <div class="imgfr"><img src="static/img/summer.webp" class="card-img-top" alt="..."></div>
+              <div class="card-body">
+                <h5 class="card-title">Summer韓小夏</h5>
+              </div>
+            </div>
+            <div class="card item" data-avatar="Jocelyn" data-img="Jocelyn">
+              <div class="imgfr"><img src="static/img/Jocelyn.webp" class="card-img-top" alt="..."></div>
+              <div class="card-body">
+                <h5 class="card-title">Jocelyn</h5>
+              </div>
+            </div>
+            <div class="card item" data-avatar="Angela" data-img="Angela">
+              <div class="imgfr"><img src="static/img/Angela.webp" class="card-img-top" alt="..."></div>
+              <div class="card-body">
+                <h5 class="card-title">Angela</h5>
+              </div>
+            </div>
+          </div>
+        </fieldset>
+        <fieldset>
+          <h3 class="fs-subtitle">台詞</h3>
+          <div class="subtitle-inputs">
+          
+          </div>
+            <span class="add">+</span>
+        </fieldset>
+        <fieldset id='imgSrc'>
+          <h3 class="fs-subtitle" style="display: inline-block;">影像連結<img class="ms-1" src="static/img/question.png" alt="" data-bs-toggle="tooltip" data-bs-placement="right" title="僅接受png, jpg, mp4格式"></h3><br/>
+          <div class="img-inputs">
+          </div>
+          <span class="addimg">+</span>
+          <input id="checker" type="button" name="next" class="next action-button" value="送出" />
+          <h3 style="display: none;" class="fs-subtitle">處理進度</h3>
+          <div style="display: none;" id="myProgress">
+            <div style="display: none;" id="myBar">0%</div>
+          </div>
+        </fieldset>
+      </form>
+      <!-- <div style="width: 80%;margin: 0 auto;"><iframe src="http://www.choozmo.com:8168/ai_anchor_video/16250306886652043.mp4" frameborder="0" style="width: 100%;height: 400px;"></iframe></div> -->
+    </div>
+    
+    <div class="modal fade" tabindex="-1" id="howto" aria-labelledby="howto" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <h5 class="modal-title" id="staticBackdropLabel">使用說明</h5>
+            <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
+          </div>
+          <div class="modal-body">
+              <div class="modal-terms">
+                  <ol class="ps-0">
+                      <li>1. 一句台詞請對應提供一個影像連結做為搭配</li>
+                      <li>2. 影像連結檔案格式支援:<stong class="strong">.png, jpg, .mp4</stong></li>
+                      <li>3. 點選“送出”之後需等待一段影片製作的時間,請您耐心等候,待製作完畢可於通知網址查看</li>
+                  </ol>
+              </div>
+          </div>
+        </div>
+      </div>
+  </div> 
+  <div class="modal" tabindex="-1" id="history" aria-labelledby="history" aria-hidden="true">
+    <div class="modal-dialog modal-dialog-scrollable">
+      <div class="modal-content">
+        <div class="modal-header">
+          <h5 class="modal-title" id="staticBackdropLabel">歷史紀錄</h5>
+          <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
+        </div>
+        <div class="modal-body">
+            <div class="modal-terms">
+              <div class="loader"><img src="static/img/bx_loader.gif" alt=""></div>
+              <ol class="ps-0 historyList">
+              </ol>
+            </div>
+        </div>
+      </div>
+    </div>
+  </div>
+  <div class="modal" tabindex="-1"  id="avatarmega" aria-labelledby="history" aria-hidden="true">
+    <div class="modal-dialog modal-dialog-centered">
+      <div class="modal-content text-center">
+        <div class="modal-header">
+          <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"><img src="static/img/close.svg" alt=""></button>
+        </div>
+        <div class="modal-body">
+          <img class="modal-img" src="" alt="">
+          <h5 class="modal-title mt-2"></h5>
+        </div>
+      </div>
+    </div>
+  </div>
+  </div>
+  
+  
+
+  {% endblock %}

+ 1 - 0
api/templates/script_index.js

@@ -13,6 +13,7 @@ $("#go_login").click(function () {
     if (xhr.readyState === 4) {
     if (xhr.readyState === 4) {
       console.log(xhr.status);
       console.log(xhr.status);
       console.log(xhr.responseText);
       console.log(xhr.responseText);
+      alert('登入成功')
       window.location.replace( "/index" )
       window.location.replace( "/index" )
     }
     }
   };
   };

BIN
api/util/__pycache__/swap_face.cpython-39.pyc