import json

import requests


class SIMKL:
    def __init__(self):
        self.ClientID = "59dfdc579d244e1edf6f89874d521d37a69a95a1abd349910cb056a1872ba2c8"
        self.base_url = "https://api.simkl.com/"
        self.imagePath = "https://wsrv.nl/?url=https://simkl.in/episodes/%s_w.webp"

    def _to_url(self, url=""):
        if url.startswith("/"):
            url = url[1:]
        return f"{self.base_url[:-1]}/{url}"

    def make_request(self, endpoint, params):
        res = requests.get(
            f"{self.base_url}{endpoint}",
            params=params,
        )
        if res.status_code == 200:
            return json.loads(res.text)
        else:
            raise Exception(f"Simkl Error::{res.text}")

    def get_anime_info(self, anilist_id):
        _, simkl_id = self.get_simkl_id("anilist", anilist_id)
        params = {"extended": "full", "client_id": self.ClientID}
        return self.make_request("anime/" + str(simkl_id), params=params)

    def get_anilist_episodes(self, mal_id):
        _, simkl_id = self.get_simkl_id("mal", mal_id)
        params = {
            "extended": "full",
        }
        return self.make_request("anime/episodes/" + str(simkl_id), params=params)

    def get_simkl_id(self, send_id, anime_id):
        params = {
            send_id: anime_id,
            "client_id": self.ClientID,
        }
        res = self.make_request("search/id", params=params)
        simkl = res[0]["ids"]["simkl"]
        return simkl

    def get_mapping_ids(self, send_id, anime_id):
        simkl_id = self.get_simkl_id(send_id, anime_id)
        params = {"extended": "full", "client_id": self.ClientID}
        res = self.make_request("anime/" + str(simkl_id), params=params)
        return res["ids"]
