Browse Source

move pytransc

ming 3 years ago
parent
commit
57ca4237c5
55 changed files with 417 additions and 714 deletions
  1. 0 0
      api/pytranscriber/.DS_Store
  2. 0 0
      api/pytranscriber/control/__init__.py
  3. 0 0
      api/pytranscriber/control/__pycache__/__init__.cpython-37.pyc
  4. 0 0
      api/pytranscriber/control/__pycache__/__init__.cpython-38.pyc
  5. 0 0
      api/pytranscriber/control/__pycache__/__init__.cpython-39.pyc
  6. 0 0
      api/pytranscriber/control/__pycache__/ctr_autosub.cpython-37.pyc
  7. 0 0
      api/pytranscriber/control/__pycache__/ctr_autosub.cpython-38.pyc
  8. 0 0
      api/pytranscriber/control/__pycache__/ctr_autosub.cpython-39.pyc
  9. 0 0
      api/pytranscriber/control/__pycache__/ctr_main.cpython-37.pyc
  10. 0 0
      api/pytranscriber/control/__pycache__/ctr_main.cpython-38.pyc
  11. 0 0
      api/pytranscriber/control/__pycache__/ctr_main.cpython-39.pyc
  12. 0 0
      api/pytranscriber/control/__pycache__/thread_cancel_autosub.cpython-37.pyc
  13. 0 0
      api/pytranscriber/control/__pycache__/thread_cancel_autosub.cpython-38.pyc
  14. 0 0
      api/pytranscriber/control/__pycache__/thread_cancel_autosub.cpython-39.pyc
  15. 0 0
      api/pytranscriber/control/__pycache__/thread_exec_autosub.cpython-37.pyc
  16. 0 0
      api/pytranscriber/control/__pycache__/thread_exec_autosub.cpython-38.pyc
  17. 0 0
      api/pytranscriber/control/__pycache__/thread_exec_autosub.cpython-39.pyc
  18. 0 0
      api/pytranscriber/control/ctr_autosub.py
  19. 0 0
      api/pytranscriber/control/ctr_main.py
  20. 0 0
      api/pytranscriber/control/thread_cancel_autosub.py
  21. 0 0
      api/pytranscriber/control/thread_exec_autosub.py
  22. 0 0
      api/pytranscriber/gui/__init__.py
  23. 0 0
      api/pytranscriber/gui/__pycache__/__init__.cpython-37.pyc
  24. 0 0
      api/pytranscriber/gui/__pycache__/__init__.cpython-38.pyc
  25. 0 0
      api/pytranscriber/gui/__pycache__/__init__.cpython-39.pyc
  26. 0 0
      api/pytranscriber/gui/__pycache__/gui.cpython-37.pyc
  27. 0 0
      api/pytranscriber/gui/__pycache__/gui.cpython-38.pyc
  28. 0 0
      api/pytranscriber/gui/__pycache__/gui.cpython-39.pyc
  29. 0 0
      api/pytranscriber/gui/gui.py
  30. 0 0
      api/pytranscriber/gui/gui.ui
  31. 0 0
      api/pytranscriber/model/__init__.py
  32. 0 0
      api/pytranscriber/model/__pycache__/__init__.cpython-37.pyc
  33. 0 0
      api/pytranscriber/model/__pycache__/__init__.cpython-38.pyc
  34. 0 0
      api/pytranscriber/model/__pycache__/__init__.cpython-39.pyc
  35. 0 0
      api/pytranscriber/model/__pycache__/param_autosub.cpython-37.pyc
  36. 0 0
      api/pytranscriber/model/__pycache__/param_autosub.cpython-38.pyc
  37. 0 0
      api/pytranscriber/model/__pycache__/param_autosub.cpython-39.pyc
  38. 0 0
      api/pytranscriber/model/param_autosub.py
  39. 0 0
      api/pytranscriber/util/__init__.py
  40. 0 0
      api/pytranscriber/util/__pycache__/__init__.cpython-37.pyc
  41. 0 0
      api/pytranscriber/util/__pycache__/__init__.cpython-38.pyc
  42. 0 0
      api/pytranscriber/util/__pycache__/__init__.cpython-39.pyc
  43. 0 0
      api/pytranscriber/util/__pycache__/srtparser.cpython-37.pyc
  44. 0 0
      api/pytranscriber/util/__pycache__/srtparser.cpython-38.pyc
  45. 0 0
      api/pytranscriber/util/__pycache__/srtparser.cpython-39.pyc
  46. 0 0
      api/pytranscriber/util/__pycache__/util.cpython-37.pyc
  47. 0 0
      api/pytranscriber/util/__pycache__/util.cpython-38.pyc
  48. 0 0
      api/pytranscriber/util/__pycache__/util.cpython-39.pyc
  49. 0 0
      api/pytranscriber/util/srtparser.py
  50. 0 0
      api/pytranscriber/util/util.py
  51. 93 0
      api/static/modifyScript2.html
  52. 0 714
      api/static/script_util - 複製.js
  53. 80 0
      api/static/script_util2.js
  54. 137 0
      api/static/upload2.js
  55. 107 0
      api/static/uploadAudio2.html

+ 0 - 0
composer/pytranscriber/.DS_Store → api/pytranscriber/.DS_Store


+ 0 - 0
composer/pytranscriber/control/__init__.py → api/pytranscriber/control/__init__.py


+ 0 - 0
composer/pytranscriber/control/__pycache__/__init__.cpython-37.pyc → api/pytranscriber/control/__pycache__/__init__.cpython-37.pyc


+ 0 - 0
composer/pytranscriber/control/__pycache__/__init__.cpython-38.pyc → api/pytranscriber/control/__pycache__/__init__.cpython-38.pyc


+ 0 - 0
composer/pytranscriber/control/__pycache__/__init__.cpython-39.pyc → api/pytranscriber/control/__pycache__/__init__.cpython-39.pyc


+ 0 - 0
composer/pytranscriber/control/__pycache__/ctr_autosub.cpython-37.pyc → api/pytranscriber/control/__pycache__/ctr_autosub.cpython-37.pyc


