feat: AI 미디어 허브 초기 세팅 및 뼈대 코드 완성
Some checks failed
Build and Push Docker Image / build-and-push (push) Failing after 3m7s
Some checks failed
Build and Push Docker Image / build-and-push (push) Failing after 3m7s
This commit is contained in:
40
worker/downloader.py
Normal file
40
worker/downloader.py
Normal file
@@ -0,0 +1,40 @@
|
||||
import os
|
||||
import sys
|
||||
import argparse
|
||||
import yt_dlp
|
||||
|
||||
def progress_hook(d):
|
||||
if d['status'] == 'downloading':
|
||||
percent = d.get('_percent_str', 'N/A')
|
||||
print(f"PROGRESS: {percent}", flush=True)
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Media Downloader via yt-dlp")
|
||||
parser.add_argument("url", help="URL of the media to download")
|
||||
parser.add_argument("--start", help="Start time for crop (e.g. 00:01:00)", default=None)
|
||||
parser.add_argument("--end", help="End time for crop (e.g. 00:02:30)", default=None)
|
||||
args = parser.parse_args()
|
||||
|
||||
ydl_opts = {
|
||||
'outtmpl': '/downloads/%(title)s.%(ext)s',
|
||||
'progress_hooks': [progress_hook],
|
||||
'quiet': True,
|
||||
'no_warnings': True,
|
||||
}
|
||||
|
||||
if args.start and args.end:
|
||||
print(f"Applying crop from {args.start} to {args.end}")
|
||||
# Note: In a real environment, you might use format sorting and postprocessors like FFmpeg directly.
|
||||
# This is a sample placeholder for the structure.
|
||||
|
||||
# Try downloading
|
||||
try:
|
||||
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
|
||||
print("Download started...")
|
||||
ydl.download([args.url])
|
||||
print("Download finished.")
|
||||
except Exception as e:
|
||||
print(f"Error starting download: {e}", file=sys.stderr)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
1
worker/requirements.txt
Normal file
1
worker/requirements.txt
Normal file
@@ -0,0 +1 @@
|
||||
yt-dlp>=2023.10.13
|
||||
Reference in New Issue
Block a user