# -*- coding: utf-8 -*- # Copyright 2022 Mike Fährmann # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 as # published by the Free Software Foundation. from .common import Extractor, Message from .. import text BASE_PATTERN = r"(?:https?://)?jpg\.church" class JpgchurchImageExtractor(Extractor): """Base Extractor for Jpgchurch Images""" category = "Jpgchurch" subcategory = "image" directory_fmt = ("{category}", "{user}") filename_fmt = "{filename}" pattern = BASE_PATTERN + r"/img/([\w\d\-\.]+)" root = "https://jpg.church" test = ("https://jpg.church/img/funnymeme.LecXGS",) def __init__(self, match): Extractor.__init__(self, match) self.image = match.group(1) def items(self): data = self.metadata() for image in self.images(): if "album" in image or "user" in image: data.update(image) yield Message.Directory, data yield Message.Url, image["url"], image def metadata(self): """Return general metadata""" return {} def images(self): """Return an iterable containing the image(s)""" url = "{}/img/{}".format(self.root, self.image) return [self._get_images(url)] def _get_images(self, url): page = self.request(url).text data = self._extract_image(page) data.update({ "user": data["user"].split("/")[-1], "extension": text.ext_from_url(data["url"]) }) return data @staticmethod def _extract_image(page): _page = text.extract( page, '