+ 0 - 0
composer/pytranscriber/control/__pycache__/ctr_autosub.cpython-38.pyc → api/pytranscriber/control/__pycache__/ctr_autosub.cpython-38.pyc


+ 0 - 0
composer/pytranscriber/control/__pycache__/ctr_autosub.cpython-39.pyc → api/pytranscriber/control/__pycache__/ctr_autosub.cpython-39.pyc


+ 0 - 0
composer/pytranscriber/control/__pycache__/ctr_main.cpython-37.pyc → api/pytranscriber/control/__pycache__/ctr_main.cpython-37.pyc


+ 0 - 0
composer/pytranscriber/control/__pycache__/ctr_main.cpython-38.pyc → api/pytranscriber/control/__pycache__/ctr_main.cpython-38.pyc


+ 0 - 0
composer/pytranscriber/control/__pycache__/ctr_main.cpython-39.pyc → api/pytranscriber/control/__pycache__/ctr_main.cpython-39.pyc


+ 0 - 0
composer/pytranscriber/control/__pycache__/thread_cancel_autosub.cpython-37.pyc → api/pytranscriber/control/__pycache__/thread_cancel_autosub.cpython-37.pyc


+ 0 - 0
composer/pytranscriber/control/__pycache__/thread_cancel_autosub.cpython-38.pyc → api/pytranscriber/control/__pycache__/thread_cancel_autosub.cpython-38.pyc


+ 0 - 0
composer/pytranscriber/control/__pycache__/thread_cancel_autosub.cpython-39.pyc → api/pytranscriber/control/__pycache__/thread_cancel_autosub.cpython-39.pyc


+ 0 - 0
composer/pytranscriber/control/__pycache__/thread_exec_autosub.cpython-37.pyc → api/pytranscriber/control/__pycache__/thread_exec_autosub.cpython-37.pyc


+ 0 - 0
composer/pytranscriber/control/__pycache__/thread_exec_autosub.cpython-38.pyc → api/pytranscriber/control/__pycache__/thread_exec_autosub.cpython-38.pyc


+ 0 - 0
composer/pytranscriber/control/__pycache__/thread_exec_autosub.cpython-39.pyc → api/pytranscriber/control/__pycache__/thread_exec_autosub.cpython-39.pyc


+ 0 - 0
composer/pytranscriber/control/ctr_autosub.py → api/pytranscriber/control/ctr_autosub.py


+ 0 - 0
composer/pytranscriber/control/ctr_main.py → api/pytranscriber/control/ctr_main.py


+ 0 - 0
composer/pytranscriber/control/thread_cancel_autosub.py → api/pytranscriber/control/thread_cancel_autosub.py


+ 0 - 0
composer/pytranscriber/control/thread_exec_autosub.py → api/pytranscriber/control/thread_exec_autosub.py


+ 0 - 0
composer/pytranscriber/gui/__init__.py → api/pytranscriber/gui/__init__.py


+ 0 - 0
composer/pytranscriber/gui/__pycache__/__init__.cpython-37.pyc → api/pytranscriber/gui/__pycache__/__init__.cpython-37.pyc


+ 0 - 0
composer/pytranscriber/gui/__pycache__/__init__.cpython-38.pyc → api/pytranscriber/gui/__pycache__/__init__.cpython-38.pyc


+ 0 - 0
composer/pytranscriber/gui/__pycache__/__init__.cpython-39.pyc → api/pytranscriber/gui/__pycache__/__init__.cpython-39.pyc


+ 0 - 0
composer/pytranscriber/gui/__pycache__/gui.cpython-37.pyc → api/pytranscriber/gui/__pycache__/gui.cpython-37.pyc


+ 0 - 0
composer/pytranscriber/gui/__pycache__/gui.cpython-38.pyc → api/pytranscriber/gui/__pycache__/gui.cpython-38.pyc


+ 0 - 0
composer/pytranscriber/gui/__pycache__/gui.cpython-39.pyc → api/pytranscriber/gui/__pycache__/gui.cpython-39.pyc


+ 0 - 0
composer/pytranscriber/gui/gui.py → api/pytranscriber/gui/gui.py


+ 0 - 0
composer/pytranscriber/gui/gui.ui → api/pytranscriber/gui/gui.ui


+ 0 - 0
composer/pytranscriber/model/__init__.py → api/pytranscriber/model/__init__.py


+ 0 - 0
composer/pytranscriber/model/__pycache__/__init__.cpython-37.pyc → api/pytranscriber/model/__pycache__/__init__.cpython-37.pyc


+ 0 - 0
composer/pytranscriber/model/__pycache__/__init__.cpython-38.pyc → api/pytranscriber/model/__pycache__/__init__.cpython-38.pyc


+ 0 - 0
composer/pytranscriber/model/__pycache__/__init__.cpython-39.pyc → api/pytranscriber/model/__pycache__/__init__.cpython-39.pyc


+ 0 - 0
composer/pytranscriber/model/__pycache__/param_autosub.cpython-37.pyc → api/pytranscriber/model/__pycache__/param_autosub.cpython-37.pyc


+ 0 - 0
composer/pytranscriber/model/__pycache__/param_autosub.cpython-38.pyc → api/pytranscriber/model/__pycache__/param_autosub.cpython-38.pyc


+ 0 - 0
composer/pytranscriber/model/__pycache__/param_autosub.cpython-39.pyc → api/pytranscriber/model/__pycache__/param_autosub.cpython-39.pyc


+ 0 - 0
composer/pytranscriber/model/param_autosub.py → api/pytranscriber/model/param_autosub.py


+ 0 - 0
composer/pytranscriber/util/__init__.py → api/pytranscriber/util/__init__.py


+ 0 - 0
composer/pytranscriber/util/__pycache__/__init__.cpython-37.pyc → api/pytranscriber/util/__pycache__/__init__.cpython-37.pyc


+ 0 - 0
composer/pytranscriber/util/__pycache__/__init__.cpython-38.pyc → api/pytranscriber/util/__pycache__/__init__.cpython-38.pyc


+ 0 - 0
composer/pytranscriber/util/__pycache__/__init__.cpython-39.pyc → api/pytranscriber/util/__pycache__/__init__.cpython-39.pyc


