minor fixes

This commit is contained in:
Dantenerosas 2023-09-25 18:10:53 +03:00 committed by nikili0n
parent 4a37e46ab9
commit 823b06c6e5
6 changed files with 4 additions and 25 deletions

View File

@ -1,6 +1,5 @@
import asyncio import asyncio
import json import json
import re
from playwright.async_api import async_playwright from playwright.async_api import async_playwright
from playwright.async_api import Playwright from playwright.async_api import Playwright

View File

@ -1,7 +1,6 @@
from __future__ import unicode_literals from __future__ import unicode_literals
import os import os
from urllib.parse import urlparse
from yt_dlp import YoutubeDL from yt_dlp import YoutubeDL
@ -26,7 +25,6 @@ class VideoDownloader:
self.info = ydl.extract_info(self.link, download=False) self.info = ydl.extract_info(self.link, download=False)
def download(self): def download(self):
# TODO: удалить все файлы связанные с текущим видео, которые сейчас остались
base = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 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']) base_download_dir = os.path.join(base, os.pardir, "downloads", self.info['extractor_key'])
for root, dirs, files in os.walk(base_download_dir): for root, dirs, files in os.walk(base_download_dir):

View File

@ -1,4 +1,3 @@
import datetime
import errno import errno
import os import os

View File

@ -46,7 +46,6 @@ TypeError: string indices must be integers
''' '''
async def is_task_already_done_or_exist(redis: RedisClient, link: str): 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() messages = await redis.get_task_done_queue()
tasks = [ tasks = [
@ -80,21 +79,6 @@ async def index(request: Request):
@app.post('/submit/') @app.post('/submit/')
async def get_url_for_download_video(request: Request, data: SubmitIn = Depends()): 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() red = RedisClient()
task_done = await is_task_already_done_or_exist(red, data.link) task_done = await is_task_already_done_or_exist(red, data.link)
task_in_process = await is_task_in_process(red, data.link) task_in_process = await is_task_in_process(red, data.link)

View File

@ -39,9 +39,8 @@ class MergeOutputFormatEnum(Enum):
@dataclass @dataclass
class SubmitIn: class SubmitIn:
#TODO: дефолтный значения
link: str = Form(...) link: str = Form(...)
video_format: VideoFormatEnum = Form(...) video_format: VideoFormatEnum = Form(default=MergeOutputFormatEnum.format_mp4)
audio_format: AudioFormatEnum = Form(...) audio_format: AudioFormatEnum = Form(default=AudioFormatEnum.format_m4a)
merge_output_format: MergeOutputFormatEnum = Form(...) merge_output_format: MergeOutputFormatEnum = Form(default=MergeOutputFormatEnum.format_mp4)

View File

@ -93,7 +93,7 @@
const link = document.getElementById("link").value const link = document.getElementById("link").value
const xhr2 = new XMLHttpRequest(); const xhr2 = new XMLHttpRequest();
// TODO: скорректировать ссылку, она должна быть относительной // 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.responseType = 'json';
xhr2.onload = function() { xhr2.onload = function() {
// TODO: добавить обработку исключений и всех возможных кодов в ответе // TODO: добавить обработку исключений и всех возможных кодов в ответе