51 lines
1.1 KiB
Python
51 lines
1.1 KiB
Python
#!/usr/bin/env python3
|
|
|
|
import subprocess
|
|
import sys
|
|
import time
|
|
from queue import Queue
|
|
from threading import Thread
|
|
|
|
# Queue to hold the URLs
|
|
download_queue = Queue()
|
|
|
|
def download_video(url):
|
|
"""
|
|
Function to download a video using youtube-dl.
|
|
"""
|
|
try:
|
|
print(f"Downloading {url}...")
|
|
subprocess.run(["yt-dlp", url], check=True)
|
|
print(f"Finished downloading {url}")
|
|
except subprocess.CalledProcessError as e:
|
|
print(f"Failed to download {url}: {e}")
|
|
|
|
def worker():
|
|
"""
|
|
Worker function to process items in the queue.
|
|
"""
|
|
while True:
|
|
url = download_queue.get()
|
|
download_video(url)
|
|
download_queue.task_done()
|
|
|
|
def main():
|
|
# Start the worker thread
|
|
thread = Thread(target=worker)
|
|
thread.daemon = True
|
|
thread.start()
|
|
|
|
print("Enter URLs to download. Type 'exit' to quit.")
|
|
while True:
|
|
url = input("URL: ").strip()
|
|
if url.lower() == 'exit':
|
|
break
|
|
download_queue.put(url)
|
|
|
|
# Wait for all downloads to finish
|
|
download_queue.join()
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
|