# -*- coding: utf-8 -*- # Copyright 2015-2017 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. """Extract images from https://nijie.info/""" from .common import AsynchronousExtractor, Message from .. import text, exception from ..cache import cache class NijieExtractor(AsynchronousExtractor): """Base class for nijie extractors""" category = "nijie" directory_fmt = ["{category}", "{artist_id}"] filename_fmt = "{category}_{artist_id}_{image_id}_p{index:>02}.{extension}" cookiedomain = "nijie.info" popup_url = "https://nijie.info/view_popup.php?id=" def __init__(self): AsynchronousExtractor.__init__(self) self.session.headers["Referer"] = "https://nijie.info/" self.artist_id = "" def items(self): self.login() data = self.get_job_metadata() images = self.get_image_ids() yield Message.Version, 1 yield Message.Directory, data for image_id in images: for image_url, image_data in self.get_image_data(image_id): image_data.update(data) yield Message.Url, image_url, image_data def get_job_metadata(self): """Collect metadata for extractor-job""" return {"artist_id": self.artist_id} def get_image_ids(self): """Collect all image-ids for a specific artist""" return [] def get_image_data(self, image_id): """Get URL and metadata for images specified by 'image_id'""" page = self.request(self.popup_url + image_id).text return self.extract_image_data(page, image_id) @staticmethod def extract_image_data(page, image_id): """Get URL and metadata for images from 'page'""" images = list(text.extract_iter(page, '