import os
import requests
import re
from urllib.parse import urlparse, unquote
import shutil
import time

download_directory = "/home/seo2024.ir/"
backup_directory = os.path.join(download_directory, "zr")

replacements = {
    r"zarfilm\.com": "bolboljan.net",
    r"@zarfilmz": "@bollbolljan",
    r"@zarfilm": "@bollbolljan",
    r"@ZarFilm_Com": "@appversion2",
    r"\.\.:: ارائه شده توسط وب سايت زرفيلم ::\..": "..:: ارائه شده توسط وب سايت بلبل جان ::..",
    "زرفيلم": "بلبل جان",
    r"زرفیلم": "بلبل جان",
    r"\.\.:: کانال تلگرام و اینستاگرام زرفيلم ::\..": "..:: کانال تلگرام و اینستاگرام بلبل جان ::..",
    r"آوا مووی تقدیم میکند": "بلبل جان تقدیم می‌کند",
    r"\[ AvaMovie\.in \]": "[ bolboljan.net ]",
    r"ما را در تلگرام و اینستاگرام دنبال کنید": "ما را در تلگرام و اینستاگرام بلبل جان دنبال کنید",
    r"\[ @AvaMovie_in \]": "[ @bollbolljan ]",
    r"آوا مووی - مرجع دانلود فیلم و سریال": "بلبل جان - مرجع دانلود فیلم و سریال",

}

url = "https://seo2024.ir/new.txt"
response = requests.get(url)
response.raise_for_status()
links = [line.strip() for line in response.text.splitlines()]

valid_extensions = ('.vtt', '.srt', '.ass')
filtered_links = []
for link in links:
    path = urlparse(link).path
    if any(path.lower().endswith(ext) for ext in valid_extensions):
        filtered_links.append(link)

os.makedirs(backup_directory, exist_ok=True)

for link in filtered_links:
    try:
        parsed_url = urlparse(link)
        decoded_path = unquote(parsed_url.path.lstrip('/'))

        path_parts = decoded_path.split('/')
        if path_parts and path_parts[0] == 'subz':
            decoded_path = '/'.join(path_parts[1:])

        file_path = os.path.join(download_directory, decoded_path)
        backup_file_path = os.path.join(backup_directory, decoded_path)

        if os.path.exists(file_path):
            print(f"File already exists, skipped: {file_path}")
            continue

        os.makedirs(os.path.dirname(file_path), exist_ok=True)
        os.makedirs(os.path.dirname(backup_file_path), exist_ok=True)

        response = requests.get(link, stream=True)
        response.raise_for_status()
        if response.status_code != 200 or not response.content:
            print(f"Failed download or empty content: {link}")
            continue

        with open(file_path, 'wb') as f:
            for chunk in response.iter_content(chunk_size=8192):
                f.write(chunk)

        print(f"Downloaded: {file_path}")

        with open(file_path, 'r', encoding='utf-8') as f:
            content = f.readlines()

        modified_content = []
        for line in content:
            for old, new in replacements.items():
                line = re.sub(old, new, line, flags=re.IGNORECASE)
            modified_content.append(line)

        with open(file_path, 'w', encoding='utf-8') as f:
            f.writelines(modified_content)

        print(f"Processed and replacements done: {file_path}")

        shutil.copy2(file_path, backup_file_path)
        print(f"Backup created: {backup_file_path}")

    except Exception as e:
        print(f"Error processing {link}: {e}")
        continue

print("All new links downloaded and processed.")

os.system("python3.9 vtt2.py")
time.sleep(3)