+ 0 - 0
composer/pytranscriber/util/__pycache__/srtparser.cpython-37.pyc → api/pytranscriber/util/__pycache__/srtparser.cpython-37.pyc


+ 0 - 0
composer/pytranscriber/util/__pycache__/srtparser.cpython-38.pyc → api/pytranscriber/util/__pycache__/srtparser.cpython-38.pyc


+ 0 - 0
composer/pytranscriber/util/__pycache__/srtparser.cpython-39.pyc → api/pytranscriber/util/__pycache__/srtparser.cpython-39.pyc


+ 0 - 0
composer/pytranscriber/util/__pycache__/util.cpython-37.pyc → api/pytranscriber/util/__pycache__/util.cpython-37.pyc


+ 0 - 0
composer/pytranscriber/util/__pycache__/util.cpython-38.pyc → api/pytranscriber/util/__pycache__/util.cpython-38.pyc


+ 0 - 0
composer/pytranscriber/util/__pycache__/util.cpython-39.pyc → api/pytranscriber/util/__pycache__/util.cpython-39.pyc


+ 0 - 0
composer/pytranscriber/util/srtparser.py → api/pytranscriber/util/srtparser.py


+ 0 - 0
composer/pytranscriber/util/util.py → api/pytranscriber/util/util.py


+ 93 - 0
api/static/modifyScript2.html

@@ -0,0 +1,93 @@
+<!DOCTYPE html>
+<html lang="zh-TW">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge, Chrome=1">
+    <meta http-equiv="Cache-Control" content="no-cache">
+    <title>AI Spokesgirl</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/scss/style.css">
+    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
+    
+    <!-- Google Tag Manager -->
+    <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
+    new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
+    j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
+    'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
+    })(window,document,'script','dataLayer','GTM-5M8S4GH');</script>
+    <!-- End Google Tag Manager -->
+</head>
+
+<body>
+
+
+    <div class="container-fluid px-0 mx-0">
+        <div class="row px-0 mx-0">
+            
+            <div class="col-lg-12 px-0">
+                <div>
+                    <form id="msform">
+                       
+                        <!-- fieldsets -->
+                  
+                        
+                        <fieldset class='msrcParent'>
+                            <h3 class="fs-subtitle" set-lan="html:lines">台詞</h3>
+
+                         
+                            <!--
+                                <div class="subtitle-inputs">
+                                <input type="text" name="t1" placeholder="1"  style="width:calc(50% - 2rem);">
+                                <input type="text" name="t1"   style="width:calc(50% - 2rem);">
+                            </div>
+
+
+                            -->
+                      
+                           
+                        </fieldset>
+                     
+                    </form>
+                    
+                </div>
+
+            </div>
+
+   
+            <input type='button' class='confirmbtn' value='確認'>
+        
+        </div>
+        
+    </div>
+
+    <footer class="fixed-bottom text-center py-2">
+
+    </footer> 
+    <!-- =====================================<script src="static/common.js"></script>============================ -->
+  
+    <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
+    <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js'></script>
+    <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js" integrity="sha384-IQsoLXl5PILFhosVNubq5LC7Qb9DXgDA9i+tQ8Zj3iwWAwPtgFTxbJ8NT4GN1R8p" 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="static/script_util.js"></script>
+    
+
+</body>
+
+</html>

+ 0 - 714
api/static/script_util - 複製.js

