[imgbb] improve dbe5891d
This commit is contained in:
@@ -34,7 +34,7 @@ class ImgbbExtractor(Extractor):
|
||||
yield Message.Url, url, image
|
||||
|
||||
def login(self):
|
||||
if self.cookies_check(("LID",)):
|
||||
if self.cookies_check(self.cookies_names):
|
||||
return
|
||||
|
||||
username, password = self._get_auth_info()
|
||||
@@ -66,8 +66,8 @@ class ImgbbExtractor(Extractor):
|
||||
def _pagination(self, page, url, params):
|
||||
seek, pos = text.extract(page, 'data-seek="', '"')
|
||||
tokn, pos = text.extract(page, 'PF.obj.config.auth_token="', '"', pos)
|
||||
data, pos = text.extract(page, "CHV.obj.resource=", "};", pos)
|
||||
self.kwdict["user"] = util.json_loads(data + "}").get("user")
|
||||
resc, pos = text.extract(page, "CHV.obj.resource=", "};", pos)
|
||||
self.kwdict["user"] = util.json_loads(resc + "}").get("user")
|
||||
|
||||
data = None
|
||||
while True:
|
||||
@@ -111,7 +111,7 @@ class ImgbbExtractor(Extractor):
|
||||
|
||||
|
||||
class ImgbbAlbumExtractor(ImgbbExtractor):
|
||||
"""Extractor for albums on imgbb.com"""
|
||||
"""Extractor for imgbb albums"""
|
||||
subcategory = "album"
|
||||
pattern = r"(?:https?://)?ibb\.co/album/([^/?#]+)/?(?:\?([^#]+))?"
|
||||
example = "https://ibb.co/album/ID"
|
||||
@@ -120,7 +120,6 @@ class ImgbbAlbumExtractor(ImgbbExtractor):
|
||||
album_id, qs = self.groups
|
||||
url = f"{self.root}/album/{album_id}"
|
||||
params = text.parse_query(qs)
|
||||
params = {"sort": params["sort"]} if "sort" in params else {}
|
||||
page = self.request(url, params=params).text
|
||||
extr = text.extract_from(page)
|
||||
|
||||
@@ -178,7 +177,7 @@ class ImgbbImageExtractor(ImgbbExtractor):
|
||||
|
||||
|
||||
class ImgbbUserExtractor(ImgbbExtractor):
|
||||
"""Extractor for user profiles in imgbb.com"""
|
||||
"""Extractor for imgbb user profiles"""
|
||||
subcategory = "user"
|
||||
directory_fmt = ("{category}", "{user[name]} ({user[id]})")
|
||||
pattern = r"(?:https?://)?([\w-]+)\.imgbb\.com/?(?:\?([^#]+))?"
|
||||
@@ -188,13 +187,17 @@ class ImgbbUserExtractor(ImgbbExtractor):
|
||||
user, qs = self.groups
|
||||
url = f"https://{user}.imgbb.com/"
|
||||
params = text.parse_query(qs)
|
||||
params = {"sort": params["sort"]} if "sort" in params else {}
|
||||
page = self.request(url, params=params).text
|
||||
response = self.request(url, params=params, allow_redirects=False)
|
||||
|
||||
if "<h1>Sign in</h1>" in page:
|
||||
if response.status_code < 300:
|
||||
params["pathname"] = "/"
|
||||
return self._pagination(response.text, f"{url}json", params)
|
||||
|
||||
if response.status_code == 301:
|
||||
raise exception.NotFoundError("user")
|
||||
redirect = f"HTTP redirect to {response.headers.get('Location')}"
|
||||
if response.status_code == 302:
|
||||
raise exception.AuthRequired(
|
||||
("username & password", "authenticated cookies"), "user")
|
||||
|
||||
url = f"{url}json"
|
||||
params["pathname"] = "/"
|
||||
return self._pagination(page, url, params)
|
||||
("username & password", "authenticated cookies"),
|
||||
"profile", redirect)
|
||||
raise exception.AbortExtraction(redirect)
|
||||
|
||||
@@ -71,6 +71,37 @@ __tests__ = (
|
||||
"#exception": exception.HttpError,
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://ibb.co/album/jyYWqL",
|
||||
"#class" : imgbb.ImgbbAlbumExtractor,
|
||||
"#results" : "https://i.ibb.co/1J4mTWzQ/test.png",
|
||||
|
||||
"extension": "png",
|
||||
"filename" : "test",
|
||||
"height" : 32,
|
||||
"id" : "bRGKX9bm",
|
||||
"mime" : "image/png",
|
||||
"name" : "test.png",
|
||||
"size" : 182,
|
||||
"title" : "test",
|
||||
"url" : "https://i.ibb.co/1J4mTWzQ/test.png",
|
||||
"width" : 64,
|
||||
"album" : {
|
||||
"count" : 1,
|
||||
"id" : "jyYWqL",
|
||||
"title" : "test-テスト-\"&> Album",
|
||||
"url" : "https://ibb.co/album/jyYWqL",
|
||||
"description": """test-テスト-"&>\nDescription""",
|
||||
},
|
||||
"user" : {
|
||||
"id" : "nrFBYw",
|
||||
"name" : "Gdldev",
|
||||
"url" : "https://gdldev.imgbb.com/",
|
||||
"url_albums": "https://gdldev.imgbb.com/albums",
|
||||
"username" : "gdldev",
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://folkie.imgbb.com",
|
||||
"#class" : imgbb.ImgbbUserExtractor,
|
||||
@@ -87,6 +118,30 @@ __tests__ = (
|
||||
"#exception": exception.AuthRequired,
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://gdldev.imgbb.com/",
|
||||
"#class" : imgbb.ImgbbUserExtractor,
|
||||
"#results" : "https://i.ibb.co/1J4mTWzQ/test.png",
|
||||
|
||||
"extension": "png",
|
||||
"filename" : "test",
|
||||
"height" : 32,
|
||||
"id" : "bRGKX9bm",
|
||||
"mime" : "image/png",
|
||||
"name" : "test.png",
|
||||
"size" : 182,
|
||||
"title" : "test",
|
||||
"url" : "https://i.ibb.co/1J4mTWzQ/test.png",
|
||||
"width" : 64,
|
||||
"user" : {
|
||||
"id" : "nrFBYw",
|
||||
"name" : "Gdldev",
|
||||
"url" : "https://gdldev.imgbb.com/",
|
||||
"url_albums": "https://gdldev.imgbb.com/albums",
|
||||
"username" : "gdldev",
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://ibb.co/fUqh5b",
|
||||
"#class" : imgbb.ImgbbImageExtractor,
|
||||
@@ -115,4 +170,32 @@ __tests__ = (
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://ibb.co/bRGKX9bm",
|
||||
"#class" : imgbb.ImgbbImageExtractor,
|
||||
"#auth" : False,
|
||||
"#results" : "https://i.ibb.co/1J4mTWzQ/test.png",
|
||||
"#sha1_content": "0c8768055e4e20e7c7259608b67799171b691140",
|
||||
|
||||
"date" : "dt:2025-07-30 20:05:06",
|
||||
"extension": "png",
|
||||
"filename" : "test",
|
||||
"height" : 32,
|
||||
"id" : "bRGKX9bm",
|
||||
"title" : "test",
|
||||
"url" : "https://i.ibb.co/1J4mTWzQ/test.png",
|
||||
"width" : 64,
|
||||
"album" : {
|
||||
"id" : "jyYWqL",
|
||||
"title": "test-テスト-\"&> Album",
|
||||
},
|
||||
"user" : {
|
||||
"id" : "nrFBYw",
|
||||
"name" : "Gdldev",
|
||||
"url" : "https://gdldev.imgbb.com/",
|
||||
"url_albums": "https://gdldev.imgbb.com/albums",
|
||||
"username" : "gdldev",
|
||||
},
|
||||
},
|
||||
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user