diff options
| author | 2023-10-22 01:00:14 -0400 | |
|---|---|---|
| committer | 2023-10-22 01:00:14 -0400 | |
| commit | e052f3b9e1d9703a5a466daeaf37bacf476c2daf (patch) | |
| tree | fc608c7d452695706fb13e2b0b34671f569f3ab0 /gallery_dl/extractor/imgbb.py | |
| parent | b8758ecd073910ce3220b2e68399147b425c37b8 (diff) | |
New upstream version 1.26.1.upstream/1.26.1
Diffstat (limited to 'gallery_dl/extractor/imgbb.py')
| -rw-r--r-- | gallery_dl/extractor/imgbb.py | 39 |
1 files changed, 29 insertions, 10 deletions
diff --git a/gallery_dl/extractor/imgbb.py b/gallery_dl/extractor/imgbb.py index 1b74180..6c0684e 100644 --- a/gallery_dl/extractor/imgbb.py +++ b/gallery_dl/extractor/imgbb.py @@ -84,6 +84,13 @@ class ImgbbExtractor(Extractor): raise exception.AuthenticationError() return self.cookies + def _extract_resource(self, page): + return util.json_loads(text.extr( + page, "CHV.obj.resource=", "};") + "}") + + def _extract_user(self, page): + return self._extract_resource(page).get("user") or {} + def _pagination(self, page, endpoint, params): data = None seek, pos = text.extract(page, 'data-seek="', '"') @@ -99,7 +106,7 @@ class ImgbbExtractor(Extractor): for img in text.extract_iter(page, "data-object='", "'"): yield util.json_loads(text.unquote(img)) if data: - if params["seek"] == data["seekEnd"]: + if not data["seekEnd"] or params["seek"] == data["seekEnd"]: return params["seek"] = data["seekEnd"] params["page"] += 1 @@ -124,12 +131,14 @@ class ImgbbAlbumExtractor(ImgbbExtractor): self.page_url = "https://ibb.co/album/" + self.album_id def metadata(self, page): - album, pos = text.extract(page, '"og:title" content="', '"') - user , pos = text.extract(page, 'rel="author">', '<', pos) + album = text.extr(page, '"og:title" content="', '"') + user = self._extract_user(page) return { - "album_id" : self.album_id, - "album_name": text.unescape(album), - "user" : user.lower() if user else "", + "album_id" : self.album_id, + "album_name" : text.unescape(album), + "user" : user.get("username") or "", + "user_id" : user.get("id") or "", + "displayname": user.get("name") or "", } def images(self, page): @@ -158,7 +167,12 @@ class ImgbbUserExtractor(ImgbbExtractor): self.page_url = "https://{}.imgbb.com/".format(self.user) def metadata(self, page): - return {"user": self.user} + user = self._extract_user(page) + return { + "user" : user.get("username") or self.user, + "user_id" : user.get("id") or "", + "displayname": user.get("name") or "", + } def images(self, page): user = text.extr(page, '.obj.resource={"id":"', '"') @@ -181,15 +195,20 @@ class ImgbbImageExtractor(ImgbbExtractor): def items(self): url = "https://ibb.co/" + self.image_id - extr = text.extract_from(self.request(url).text) + page = self.request(url).text + extr = text.extract_from(page) + user = self._extract_user(page) image = { "id" : self.image_id, - "title" : text.unescape(extr('"og:title" content="', '"')), + "title" : text.unescape(extr( + '"og:title" content="', ' hosted at ImgBB"')), "url" : extr('"og:image" content="', '"'), "width" : text.parse_int(extr('"og:image:width" content="', '"')), "height": text.parse_int(extr('"og:image:height" content="', '"')), - "user" : extr('rel="author">', '<').lower(), + "user" : user.get("username") or "", + "user_id" : user.get("id") or "", + "displayname": user.get("name") or "", } image["extension"] = text.ext_from_url(image["url"]) |
