summaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/hitomi.py
diff options
context:
space:
mode:
Diffstat (limited to 'gallery_dl/extractor/hitomi.py')
-rw-r--r--gallery_dl/extractor/hitomi.py32
1 files changed, 18 insertions, 14 deletions
diff --git a/gallery_dl/extractor/hitomi.py b/gallery_dl/extractor/hitomi.py
index e53b051..d6fdcf2 100644
--- a/gallery_dl/extractor/hitomi.py
+++ b/gallery_dl/extractor/hitomi.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
-# Copyright 2015-2019 Mike Fährmann
+# Copyright 2015-2020 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
@@ -23,7 +23,7 @@ class HitomiGalleryExtractor(GalleryExtractor):
r"/(?:[^/?&#]+-)?(\d+)")
test = (
("https://hitomi.la/galleries/867789.html", {
- "pattern": r"https://aa.hitomi.la/galleries/867789/\d+.jpg",
+ "pattern": r"https://[a-c]a.hitomi.la/images/./../[0-9a-f]+.jpg",
"keyword": "6701f8f588f119ef84cd29bdf99a399417b0a6a2",
"count": 16,
}),
@@ -34,12 +34,12 @@ class HitomiGalleryExtractor(GalleryExtractor):
}),
("https://hitomi.la/galleries/733697.html", {
# Game CG with scenes (#321)
- "url": "c2a84185f467450b8b9b72fbe40c0649029ce007",
+ "url": "21064f9e3c244aca87f1a91967a3fbe79032c4ce",
"count": 210,
}),
("https://hitomi.la/galleries/1045954.html", {
# fallback for galleries only available through /reader/ URLs
- "url": "055c898a36389719799d6bce76889cc4ea4421fc",
+ "url": "0a67f5e6c3c6a384b578e328f4817fa6ccdf856a",
"count": 1413,
}),
("https://hitomi.la/manga/amazon-no-hiyaku-867789.html"),
@@ -96,12 +96,6 @@ class HitomiGalleryExtractor(GalleryExtractor):
return data
def images(self, page):
- # see https://ltn.hitomi.la/common.js
- offset = text.parse_int(self.gallery_id[-1]) % 3
- subdomain = chr(97 + offset) + "a"
- base = "https://{}.hitomi.la/galleries/{}/".format(
- subdomain, self.gallery_id)
-
# set Referer header before image downloads (#239)
self.session.headers["Referer"] = self.gallery_url
@@ -109,10 +103,20 @@ class HitomiGalleryExtractor(GalleryExtractor):
url = "https://ltn.hitomi.la/galleries/{}.js".format(self.gallery_id)
page = self.request(url).text
- return [
- (base + image["name"], None)
- for image in json.loads(page.partition("=")[2])
- ]
+ result = []
+ for image in json.loads(page.partition("=")[2]):
+ ihash = image["hash"]
+ idata = text.nameext_from_url(image["name"])
+
+ # see https://ltn.hitomi.la/common.js
+ offset = int(ihash[-3:-1], 16) % 3
+ url = "https://{}a.hitomi.la/images/{}/{}/{}.{}".format(
+ chr(97 + offset),
+ ihash[-1], ihash[-3:-1], ihash,
+ idata["extension"],
+ )
+ result.append((url, idata))
+ return result
@staticmethod
def _prep(value):