From f9a8e8cacf59aa980f242773d21178df234f1f10 Mon Sep 17 00:00:00 2001 From: blankie Date: Sat, 10 Feb 2024 21:51:23 +1100 Subject: [PATCH 1/2] [skeb] add 'num' and 'count' metadata fields --- gallery_dl/extractor/skeb.py | 49 ++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/gallery_dl/extractor/skeb.py b/gallery_dl/extractor/skeb.py index 55a0db00..b7883faf 100644 --- a/gallery_dl/extractor/skeb.py +++ b/gallery_dl/extractor/skeb.py @@ -33,10 +33,14 @@ class SkebExtractor(Extractor): response, post = self._get_post_data(user_name, post_num) if metadata: post.update(metadata) + + datas = self._get_urls_from_post(response) + post["count"] = len(datas) yield Message.Directory, post - for data in self._get_urls_from_post(response, post): - url = data["file_url"] - yield Message.Url, url, text.nameext_from_url(url, data) + for post["num"], data in enumerate(datas, 1): + post.update(data) + url = post["file_url"] + yield Message.Url, url, text.nameext_from_url(url, post) def posts(self): """Return post number""" @@ -105,29 +109,34 @@ class SkebExtractor(Extractor): } return resp, post - def _get_urls_from_post(self, resp, post): + def _get_urls_from_post(self, resp): + datas = [] + if self.thumbnails and "og_image_url" in resp: - post["content_category"] = "thumb" - post["file_id"] = "thumb" - post["_file_id"] = str(resp["id"]) + "t" - post["file_url"] = resp["og_image_url"] - yield post + data = {} + data["content_category"] = "thumb" + data["file_id"] = "thumb" + data["_file_id"] = str(resp["id"]) + "t" + data["file_url"] = resp["og_image_url"] + datas.append(data) if self.article and "article_image_url" in resp: url = resp["article_image_url"] if url: - post["content_category"] = "article" - post["file_id"] = "article" - post["_file_id"] = str(resp["id"]) + "a" - post["file_url"] = url - yield post + data = {} + data["content_category"] = "article" + data["file_id"] = "article" + data["_file_id"] = str(resp["id"]) + "a" + data["file_url"] = url + datas.append(data) for preview in resp["previews"]: - post["content_category"] = "preview" - post["file_id"] = post["_file_id"] = preview["id"] - post["file_url"] = preview["url"] + data = {} + data["content_category"] = "preview" + data["file_id"] = data["_file_id"] = preview["id"] + data["file_url"] = preview["url"] info = preview["information"] - post["original"] = { + data["original"] = { "width" : info["width"], "height" : info["height"], "byte_size" : info["byte_size"], @@ -138,7 +147,9 @@ class SkebExtractor(Extractor): "is_movie" : info["is_movie"], "transcoder": info["transcoder"], } - yield post + datas.append(data) + + return datas class SkebPostExtractor(SkebExtractor): From 4cfceb23cb61a4e98c4c33b838fee59b149de3f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Sat, 10 Feb 2024 19:35:50 +0100 Subject: [PATCH 2/2] [skeb] rename 'data' -> 'file' & add tests --- gallery_dl/extractor/skeb.py | 73 ++++++++++++++++++------------------ test/results/skeb.py | 5 +++ 2 files changed, 42 insertions(+), 36 deletions(-) diff --git a/gallery_dl/extractor/skeb.py b/gallery_dl/extractor/skeb.py index b7883faf..0b29ed06 100644 --- a/gallery_dl/extractor/skeb.py +++ b/gallery_dl/extractor/skeb.py @@ -34,12 +34,12 @@ class SkebExtractor(Extractor): if metadata: post.update(metadata) - datas = self._get_urls_from_post(response) - post["count"] = len(datas) + files = self._get_files_from_post(response) + post["count"] = len(files) yield Message.Directory, post - for post["num"], data in enumerate(datas, 1): - post.update(data) - url = post["file_url"] + for post["num"], file in enumerate(files, 1): + post.update(file) + url = file["file_url"] yield Message.Url, url, text.nameext_from_url(url, post) def posts(self): @@ -109,47 +109,48 @@ class SkebExtractor(Extractor): } return resp, post - def _get_urls_from_post(self, resp): - datas = [] + def _get_files_from_post(self, resp): + files = [] if self.thumbnails and "og_image_url" in resp: - data = {} - data["content_category"] = "thumb" - data["file_id"] = "thumb" - data["_file_id"] = str(resp["id"]) + "t" - data["file_url"] = resp["og_image_url"] - datas.append(data) + files.append({ + "content_category": "thumb", + "file_id" : "thumb", + "_file_id": str(resp["id"]) + "t", + "file_url": resp["og_image_url"], + }) if self.article and "article_image_url" in resp: url = resp["article_image_url"] if url: - data = {} - data["content_category"] = "article" - data["file_id"] = "article" - data["_file_id"] = str(resp["id"]) + "a" - data["file_url"] = url - datas.append(data) + files.append({ + "content_category": "article", + "file_id" : "article", + "_file_id": str(resp["id"]) + "a", + "file_url": url, + }) for preview in resp["previews"]: - data = {} - data["content_category"] = "preview" - data["file_id"] = data["_file_id"] = preview["id"] - data["file_url"] = preview["url"] info = preview["information"] - data["original"] = { - "width" : info["width"], - "height" : info["height"], - "byte_size" : info["byte_size"], - "duration" : info["duration"], - "frame_rate": info["frame_rate"], - "software" : info["software"], - "extension" : info["extension"], - "is_movie" : info["is_movie"], - "transcoder": info["transcoder"], - } - datas.append(data) + files.append({ + "content_category": "preview", + "file_id" : preview["id"], + "_file_id": preview["id"], + "file_url": preview["url"], + "original": { + "width" : info["width"], + "height" : info["height"], + "byte_size" : info["byte_size"], + "duration" : info["duration"], + "frame_rate": info["frame_rate"], + "software" : info["software"], + "extension" : info["extension"], + "is_movie" : info["is_movie"], + "transcoder": info["transcoder"], + }, + }) - return datas + return files class SkebPostExtractor(SkebExtractor): diff --git a/test/results/skeb.py b/test/results/skeb.py index a8b546ad..a05ed63e 100644 --- a/test/results/skeb.py +++ b/test/results/skeb.py @@ -16,6 +16,8 @@ __tests__ = ( "anonymous" : False, "body" : r"re:はじめまして。私はYouTubeにてVTuberとして活動をしている湊ラ", + "count" : 2, + "num" : range(1, 2), "client" : { "avatar_url" : r"re:https://pbs.twimg.com/profile_images/\d+/\w+\.jpg", "header_url" : r"re:https://pbs.twimg.com/profile_banners/1375007870291300358/\d+/1500x500", @@ -60,6 +62,9 @@ __tests__ = ( "#class" : skeb.SkebUserExtractor, "#pattern" : r"https://si\.imgix\.net/\w+/uploads/origins/[\w-]+", "#range" : "1-5", + + "count": int, + "num" : int, }, {