minor fixes
This commit is contained in:
parent
229d1d4db7
commit
2d3d0c6afb
@ -1,6 +1,5 @@
|
||||
import asyncio
|
||||
import json
|
||||
import re
|
||||
|
||||
from playwright.async_api import async_playwright
|
||||
from playwright.async_api import Playwright
|
||||
|
@ -1,7 +1,6 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import os
|
||||
from urllib.parse import urlparse
|
||||
|
||||
from yt_dlp import YoutubeDL
|
||||
|
||||
@ -26,7 +25,6 @@ class VideoDownloader:
|
||||
self.info = ydl.extract_info(self.link, download=False)
|
||||
|
||||
def download(self):
|
||||
# TODO: удалить все файлы связанные с текущим видео, которые сейчас остались
|
||||
base = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
base_download_dir = os.path.join(base, os.pardir, "downloads", self.info['extractor_key'])
|
||||
for root, dirs, files in os.walk(base_download_dir):
|
||||
|
@ -1,4 +1,3 @@
|
||||
import datetime
|
||||
import errno
|
||||
import os
|
||||
|
||||
|
@ -46,7 +46,6 @@ TypeError: string indices must be integers
|
||||
'''
|
||||
|
||||
async def is_task_already_done_or_exist(redis: RedisClient, link: str):
|
||||
# TODO: добавить real_link? пример - https://yandex.ru/video/preview/398425296752711999 будет грузить https://youtu.be/EjhRS4HUSJc
|
||||
messages = await redis.get_task_done_queue()
|
||||
|
||||
tasks = [
|
||||
@ -80,21 +79,6 @@ async def index(request: Request):
|
||||
|
||||
@app.post('/submit/')
|
||||
async def get_url_for_download_video(request: Request, data: SubmitIn = Depends()):
|
||||
"""
|
||||
TODO:
|
||||
Сабмит должен проверить что задача может быть уже выполненой (отдать ссылку в ответе)
|
||||
или ещё в работе (сообщить об этом в ответе, можно вывести на форму, что такая ссылка уже скачивается, ожидайте)
|
||||
Если условия выше провалены, то мы делаем новую задачу в очередь с переданными параметрами и сообщаем об этом клиенту с кодом (200 или 201)
|
||||
|
||||
Дополнительно, нужен отдельный метод (ури), который позволит получать статус задачи. Опрашиваться примерно раз в 5с,
|
||||
возможны увелечения тайминга в зависимости от ответа апи (на будущее)
|
||||
Варианты ответа
|
||||
1) такой задачи нет (404)
|
||||
2) такая задача есть и выполняется (200 ли?)
|
||||
3) такая задача есть и завершена (200 и выдать ссылку на загрузку)
|
||||
4) такая задача есть и завершена, но с ошибкой (500 и сообщение о том, что можно попробовать выполнить задачу заново,
|
||||
попутно удалив задачу из выполненных, с очисткой мусора за ней)
|
||||
"""
|
||||
red = RedisClient()
|
||||
task_done = await is_task_already_done_or_exist(red, data.link)
|
||||
task_in_process = await is_task_in_process(red, data.link)
|
||||
|
@ -39,9 +39,8 @@ class MergeOutputFormatEnum(Enum):
|
||||
|
||||
@dataclass
|
||||
class SubmitIn:
|
||||
#TODO: дефолтный значения
|
||||
link: str = Form(...)
|
||||
video_format: VideoFormatEnum = Form(...)
|
||||
audio_format: AudioFormatEnum = Form(...)
|
||||
merge_output_format: MergeOutputFormatEnum = Form(...)
|
||||
video_format: VideoFormatEnum = Form(default=MergeOutputFormatEnum.format_mp4)
|
||||
audio_format: AudioFormatEnum = Form(default=AudioFormatEnum.format_m4a)
|
||||
merge_output_format: MergeOutputFormatEnum = Form(default=MergeOutputFormatEnum.format_mp4)
|
||||
|
||||
|
@ -93,7 +93,7 @@
|
||||
const link = document.getElementById("link").value
|
||||
const xhr2 = new XMLHttpRequest();
|
||||
// TODO: скорректировать ссылку, она должна быть относительной
|
||||
xhr2.open('GET', 'http://0.0.0.0:8000/check/?link=' + link);
|
||||
xhr2.open('GET', 'http://'+document.location.host+'/check/?link=' + link);
|
||||
xhr2.responseType = 'json';
|
||||
xhr2.onload = function() {
|
||||
// TODO: добавить обработку исключений и всех возможных кодов в ответе
|
||||
|
Loading…
Reference in New Issue
Block a user