import json
import urllib.request
import urllib.parse
import urllib.error

API_KEY = "41cbd3271baf440196db77f56328ba03"
BASE_URL = "http://192.168.1.66:9696/api/v1/indexer"

indexers = [
    ("limetorrents", "Cardigann", "CardigannSettings"),
    ("eztv", "Cardigann", "CardigannSettings"),
    ("torrentproject2", "Cardigann", "CardigannSettings"),
    ("yts", "Cardigann", "CardigannSettings"),
    ("kickasstorrents-to", "Cardigann", "CardigannSettings"),
    ("kickasstorrents-ws", "Cardigann", "CardigannSettings"),
    ("torrentdownloads", "Cardigann", "CardigannSettings"),
    ("torrentkitty", "Cardigann", "CardigannSettings"),
    ("torrentcore", "Cardigann", "CardigannSettings"),
    ("extratorrent-st", "Cardigann", "CardigannSettings"),
    ("catorrent", "Cardigann", "CardigannSettings"),
    ("pctorrent", "Cardigann", "CardigannSettings"),
    ("torrentsome", "Cardigann", "CardigannSettings"),
    ("torrenttip", "Cardigann", "CardigannSettings"),
    ("vstorrent", "Cardigann", "CardigannSettings"),
    ("vsttorrents", "Cardigann", "CardigannSettings"),
    ("world-torrent", "Cardigann", "CardigannSettings"),
    ("RuTracker.org", "RuTracker.org", "RuTrackerSettings"),
]

headers = {
    "X-Api-Key": "41cbd3271baf440196db77f56328ba03",
    "Content-Type": "application/json"
}

for name, impl, contract in indexers:
    payload = {
        "name": name,
        "implementation": impl,
        "implementationName": impl,
        "configContract": contract,
        "fields": [{"name": "definitionFile", "value": name}],
        "enable": True,
        "tags": [1],
        "priority": 25,
        "protocol": "torrent",
        "appProfileId": 1
    }
    
    # For RuTracker, we might need additional fields
    if name == "RuTracker.org":
        payload["fields"] = [
            {"name": "definitionFile", "value": "RuTracker.org"},
            {"name": "username", "value": ""},
            {"name": "password", "value": ""}
        ]
    
    data = json.dumps(payload).encode('utf-8')
    req = urllib.request.Request("http://192.168.1.66:9696/api/v1/indexer", data=json.dumps(payload).encode(), headers={
        "X-Api-Key": "41cbd3271baf440196db77f56328ba03",
        "Content-Type": "application/json"
    })
    try:
        response = urllib.request.urlopen(req, timeout=30)
        print(f"Added {name}: {response.status}")
    except urllib.error.HTTPError as e:
        print(f"Failed {name}: {e.code} - {e.read().decode()}")
    except Exception as e:
        print(f"Failed {name}: {e}")