diff --git a/src/core/link_parser.py b/src/core/link_parser.py index c6659d5..6dc205d 100644 --- a/src/core/link_parser.py +++ b/src/core/link_parser.py @@ -1,6 +1,5 @@ import asyncio import json -import re from playwright.async_api import async_playwright from playwright.async_api import Playwright diff --git a/src/core/ydl.py b/src/core/ydl.py index 22e4280..0c6fe59 100644 --- a/src/core/ydl.py +++ b/src/core/ydl.py @@ -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): diff --git a/src/parsers/base_parser.py b/src/parsers/base_parser.py index 8dfab29..fecd537 100644 --- a/src/parsers/base_parser.py +++ b/src/parsers/base_parser.py @@ -1,4 +1,3 @@ -import datetime import errno import os diff --git a/src/web/main.py b/src/web/main.py index 2f498d0..edd50a6 100644 --- a/src/web/main.py +++ b/src/web/main.py @@ -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) diff --git a/src/web/schemes/submit.py b/src/web/schemes/submit.py index 482453a..4913165 100644 --- a/src/web/schemes/submit.py +++ b/src/web/schemes/submit.py @@ -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) diff --git a/src/web/templates/index.html b/src/web/templates/index.html index 8bea704..e1eb97e 100644 --- a/src/web/templates/index.html +++ b/src/web/templates/index.html @@ -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: добавить обработку исключений и всех возможных кодов в ответе