# --- 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) @app.route("/") def home(): return render_template("index.html") @app.route("/download", methods=["POST"]) 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)