@@ -1,714 +0,0 @@
-//checkRoute();
-
-let userBasics = JSON.parse(localStorage.getItem('user_profile')) || [];
-
-
-if(userBasics.length > 0 && typeof(userBasics) !== 'string'){
-  $('.userName').html(`<h2 class="user-name text-white mt-lg-3 mt-xl-1 fw-bold">Hi ${userBasics.user_info.userName}</h2>`);
-} 
-
-
-function checkRoute() {
-  let jwt_token = get_jwt_token();
-  /* if(jwt_token == undefined) {
-    window.location.replace("login.html");
-  } */
-  axios({
-    method: 'post',
-    url: 'https://www.choozmo.com:8887/user_profile',
-    headers: { 
-        'accept': 'text/html',
-        'Authorization': `Bearer ${jwt_token}`
-     }
-  }).then(res => {
-    console.log(res.data);
-    if(res.status !== 200) {
-      window.location.replace("login.html");
-    }
-    var userName='';
-    userName+=`<h2 class="user-name text-white mt-lg-3 mt-xl-1 fw-bold">Hi ${res.data.user_info.userName}</h2>`;
-    $('.userName').html(userName);
-  }).catch(err => {
-    console.log(err);
-    window.location.replace("login.html");
-  }); 
-}
-
-const btnLoginPage = document.querySelector('.btn-login');
-const btnUserProfile = document.querySelector('.btn-userProfile');
-const btnLogout = document.querySelector('.btn-logout');
-function loginControl() {
-  btnLoginPage.style.display = 'none';
-  btnLogout.style.display = 'block';
-  btnUserProfile.style.display = 'block';
-}
-
-loginControl();
-
-let lan = localStorage.getItem('lan');
-
-$('.dropdown-toggle').click(() => {
-  lan = localStorage.getItem('lan');
-  checkLan();
-});
-
-checkLan();
-
-function checkLan() {
-  if(lan == 'en') {
-    $('.btn-makev').css('display', 'none');
-    $('.btn-makelong').css('display', 'none');
-  } else {
-    $('.btn-makev').css('display', 'block');
-    $('.btn-makelong').css('display', 'block');
-  }
-}
-
-function getAvatar() {
-  let jwt_token = get_jwt_token();
-  if(jwt_token == undefined) {
-    window.location.replace("login.html");
-  }
-  axios({
-    method: 'post',
-    url: 'https://www.choozmo.com:8887/get_avatar_by_role',
-    headers: { 
-        'accept': 'text/html',
-        'Authorization': `Bearer ${jwt_token}`
-     }
-  }).then(res => {
-    console.log(res.data);
-    let result = [...res.data];
-    let str = '';
-    let carStr = '';
-    for(let i = 0; i < result.length; i++) {
-      str += `<option value="${result[i].num}">${result[i].name}</option>`
-    }
-    for(let i = 0; i < result.length; i++) {
-      carStr += `<div class="card item col" data-avatar="${result[i].name}" data-img="${result[i].name.toLowerCase()}">
-                    <div class="imgfr"><img src="static/img/${result[i].name.toLowerCase()}.webp" class="card-img-top" alt="..."></div>
-                    <div class="card-body">
-                        <h5 class="card-title">${result[i].name.toLowerCase()}</h5>
-                    </div>
-                </div>`;
-    }
-    $('#avatar').html(`<option set-lan="html:p_choose_character" value="請選擇人物" selected="selected" disabled>>請選擇人物</option>${str}`);
-    $('.owl-carousel').html(carStr);
-   // card = document.getElementsByClassName('card');
-    console.log(card);
-    addCardListener(card);
-  }).catch(err => {
-    console.log(err);
-  });
-}
-
-//getAvatar();
-
-const card = document.getElementsByClassName('card');
-var client_id = Date.now()
-var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
-var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
-  return new bootstrap.Tooltip(tooltipTriggerEl)
-});
-var myModal = new bootstrap.Modal(document.getElementById('history'), {
-  keyboard: false
-})
-var avatarModal = new bootstrap.Modal(document.getElementById('avatarmega'), {
-  keyboard: false
-})
-var modalImg = document.querySelector("#avatarmega .modal-img");
-var modalTitle = document.querySelector("#avatarmega .modal-title");
-var avatarSelector = document.getElementById("avatar");
-
-
-avatarSelector.addEventListener('change', avatarChange);
-avatarChange();
-
-function addCardListener() {
-  for (let i = 0; i < card.length; i++) {
-    card[i].addEventListener('click', openavatarModel);
-  }
-}
-
-addCardListener();
-function avatarChange() {
-  var value = avatarSelector.options[avatarSelector.selectedIndex].text;
-  $('.owl-carousel').trigger('to.owl.carousel', avatarSelector.selectedIndex);
-  for (let i = 0; i < card.length; i++) {
-    card[i].classList.remove('active');
-    if (card[i].dataset.avatar == value) {
-      card[i].classList.add('active');
-    }
-  }
-}
-
-function openavatarModel() {
-  console.log(this.dataset.img);
-  modalImg.setAttribute("src", `static/img/${this.dataset.img}.webp`);
-  modalTitle.textContent = `${this.dataset.avatar}`;
-  avatarModal.show();
-}
-
-
-$('input[type=file]').on('change', prepareUpload);
-$('.upload-btn').change(prepareUpload);
-function prepareUpload(event) {
-  files = event.target.files;
-  $(this).prev().val('');
-  var data = new FormData();
-  //data.append('file', $('.img_up1').prop('files')[0]);
-  data.append('file', files[0]);
-  // append other variables to data if you want: data.append('field_name_x', field_value_x);
-  $(this).next().text('');
-  $(this).next().html('<img src="static/img/Spinner-1s-181px.gif">');
-  $.ajax({
-    type: 'POST',
-    processData: false, // important
-    contentType: false, // important
-    data: data,
-    url: 'https://www.choozmo.com:8887/uploadfile',
-    dataType: 'json',
-    success: function (jsonData) {
-      event.target.previousSibling.value = jsonData.msg;
-      console.log(jsonData.msg);
-      $(this).prev().val(jsonData.msg);
-      if(jsonData.msg.zh) {
-        $(this).prev().val(jsonData.msg.zh);
-        event.target.previousSibling.value = jsonData.msg.zh;
-      }
-      event.target.nextSibling.innerHTML = '';
-      event.target.nextSibling.textContent = '上傳檔案';
-      //console.log($(this).next());
-      //$(this).next().html('上傳檔案');
-      //$(this).next().text('上傳檔案');
-    },
-    error: function (error) {
-      event.target.nextSibling.innerHTML = '';
-      event.target.nextSibling.textContent = '上傳檔案';
-      alert('圖片錯誤');
-    }
-  });
-}
-const button = document.querySelector('.next');
-
-$(".next").click(function () {
-  button.setAttribute('disabled', '');
-  setTimeout(function () {
-    button.removeAttribute('disabled')
-  }, 10000);
-  avatar = $('.avatar').val();
-  name_title = $('.title_new').val();
-  txtARR = [];
-  imgARR = [];
-  var step;
-  let contentIdx = document.querySelectorAll(".txtsrc").length;
-  for (let i = 1; i < (contentIdx + 1); i++) {
-    if ($(`.txtsrc${i}`).val() != "") {
-      txtARR.push($(`.txtsrc${i}`).val())
-    }
-  }
-  let imgIdx = document.querySelectorAll(".imgsrc").length;
-  for (let i = 1; i < (imgIdx + 1); i++) {
-    if ($(`.imgsrc${i}`).val() != "") {
-      imgARR.push($(`.imgsrc${i}`).val())
-    }
-  }
-  multiLang = 0;
-  if ($('#multiLang').prop("checked")) {multiLang = 1;}
-  dataOBJ = { "name": name_title, "text_content": txtARR, "image_urls": imgARR, "avatar": avatar,"multiLang":multiLang, "client_id": client_id }
-  objstr = JSON.stringify(dataOBJ);
-  console.log(dataOBJ)
-  jwt_token =  get_jwt_token()
-  var xhr = new XMLHttpRequest();
-  xhr.open("POST", "https://www.choozmo.com:8887/make_anchor_video");
-  xhr.setRequestHeader("accept", "application/json");
-  xhr.setRequestHeader("Authorization","Bearer "+jwt_token)
-  xhr.setRequestHeader("Content-Type", "application/json");
-  xhr.onreadystatechange = function () {
-    if (xhr.readyState === 4) {
-      responseOBJ = JSON.parse(xhr.responseText)
-      console.log(responseOBJ.msg);
-        //let title = "資料已送出";
-        let text;
-        if(lan == 'en') {
-          //title = 'Submitted Successfully!';
-          text = responseOBJ.msg.eng;
-        } else {
-          text = responseOBJ.msg.zh;
-        }
-        Swal.fire({
-         // title: title,
-          icon: 'info',
-          text: text,
-          confirmButtonColor: '#3085d6',
-        });
-      
-    }
-  };
-  var data = renderXHR_data(dataOBJ)
-  console.log(data)
-  result = xhr.send(objstr);
-});
-
-$(".gen_avatar").click(function () {
-  dataOBJ = { "imgurl": $('.img_src').val() }
-  objstr = JSON.stringify(dataOBJ);
-  console.log(dataOBJ)
-  //alert('資料已送出! 請耐心等候')
-  $.ajax({
-    url: 'https://www.choozmo.com:8887/swapFace',
-    dataType: 'json', // 預期從server接收的資料型態
-    contentType: 'application/json; charset=utf-8', // 要送到server的資料型態
-    type: 'post',
-    data: objstr,
-    success: function (suc_data) {
-      alert(suc_data.msg)
-    },
-    //data:JSON.stringify({n1:"12",n2:"22"}),
-    error: function (error) {
-      console.error(error)
-    }
-  });
-});
-
-var loaded_data = ''
-function openNav() {
-  document.getElementById("mySidenav").style.width = "250px";
-  document.querySelector('.loader').style.display = "block";
-  let jwt_token = get_jwt_token();
-  axios({
-    method: 'post',
-    url: 'https://www.choozmo.com:8887/history_input',
-    headers: { 
-        'accept': 'application/json',
-        'Authorization': `Bearer ${jwt_token}`
-     }
-  }).then(res => {
-    console.log(res.data);
-    loaded_data = res.data;
-    var historyList = document.querySelector('.historyList');
-    historyList.innerHTML = '';
-    for (var obj of loaded_data) {
-      var list = document.createElement('li');
-      list.id = obj.id;
-      // div-imgfr
-      var divImgfr = document.createElement('div');
-      divImgfr.classList.add('item_imgfr');
-      var img = document.createElement('img');
-      img.setAttribute('src', obj['image_urls'][0]);
-      divImgfr.appendChild(img);
-      // div-content
-      var contentBox = document.createElement('div');
-      contentBox.classList.add('content-box');
-      var boxTitle = document.createElement('p');
-      boxTitle.classList.add('box-title');
-      boxTitle.textContent = obj.name;
-      boxTitle.id = obj.id;
-      console.log(loaded_data);
-      boxTitle.setAttribute('onclick', `direct(${obj.id})`);
-
-      var boxLink = document.createElement('span');
-      boxLink.classList.add('box-link');
-      boxLink.setAttribute("data-url", obj.link);
-      boxLink.setAttribute('onclick', 'view()');
-      boxLink.innerHTML = '<i class="fas fa-play-circle me-1"></i>觀看影片';
-      contentBox.appendChild(boxTitle);
-      contentBox.appendChild(boxLink);
-      list.classList.add("historyList-item");
-      list.setAttribute('onclick', `direct(${obj.id})`);
-      list.appendChild(divImgfr);
-      list.appendChild(contentBox);
-      historyList.appendChild(list);
-    }
-    document.querySelector('.loader').style.display = "none";
-  
-  }).catch(err => {
-    console.log(err);
-  });
-}
-function closeNav() {
-  document.getElementById("mySidenav").style.width = "250px";
-}
-
-function view() {
-  event.stopPropagation();
-  console.log(event.target);
-  if (event.target.nodeName === 'I') {
-    return;
-  } else {
-    window.open(`http://${event.target.dataset.url}`, '_blank');
-  }
-}
-
-function renderXHR_data(jsonObj) {
-  XHRstring = ''
-  for (const [key, value] of Object.entries(jsonObj)) {
-    console.log(value)
-    if (typeof (value) == "object") {
-      XHRstring += (key+'=['+value.join(',')+']&')
-    }
-    else {
-      XHRstring += (key + '=' + value + '&')
-    }
-  }
-  XHRstring = XHRstring.substring(0, XHRstring.length - 1);
-  return XHRstring
-}
-
-function get_jwt_token(){
-  jwt_raw = document.cookie.split(';').filter(s=>s.includes('jwt_token'))[0];
-  if(!jwt_raw) {return}
-  return jwt_raw.split('=')[1];
-}
-
-function direct(id) {
-  location.href = `make_video2.html?id=${id}`;
-}
-
-
-function load_data(tid, loaded_data, draft = false) {
-  if(!tid) {
-    return;
-  }
-  var title = document.getElementById("title");
-  var linker = document.getElementById("linker");
-  myModal.hide();
-  if(!draft) {
-    linker.setAttribute('href', `http://${loaded_data.find(item => item.id == tid).link}`)
-    linker.setAttribute('target', '_blank')
-    $("#linker").html(`http://${loaded_data.find(item => item.id == tid).link}`)
-    $("#linker").show();
-    $(".linker__box").show();
-  }
-  console.log(loaded_data);
-  let historyItem = loaded_data.filter(item => item.id == tid)[0];
-  console.log(historyItem.title);
-  if(draft) {
-    $(".title_new").val(historyItem.title);
-    $("#avatar").val(historyItem.avatar);
-  } else {
-    $(".title_new").val(loaded_data.find(item => item.id == tid).name);
-    $("#avatar").val(historyItem.avatar);
-  }
-
-  let txtlength = historyItem.text_content.length;
-  let imglength = historyItem.image_urls.length;
-
-  subtitleInputs.innerHTML = '';
-  imgInputs.innerHTML = '';
-  for (let i = 0; i < txtlength; i++) {
-    var txtinput = document.createElement("input");
-    txtinput.setAttribute('type', 'text');
-    txtinput.setAttribute('name', `t${i + 1}`);
-    txtinput.value = historyItem.text_content[i];
-    txtinput.setAttribute('placeholder', `${i + 1}`);
-    txtinput.classList.add('txtsrc', `txtsrc${i + 1}`)
-    subtitleInputs.appendChild(txtinput);
-  }
-  for (let i = 0; i < imglength; i++) {
-    var imginput = document.createElement("input");
-    imginput.setAttribute('type', 'text');
-    imginput.setAttribute('name', `m${i + 1}`);
-    imginput.classList.add('imgsrc', `imgsrc${i + 1}`);
-    imginput.value = historyItem.image_urls[i];
-    imginput.setAttribute('placeholder', `${i + 1}`);
-    imgInputs.appendChild(imginput);
-
-    var imgupload = document.createElement("input");
-    imgupload.setAttribute('id', `img${i + 1}`);
-    imgupload.setAttribute('type', `file`);
-    imgupload.classList.add('img_uploader', 'img_up');
-    imgInputs.appendChild(imgupload);
-    var imguploadlabel = document.createElement("label");
-    imguploadlabel.setAttribute('for', `img${i + 1}`);
-    imguploadlabel.classList.add('upload-btn');
-    imguploadlabel.textContent = '上傳檔案';
-    if(lan == 'en') {
-      imguploadlabel.textContent = 'Upload';
-    }
-    imguploadlabel.setAttribute('set-lan', `html:upload_file`);
-    $('input[type=file]').on('change', prepareUpload);
-    imgInputs.appendChild(imguploadlabel);
-  }
-   setTimeout(() => {
-    JsLoadingOverlay.hide();
-  }, 0);
-}
-
-getpathId();
-
-function getMode() {
-  let id = window.location.search.split('?').pop();
-  let mode = id.split('=')[0];
-  if(mode == 'draftid') {
-    /* JsLoadingOverlay.show({
-      "overlayBackgroundColor": "#FFFFFF",
-      "overlayOpacity": "0.9",
-      "spinnerIcon": "ball-circus",
-      "spinnerColor": "#B9DDF3",
-      "spinnerSize": "2x",
-      "overlayIDName": "overlay",
-      "spinnerIDName": "spinner",
-      "offsetX": 0,
-      "offsetY": 0,
-      "containerID": null,
-      "lockScroll": false,
-      "overlayZIndex": 9998,
-      "spinnerZIndex": 9999
-    }); */
-    getDraftData();
-  } else if(mode == 'id') {
-    /* JsLoadingOverlay.show({
-      "overlayBackgroundColor": "#FFFFFF",
-      "overlayOpacity": "0.9",
-      "spinnerIcon": "ball-circus",
-      "spinnerColor": "#B9DDF3",
-      "spinnerSize": "2x",
-      "overlayIDName": "overlay",
-      "spinnerIDName": "spinner",
-      "offsetX": 0,
-      "offsetY": 0,
-      "containerID": null,
-      "lockScroll": false,
-      "overlayZIndex": 9998,
-      "spinnerZIndex": 9999
-    }); */
-    getData();
-  }
-  return id.split('=')[1];
-  //load_data(id);
-}
-
-getMode();
-
-function getpathId(){
-  let id = window.location.search.split('?').pop();
-  return id.split('=')[1];
-}
-
-function getData() {
-  let jwt_token = get_jwt_token();
-  axios({
-    method: 'post',
-    url: 'https://www.choozmo.com:8887/history_input',
-    headers: { 
-        'accept': 'application/json',
-        'Authorization': `Bearer ${jwt_token}`
-     }
-  }).then(res => {
-    loaded_data = res.data;
-    console.log(loaded_data);
-    const id = getpathId();
-    load_data(id, loaded_data);
-  }).catch(err => {
-    console.log(err);
-  });
-} 
-
-var subtitleInputs = document.querySelector(".subtitle-inputs");
-var imgInputs = document.querySelector(".img-inputs");
-let length = 5;
-function initial() {
-  for (let i = 0; i < length; i++) {
-    rendertxtBlock(i + 1);
-    renderimgBlock(i + 1);
-  }
-  console.log(document.querySelectorAll(".txtsrc").length + 1);
-}
-
-initial();
-
-var addbtn = document.querySelector(".add");
-var addimgbtn = document.querySelector(".addimg");
-
-addbtn.addEventListener('click', addtxtBlock);
-addimgbtn.addEventListener('click', addimgBlock);
-
-function addtxtBlock() {
-  let newIdx = document.querySelectorAll(".txtsrc").length + 1;
-  rendertxtBlock(newIdx);
-}
-
-function addimgBlock() {
-  let newimgIdx = document.querySelectorAll(".imgsrc").length + 1;
-  renderimgBlock(newimgIdx);
-}
-
-function rendertxtBlock(i) {
-  var txtinput = document.createElement("input");
-  txtinput.setAttribute('type', 'text');
-  txtinput.setAttribute('name', `t${i}`);
-  txtinput.value = "";
-  txtinput.setAttribute('placeholder', `${i}`);
-  txtinput.classList.add('txtsrc', `txtsrc${i}`)
-  subtitleInputs.appendChild(txtinput);
-}
-
-function renderimgBlock(i) {
-  var imginput = document.createElement("input");
-  imginput.setAttribute('type', 'text');
-  imginput.setAttribute('name', `m${i}`);
-  imginput.classList.add('imgsrc', `imgsrc${i}`);
-  imginput.value = "";
-  imginput.setAttribute('placeholder', `${i}`);
-  imgInputs.appendChild(imginput);
-
-  var imgupload = document.createElement("input");
-  imgupload.setAttribute('id', `img${i}`);
-  imgupload.setAttribute('type', `file`);
-  imgupload.classList.add('img_uploader', 'img_up');
-  imgInputs.appendChild(imgupload);
-  var imguploadlabel = document.createElement("label");
-  imguploadlabel.setAttribute('for', `img${i}`);
-  imguploadlabel.classList.add('upload-btn');
-  imguploadlabel.textContent = '上傳檔案';
-  if(lan == 'en') {
-    imguploadlabel.textContent = 'Upload';
-  }
-  imguploadlabel.setAttribute('set-lan', `html:upload_file`);
-  imgInputs.appendChild(imguploadlabel);
-  $('input[type=file]').on('change', prepareUpload);
-}
-
-
-$('.owl-carousel').owlCarousel({
-  loop: true,
-  margin: 10,
-  nav: false,
-  mouseDrag: true,
-  touchDrag: true,
-  smartSpeed: 1000,
-  autoplay: true,
-  autoplayTimeout: 8000,
-  autoplayHoverPause: false,
-  responsive: {
-    0: {
-      items: 1
-    },
-    600: {
-      items: 2
-    },
-    1000: {
-      items: 4
-    }
-  }
-});
-
-$('.draft-btn').click(() => {
-  let text = '儲存中...';
-
-  if (lan == 'en') {
-    text = 'Saving...';
-  }
-
-  $('.draft-btn').text(text);
-
-  let jwt_token = get_jwt_token();
-  let avatar = $('.avatar').val();
-  let name_title = $('.title_new').val();
-  let txtARR = [];
-  let imgARR = [];
-  var step;
-  let contentIdx = document.querySelectorAll(".txtsrc").length;
-  for (let i = 1; i < (contentIdx + 1); i++) {
-    if ($(`.txtsrc${i}`).val() != "") {
-      txtARR.push($(`.txtsrc${i}`).val())
-    }
-  }
-  let imgIdx = document.querySelectorAll(".imgsrc").length;
-  for (let i = 1; i < (imgIdx + 1); i++) {
-    if ($(`.imgsrc${i}`).val() != "") {
-      imgARR.push($(`.imgsrc${i}`).val())
-    }
-  }
-  let multiLang = 0
-  if ($('#multiLang').prop("checked")) {multiLang = 1;}
-  let id = window.location.search.split('?').pop();
-  let mode = id.split('=')[0];
-  if(mode == 'draftid') {
-    id = Number(id.split('=')[1]);
-  } else {
-    id = -1;
-  }
-  let dataOBJ = { "id": id, "title": name_title, "text_content": txtARR, "image_urls": imgARR, "avatar": avatar,"multiLang":multiLang }
-  console.log(dataOBJ);
-  axios({
-    method: 'post',
-    url: 'https://www.choozmo.com:8887/save_draft',
-    headers: { 
-        'accept': 'application/json',
-        'Authorization': `Bearer ${jwt_token}`,
-        'Content-Type': 'application/json',
-     },
-    data: dataOBJ
-  }).then(res => {
-    console.log(res.data);
-    $('.draft-btn').text('存為草稿');
-    let title = "儲存完成";
-    if(lan == 'en') {
-      title = 'Saved!'
-      $('.draft-btn').text('Save as Draft');
-    }
-    Swal.fire({
-      title: title,
-      icon: 'success',
-      confirmButtonColor: '#3085d6',
-    }); 
-  }).catch(err => {
-    console.log(err);
-  });
-});
-
-function getDraftData() {
-  let token = get_jwt_token();
-  axios({
-    method: 'post',
-    url: 'https://www.choozmo.com:8887/draft_list',
-    headers: { 
-        'accept': 'application/json',
-        'Authorization': `Bearer ${token}`
-     }
-  }).then(res => {
-    console.log(res.data);
-    let result = [...res.data];
-    let id = getpathId();
-    load_data(id, result, true);
-  }).catch(err => {
-    console.log(err);
-  });
-
-}
-
-$(".copy").click(function(){
-  const copyStr = $(this).next().text();
-  copyToClipboard(copyStr);
-});
-
-const copyToClipboard = str => {
-  const el = document.createElement('textarea');
-  el.value = str;
-  el.setAttribute('readonly', '');
-  el.style.position = 'absolute';
-  el.style.left = '-9999px';
-  document.body.appendChild(el);
-  el.select();
-  document.execCommand('copy');
-  document.body.removeChild(el);
-  Swal.fire({
-    toast: true,
-    icon: 'success',
-    position: 'top-end',
-    title: 'Link copied!',
-    timerProgressBar: true,
-    showConfirmButton: false,
-    timer: 1000,
-    backdrop: false
-  })
-};
-
-$("#lang-manu").hide();
-
-$( "#changeLanguage" ).click(function() {
-  $("#lang-manu").slideToggle();
-  $("#lang-arrow").toggleClass("arrowdoup");
-});

