# -*- coding: utf-8 -*- # 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 https://tumblrgallery.xyz/""" from .common import GalleryExtractor from .. import text BASE_PATTERN = r"(?:https?://)?tumblrgallery\.xyz" class TumblrgalleryExtractor(GalleryExtractor): """Base class for tumblrgallery extractors""" category = "tumblrgallery" filename_fmt = "{category}_{gallery_id}_{num:>03}_{id}.{extension}" directory_fmt = ("{category}", "{gallery_id} {title}") root = "https://tumblrgallery.xyz" class TumblrgalleryTumblrblogExtractor(TumblrgalleryExtractor): """Extractor for Tumblrblog on tumblrgallery.xyz""" subcategory = "tumblrblog" pattern = BASE_PATTERN + r"(/tumblrblog/gallery/(\d+)\.html)" test = ("https://tumblrgallery.xyz/tumblrblog/gallery/103975.html",) def __init__(self, match): TumblrgalleryExtractor.__init__(self, match) self.gallery_id = text.parse_int(match.group(2)) def metadata(self, page): return { "title" : text.unescape(text.extract(page, "

", "

"))[0], "gallery_id": self.gallery_id, } def images(self, _): page_num = 1 while True: response = self.request( "{}/tumblrblog/gallery/{}/{}.html" .format(self.root, self.gallery_id, page_num), allow_redirects=False ) if response.status_code != 200: return page = response.text page_num += 1 urls = list(text.extract_iter( page, '
", "")[0]) ).replace("_", "-"), "gallery_id": self.gallery_id, } def images(self, page): urls = list(text.extract_iter( page, '
", "")[0] ) ).replace("_", "-") image_src[1]["gallery_id"] = gallery_id yield image_src