# -*- coding: utf-8 -*- # Copyright 2018-2019 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. """Extractors for http://joyreactor.cc/""" from .common import Extractor, Message from .. import text import json BASE_PATTERN = r"(?:https?://)?(?:www\.)?(joyreactor\.c(?:c|om))" class JoyreactorExtractor(Extractor): """Base class for joyreactor extractors""" category = "joyreactor" directory_fmt = ["{category}"] filename_fmt = "{post_id}_{num:>02}{title[:100]:?_//}.{extension}" archive_fmt = "{post_id}_{num}" def __init__(self, match): Extractor.__init__(self) self.url = match.group(0) self.root = "http://" + match.group(1) self.session.headers["Referer"] = self.root def items(self): data = self.metadata() yield Message.Version, 1 yield Message.Directory, data for post in self.posts(): for image in self._parse_post(post): url = image["file_url"] image.update(data) yield Message.Url, url, text.nameext_from_url(url, image) def metadata(self): """Collect metadata for extractor-job""" return {} def posts(self): """Return all relevant post-objects""" return self._pagination(self.url) def _pagination(self, url): while True: page = self.request(url).text yield from text.extract_iter( page, '