Добавил новые ЭП для новой версии загрузки видео с YouTube
This commit is contained in:
@@ -2,19 +2,52 @@ import os
|
||||
|
||||
from app.core.config import settings
|
||||
from app.core.uploader import uploader_backend
|
||||
from app.utils.youtube import YtDlpManager
|
||||
from app.schemas import DownloadRequest, DownloadResponse
|
||||
from app.utils.uploader import S3UploadBackend
|
||||
from app.schemas import DownloadRequest, DownloadResponse, DownloadResponseV2
|
||||
|
||||
|
||||
class YouTubeService:
|
||||
@staticmethod
|
||||
def download(data: DownloadRequest):
|
||||
from app.utils.youtube import YtDlpManager
|
||||
|
||||
manager = YtDlpManager(str(data.url), uploader_backend)
|
||||
uploader_backend.key_prefix = f"{manager.id}@{data.quality}@"
|
||||
video_url = manager.download_video(data.quality)
|
||||
audio_url = manager.download_audio()
|
||||
return DownloadResponse(video=video_url, audio=audio_url)
|
||||
|
||||
@staticmethod
|
||||
def download_v2(data: DownloadRequest):
|
||||
filepath = None
|
||||
try:
|
||||
from app.utils.youtubeV2 import YtDlpManager
|
||||
|
||||
manager = YtDlpManager(str(data.url))
|
||||
best_audio = manager.best_audio()
|
||||
best_video = manager.best_video(data.quality)
|
||||
filepath = manager.download(best_video, best_audio)
|
||||
upload_backend = S3UploadBackend(f"{manager.id}@{data.quality}@")
|
||||
video_url = upload_backend.upload(os.path.basename(filepath), filepath)
|
||||
return DownloadResponseV2(video=video_url)
|
||||
finally:
|
||||
if filepath:
|
||||
os.remove(filepath)
|
||||
|
||||
@staticmethod
|
||||
def resolutions(url: str):
|
||||
from app.utils.youtubeV2 import YtDlpManager
|
||||
manager = YtDlpManager(url)
|
||||
return manager.resolutions
|
||||
|
||||
@staticmethod
|
||||
def filesize(data: DownloadRequest):
|
||||
from app.utils.youtubeV2 import YtDlpManager
|
||||
manager = YtDlpManager((data.url))
|
||||
video_size = manager.best_video(data.quality).filesize
|
||||
audio_size = manager.best_audio().filesize
|
||||
return {"filesize": video_size + audio_size}
|
||||
|
||||
|
||||
class Files:
|
||||
@staticmethod
|
||||
|
||||
Reference in New Issue
Block a user