[seiga] Add metadata for single image downloads (#1063)

* [seiga] Support image metadata.

* [seiga] Update test data.

* [seiga] Fix cookie check.

* [test_cookies] [seiga] Fit test_cookies.py to the last commit.
pull/2278/head
kurumigi 4 years ago committed by GitHub
parent 3ec60e894a
commit 7e0e872f4f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -48,7 +48,7 @@ class SeigaExtractor(Extractor):
def login(self):
"""Login and set necessary cookies"""
if not self._check_cookies(("user_session",)):
if not self._check_cookies(("user_session")):
username, password = self._get_auth_info()
self._update_cookies(self._login_impl(username, password))
@ -172,7 +172,7 @@ class SeigaImageExtractor(SeigaExtractor):
r"|lohas\.nicoseiga\.jp/(?:thumb|(?:priv|o)/[^/]+/\d+)/)(\d+)")
test = (
("https://seiga.nicovideo.jp/seiga/im5977527", {
"keyword": "f66ba5de33d4ce2cb57f23bb37e1e847e0771c10",
"keyword": "c8339781da260f7fc44894ad9ada016f53e3b12a",
"content": "d9202292012178374d57fb0126f6124387265297",
}),
("https://seiga.nicovideo.jp/seiga/im123", {
@ -196,4 +196,24 @@ class SeigaImageExtractor(SeigaExtractor):
return num
def get_images(self):
return ({}, {"image_id": text.parse_int(self.image_id)})
url = "{}/seiga/im{}".format(self.root, self.image_id)
page = self.request(url).text
data = text.extract_all(page, (
("date", '<li class="date"><span class="created">', '</span></li>'),
("title", '<h1 class="title">', '</h1>'),
("description" , '<p class="discription">', '</p>'),
))[0]
# Ugly,
data["user"] = text.extract_all(page, (
("id", '<li itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/user/illust/', '" itemprop="url">'),
("name", '<span itemprop="title">', '<span class="pankuzu_suffix">'),
))[0]
data["description"] = text.remove_html(data["description"])
data["date"] = text.parse_datetime(data["date"] + ":00+0900", "%Y年%m月%d%H:%M:%S%z")
data["image_id"] = text.parse_int(self.image_id)
# VERY VERY UGLY!!!
return (data, data)

@ -107,7 +107,7 @@ class TestCookieLogin(unittest.TestCase):
"exhentai": ("ipb_member_id", "ipb_pass_hash"),
"nijie" : ("nemail", "nlogin"),
"sankaku" : ("login", "pass_hash"),
"seiga" : ("user_session",),
"seiga" : ("user_session"),
}
for category, cookienames in extr_cookies.items():
cookies = {name: "value" for name in cookienames}

Loading…
Cancel
Save