from __future__ import annotations

from abc import ABC, abstractmethod

from moviebot.models import NormalizedMovie


class BaseCrawler(ABC):
    source_name: str

    @abstractmethod
    def list_slugs(self, max_pages: int) -> list[str]:
        raise NotImplementedError

    @abstractmethod
    def fetch_movie(self, slug: str) -> NormalizedMovie:
        raise NotImplementedError