+ 80 - 0
api/static/script_util2.js

@@ -0,0 +1,80 @@
+const urlSearchParams = new URLSearchParams(window.location.search);
+const params = Object.fromEntries(urlSearchParams.entries());
+
+name_hash = params['id']
+dataArr=''
+
+
+function get_script() {
+  var url = "uploadmp3";
+  var xhr = new XMLHttpRequest();
+  xhr.open("POST", url);
+
+  xhr.setRequestHeader("accept", "application/json");
+  xhr.setRequestHeader("Content-Type", "application/json");
+
+  xhr.onreadystatechange = function () {
+    if (xhr.readyState === 4) {
+        console.log(xhr.status);
+        console.log(xhr.responseText);
+        dataArr = xhr.responseText.split(',');
+    }};
+  var data = `{"name_hash": `+name_hash+`}`;
+  xhr.send(data);
+}
+get_script();
+
+var srcInput = document.querySelector(".msrcParent");
+for (step = 0; step < dataArr.length; step++) {
+  console.log(dataArr[step])
+  var pdiv = document.createElement('div');
+  pdiv.classList.add('subtitle-inputs')
+  
+
+  var rawSrc = document.createElement("input");
+  rawSrc.setAttribute('type', 'text');
+  rawSrc.value = dataArr[step];
+  rawSrc.style.width = "47%";
+
+  var mSrc = document.createElement("input");
+  mSrc.setAttribute('type', 'text');
+  mSrc.setAttribute('id', `s${step }`);
+  mSrc.style.width = "47%";
+  pdiv.appendChild(rawSrc)
+  pdiv.appendChild(mSrc)
+
+  srcInput.appendChild(pdiv)
+    
+}
+
+
+$(".confirmbtn" ).click(function() {
+  for (i = 0; i < dataArr.length; i++) {
+    if ($(`#s${i }`).val()!=''){
+      dataArr[i]=$(`#s${i }`).val();
+    }
+  }
+  sendString = dataArr.join(',');
+
+  var url = "http://www.choozmo.com:8889/updateScript";
+
+  var xhr = new XMLHttpRequest();
+  xhr.open("POST", url);
+  
+  xhr.setRequestHeader("accept", "application/json");
+  xhr.setRequestHeader("Content-Type", "application/json");
+  
+  xhr.onreadystatechange = function () {
+     if (xhr.readyState === 4) {
+        console.log(xhr.status);
+        console.log(xhr.responseText);
+        alert('請等待line通知');
+     }};
+  
+  var data = `{"name_hash":`+name_hash+ `,"scriptStr": `+sendString+`}`;
+  
+  xhr.send(data);
+  
+
+
+});

