Spaces:
Sleeping
Sleeping
| # --- SYSTEM PATCH --- | |
| import socket | |
| # Bypass DNS standar | |
| def custom_dns_lookup(host, port=0, family=0, type=0, proto=0, flags=0): | |
| # Biarkan sistem memilih jalur terbaik (IPv4/IPv6) secara alami | |
| # Karena kita akan pakai Cookies, biasanya IP tidak dipermasalahkan lagi | |
| return socket.getaddrinfo_original(host, port, family, type, proto, flags) | |
| socket.getaddrinfo_original = socket.getaddrinfo | |
| socket.getaddrinfo = custom_dns_lookup | |
| # -------------------- | |
| from flask import Flask, render_template, request, send_file | |
| import yt_dlp | |
| import os | |
| import glob | |
| import time | |
| app = Flask(__name__) | |
| DOWNLOAD_FOLDER = "downloads" | |
| if not os.path.exists(DOWNLOAD_FOLDER): | |
| os.makedirs(DOWNLOAD_FOLDER) | |
| def home(): | |
| return render_template("index.html") | |
| def download(): | |
| url = request.form.get("url") | |
| quality = request.form.get("quality") | |
| format_type = request.form.get("format") | |
| # Bersihkan file lama | |
| files = glob.glob(os.path.join(DOWNLOAD_FOLDER, "*")) | |
| for f in files: | |
| try: | |
| os.remove(f) | |
| except: | |
| pass | |
| output_template = os.path.join(DOWNLOAD_FOLDER, "%(title)s.%(ext)s") | |
| # KONFIGURASI DENGAN COOKIES (SOLUSI FINAL "SIGN IN") | |
| ydl_opts = { | |
| "outtmpl": output_template, | |
| "format": f"bestvideo[height<={quality}]+bestaudio/best" if format_type == "mp4" else "bestaudio/best", | |
| "merge_output_format": "mp4", | |
| "nocheckcertificate": True, | |
| "quiet": True, | |
| "no_warnings": True, | |
| # INI KUNCINYA: Membaca file cookies.txt yang Anda upload | |
| "cookiefile": "cookies.txt", | |
| "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36", | |
| } | |
| if format_type == "mp3": | |
| ydl_opts.update({ | |
| "format": "bestaudio/best", | |
| "postprocessors": [{ | |
| "key": "FFmpegExtractAudio", | |
| "preferredcodec": "mp3", | |
| "preferredquality": "192", | |
| }], | |
| }) | |
| try: | |
| with yt_dlp.YoutubeDL(ydl_opts) as ydl: | |
| ydl.download([url]) | |
| time.sleep(1) | |
| list_of_files = glob.glob(os.path.join(DOWNLOAD_FOLDER, "*")) | |
| if not list_of_files: | |
| return "Gagal: Video tidak ditemukan." | |
| latest_file = max(list_of_files, key=os.path.getctime) | |
| return send_file(latest_file, as_attachment=True) | |
| except Exception as e: | |
| return f"Error: {str(e)}" | |
| if __name__ == "__main__": | |
| app.run(host="0.0.0.0", port=7860) |