[pixiv] support tag for user downloads (#17)

[pixiv] support tag for user downloads
This commit is contained in:
aiasdfd
2017-06-04 02:15:36 -06:00
committed by Mike Fährmann
parent 5f05543f23
commit 338f79147f

View File

@@ -21,7 +21,7 @@ class PixivUserExtractor(Extractor):
directory_fmt = ["{category}", "{artist-id}-{artist-nick}"] directory_fmt = ["{category}", "{artist-id}-{artist-nick}"]
filename_fmt = "{category}_{artist-id}_{id}{num}.{extension}" filename_fmt = "{category}_{artist-id}_{id}{num}.{extension}"
pattern = [r"(?:https?://)?(?:www\.)?pixiv\.net/" pattern = [r"(?:https?://)?(?:www\.)?pixiv\.net/"
r"member(?:_illust)?\.php\?id=(\d+)"] r"member(?:_illust)?\.php\?id=(\d+)(?:&tag=(.*))?"]
test = [ test = [
("http://www.pixiv.net/member_illust.php?id=173530", { ("http://www.pixiv.net/member_illust.php?id=173530", {
"url": "852c31ad83b6840bacbce824d85f2a997889efb7", "url": "852c31ad83b6840bacbce824d85f2a997889efb7",
@@ -36,6 +36,10 @@ class PixivUserExtractor(Extractor):
def __init__(self, match): def __init__(self, match):
Extractor.__init__(self) Extractor.__init__(self)
self.artist_id = match.group(1) self.artist_id = match.group(1)
if (len(match.groups()) > 2):
self.tag = match.group(2)
else:
self.tag = None
self.api = PixivAPI(self) self.api = PixivAPI(self)
self.api_call = self.api.user_works self.api_call = self.api.user_works
self.load_ugoira = self.config("ugoira", True) self.load_ugoira = self.config("ugoira", True)
@@ -90,7 +94,9 @@ class PixivUserExtractor(Extractor):
while True: while True:
data = self.api_call(self.artist_id, pagenum) data = self.api_call(self.artist_id, pagenum)
for work in data["response"]: for work in data["response"]:
yield self.prepare_work(work) if self.tag is None or \
self.tag.lower() in [x.lower() for x in work["tags"]]:
yield self.prepare_work(work)
pinfo = data["pagination"] pinfo = data["pagination"]
if pinfo["current"] == pinfo["pages"]: if pinfo["current"] == pinfo["pages"]:
return return