+ 137 - 0
api/static/upload2.js

@@ -0,0 +1,137 @@
+
+$('input[type=file]').on('change', prepareUpload);
+
+// Grab the files and set them to our variable
+function prepareUpload(event) {
+  files = event.target.files;
+  var data = new FormData();
+  //data.append('file', $('.img_up1').prop('files')[0]);
+  data.append('file', files[0]);
+  // append other variables to data if you want: data.append('field_name_x', field_value_x);
+  $(this).next().text('');
+  $(this).next().html('<img src="static/img/Spinner-1s-181px.gif">');
+  $.ajax({
+    type: 'POST',
+    processData: false, // important
+    contentType: false, // important
+    data: data,
+    url: 'uploadmp3',
+    dataType: 'json',
+    success: function (jsonData) {
+      
+      window.location.href = "/modifyScript?id="+jsonData;
+    },
+    error: function (error) {
+      alert('發生錯誤');
+    }
+  });
+}
+const button = document.querySelector('.next');
+
+$(".next").click(function () {
+  button.setAttribute('disabled', '');
+  setTimeout(function () {
+    button.removeAttribute('disabled')
+  }, 4000);
+  avatar = $('.avatar').val();
+  name_title = $('.title_new').val();
+  txtARR = [];
+  imgARR = [];
+  var step;
+  for (step = 1; step <= 10; step++) {
+    if ($(".txtsrc" + step).val() != "") {
+      txtARR.push($(".txtsrc" + step).val())
+    }
+  }
+  var step2;
+  for (step2 = 1; step2 <= 10; step2++) {
+    if ($(".imgsrc" + step2).val() != "") {
+      imgARR.push($(".imgsrc" + step2).val())
+    }
+  }
+  dataOBJ = { "name": name_title, "text_content": txtARR, "image_urls": imgARR, "avatar": avatar, "client_id": client_id }
+  objstr = JSON.stringify(dataOBJ);
+  console.log(dataOBJ)
+  //alert('資料已送出! 請耐心等候')
+  $.ajax({
+    url: '/make_anchor_video_v2',
+    //url: 'http://www.choozmo.com:8888/qqreq',
+    dataType : 'json', // 預期從server接收的資料型態
+    contentType : 'application/json; charset=utf-8', // 要送到server的資料型態
+    type: 'post',
+    data: objstr,
+    success: function(suc_data) {
+      Swal.fire({
+        title: "資料已送出",
+        icon: 'success',
+        text: `${suc_data.msg}`,
+        confirmButtonColor: '#3085d6',
+      });  
+      },
+    //data:JSON.stringify({n1:"12",n2:"22"}),
+    error: function (error) {
+      console.error(error)
+    }
+  });
+  
+  });
+
+$(".gen_avatar").click(function () {
+
+  dataOBJ = { "imgurl": $('.imgsrc').val() }
+  objstr = JSON.stringify(dataOBJ);
+  console.log(dataOBJ)
+  //alert('資料已送出! 請耐心等候')
+  $.ajax({
+    url: '/swapFace',
+    dataType: 'json', // 預期從server接收的資料型態
+    contentType: 'application/json; charset=utf-8', // 要送到server的資料型態
+    type: 'post',
+    data: objstr,
+    success: function (suc_data) {
+      alert(suc_data.msg)
+    },
+    //data:JSON.stringify({n1:"12",n2:"22"}),
+    error: function (error) {
+      console.error(error)
+    }
+  });
+
+});
+
+
+function view() {
+  event.stopPropagation();
+  console.log(event.target);
+  if(event.target.nodeName === 'I') {
+    return;
+  } else {
+    window.open(`http://${event.target.dataset.url}`, '_blank');
+  }
+}
+
+
+function load_data() {
+  var title = document.getElementById("title");
+  var linker = document.getElementById("linker");
+
+  myModal.hide()
+  tid = event.srcElement.id
+  console.log(tid);
+  linker.setAttribute('href', `http://${loaded_data.find(item => item.id == tid).link}`)
+  linker.setAttribute('target', '_blank')
+  $("#linker").html(`http://${loaded_data.find(item => item.id == tid).link}`)
+  $("#linker").show();
+  $(".linker__box").show();
+
+  $(".title_new").val(loaded_data.find(item => item.id == tid).name)
+  var step;
+  for (step = 1; step <= 10; step++) {
+    $(".txtsrc" + step).val(loaded_data.find(item => item.id == tid).text_content[step - 1])
+  }
+  var step2;
+  for (step2 = 1; step2 <= 10; step2++) {
+    $(".imgsrc" + step2).val(loaded_data.find(item => item.id == tid).image_urls[step2 - 1])
+  }
+
+}

+ 107 - 0
api/static/uploadAudio2.html

@@ -0,0 +1,107 @@
+<!DOCTYPE html>
+<html lang="en" >
+<head>
+  <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/style.css">
+  <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
+  <style>
+    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;}
+    }
+    </style>
+</head>
+<body>
+  <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 PODCAST</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>
+      </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">
+        <fieldset id='imgSrc'>
+          <h3 class="fs-subtitle" style="display: inline-block;">Podcast音檔上傳</h3><br/>
+          <input id="img1" type="file" class="img_uploader img_up "><label for="img1" class="upload-btn action-button">上傳檔案</label><br/>
+        
+
+        </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>
+  
+  <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
+  <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js'></script>
+
+
+  <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js" integrity="sha384-IQsoLXl5PILFhosVNubq5LC7Qb9DXgDA9i+tQ8Zj3iwWAwPtgFTxbJ8NT4GN1R8p" 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://cdnjs.cloudflare.com/ajax/libs/validate.js/0.13.1/validate.min.js"></script>
+  <script src="static/upload.js"></script>
+
+
+  <body>
+
+</div>
+
+</body>
+</html>