diff --git a/docs/supportedsites.md b/docs/supportedsites.md index e60152dd..4271fd8b 100644 --- a/docs/supportedsites.md +++ b/docs/supportedsites.md @@ -220,7 +220,7 @@ Consider all listed sites to potentially be NSFW. CyberFile https://cyberfile.me/ - Files, Folders + Files, Folders, Shares diff --git a/gallery_dl/extractor/cyberfile.py b/gallery_dl/extractor/cyberfile.py index bdcc044d..635f296b 100644 --- a/gallery_dl/extractor/cyberfile.py +++ b/gallery_dl/extractor/cyberfile.py @@ -86,6 +86,37 @@ class CyberfileFolderExtractor(CyberfileExtractor): resp = self.request_api("/account/ajax/load_files", data) +class CyberfileSharedExtractor(CyberfileExtractor): + subcategory = "shared" + pattern = rf"{BASE_PATTERN}/shared/([a-zA-Z0-9]+)" + example = "https://cyberfile.me/shared/AbCdEfGhIjK" + + def items(self): + # get 'filehosting' cookie + url = f"{self.root}/shared/{self.groups[0]}" + self.request(url, method="HEAD") + + data = { + "pageType" : "nonaccountshared", + "nodeId" : "", + "pageStart": "1", + "perPage" : "500", + "filterOrderBy": "", + } + resp = self.request_api("/account/ajax/load_files", data) + + html = resp["html"] + pos = html.find("") + 26 + + data = {"_extractor": CyberfileFolderExtractor} + for folder in text.extract_iter(html, 'sharing-url="', '"', pos): + yield Message.Queue, folder, data + + data = {"_extractor": CyberfileFileExtractor} + for file in text.extract_iter(html, 'dtfullurl="', '"', pos): + yield Message.Queue, file, data + + class CyberfileFileExtractor(CyberfileExtractor): subcategory = "file" directory_fmt = ("{category}", "{uploader}", "{folder}") diff --git a/scripts/supportedsites.py b/scripts/supportedsites.py index b94257d5..3e42ad9e 100755 --- a/scripts/supportedsites.py +++ b/scripts/supportedsites.py @@ -265,6 +265,9 @@ SUBCATEGORY_MAP = { "discord-server": "", "posts" : "", }, + "cyberfile": { + "shared": "Shares", + }, "Danbooru": { "favgroup": "Favorite Groups", "random" : "Random Posts", diff --git a/test/results/cyberfile.py b/test/results/cyberfile.py index 68d7aa56..08b9186e 100644 --- a/test/results/cyberfile.py +++ b/test/results/cyberfile.py @@ -104,4 +104,24 @@ __tests__ = ( "#exception": exception.AuthorizationError, }, +{ + "#url" : "https://cyberfile.me/shared/tao35avvfc", + "#class" : cyberfile.CyberfileSharedExtractor, +}, + +{ + "#url" : "https://cyberfile.me/shared/l7zoinbctg", + "#class" : cyberfile.CyberfileSharedExtractor, + "#results" : ( + "https://cyberfile.me/gb3s", + "https://cyberfile.me/gb8m" + ), +}, + +{ + "#url" : "https://cyberfile.me/shared/wqpd9n0si5", + "#class" : cyberfile.CyberfileSharedExtractor, + "#results" : "https://cyberfile.me/folder/9f611ebab76f363e4b818397c7828a73/CF_DSPRMTRS", +}, + )