from io import BytesIO
import requests
from gocomics import Comic
from PIL import Image
from pydantic import Field
from todays_paper_web.widgets import registerView
from todays_paper_web.widgets.core.image import ImageBaseView, ImageParams
[docs]
class GoComicsParams(ImageParams):
identifier: str = Field(
..., description="The comic's slug from its GoComics URL, e.g. `calvinandhobbes`."
)
@registerView("gocomics")
class GoComics(ImageBaseView):
Params = GoComicsParams
def fetch_img(self):
comic = Comic(self.params.identifier)
response = requests.get(comic.image)
return Image.open(BytesIO(response.content))