Spaces:
Build error
Build error
| import os | |
| import uuid | |
| import json | |
| import subprocess | |
| static_dir = os.path.join(os.getcwd(), "static") | |
| queue_file = os.path.join(os.getcwd(), "download_queue.json") | |
| if not os.path.exists(static_dir): | |
| os.makedirs(static_dir) | |
| def load_queue(): | |
| if os.path.exists(queue_file): | |
| with open(queue_file, "r") as f: | |
| return json.load(f) | |
| return {} | |
| def save_queue(queue): | |
| with open(queue_file, "a") as f: | |
| json.dump(queue, f) | |
| def download_file(video_url_input, quality): | |
| video_url_input = video_url_input.split("#")[0] | |
| log_id = uuid.uuid4() | |
| log_file_path = os.path.join(static_dir, f"{log_id}.log") | |
| command = f"miyuki -ffmpeg -auto {video_url_input} -quality {quality} -cover" | |
| with open(log_file_path, "w") as log_file: | |
| subprocess.Popen( | |
| command, stdout=log_file, stderr=log_file, text=True, shell=True | |
| ) | |
| log_link = f"./static/{log_id}.log" | |
| return "Downloading", log_link | |
| def check_task_status(url, log_link): | |
| if not log_link: | |
| return "Not Started", "" | |
| log_file = log_link.split("/static/")[-1] | |
| log_path = os.path.join(static_dir, log_file) | |
| if os.path.exists(log_path): | |
| with open(log_path, "r") as f: | |
| content = f.read() | |
| movie_id = url.split("/")[-1] | |
| if f"File integrity for {movie_id}: 100.00%" in content: | |
| return "Success", log_link | |
| elif "Failed to fetch HTML for" in content: | |
| return "Failed", log_link | |
| return "Downloading", log_link | |
| def clean_log_files(): | |
| queue = load_queue() | |
| urls_to_remove = [] | |
| for url, task in queue.items(): | |
| if task["Status"] in ["Success", "Failed"]: | |
| if task["Log"]: | |
| log_file = task["Log"].split("/static/")[-1] | |
| log_path = os.path.join(static_dir, log_file) | |
| if os.path.exists(log_path): | |
| os.remove(log_path) | |
| urls_to_remove.append(url) | |
| for url in urls_to_remove: | |
| del queue[url] | |
| save_queue(queue) | |
| for filename in ["downloaded_urls_miyuki.txt", "ffmpeg_input_miyuki.txt", "tmp_movie_miyuki.html", "miyuki.log"]: | |
| try: | |
| os.remove(filename) | |
| except FileNotFoundError: | |
| pass | |