diff options
| author | 2025-12-20 05:49:04 -0500 | |
|---|---|---|
| committer | 2025-12-20 05:49:04 -0500 | |
| commit | a24ec1647aeac35a63b744ea856011ad6e06be3b (patch) | |
| tree | ae94416de786aeddd05d99559098f7f16bb103a6 /gallery_dl/extractor/cyberfile.py | |
| parent | 33f8a8a37a9cba738ef25fb99955f0730da9eb48 (diff) | |
New upstream version 1.31.1.upstream/1.31.1
Diffstat (limited to 'gallery_dl/extractor/cyberfile.py')
| -rw-r--r-- | gallery_dl/extractor/cyberfile.py | 58 |
1 files changed, 49 insertions, 9 deletions
diff --git a/gallery_dl/extractor/cyberfile.py b/gallery_dl/extractor/cyberfile.py index 2ea81d6..e8c0061 100644 --- a/gallery_dl/extractor/cyberfile.py +++ b/gallery_dl/extractor/cyberfile.py @@ -56,7 +56,9 @@ class CyberfileFolderExtractor(CyberfileExtractor): url = f"{self.root}/folder/{folder_hash}" folder_num = text.extr(self.request(url).text, "ages('folder', '", "'") - extract_urls = text.re(r'dtfullurl="([^"]+)').findall + extract_folders = text.re(r'sharing-url="([^"]+)').findall + extract_files = text.re(r'dtfullurl="([^"]+)').findall + recursive = self.config("recursive", True) perpage = 600 data = { @@ -67,25 +69,63 @@ class CyberfileFolderExtractor(CyberfileExtractor): "filterOrderBy": "", } resp = self.request_api("/account/ajax/load_files", data) + html = resp["html"] folder = { - "_extractor" : CyberfileFileExtractor, "folder_hash": folder_hash, "folder_num" : text.parse_int(folder_num), "folder" : resp["page_title"], } while True: - urls = extract_urls(resp["html"]) - for url in urls: - yield Message.Queue, url, folder - - if len(urls) < perpage: + folders = extract_folders(html) + if recursive and folders: + folder["_extractor"] = CyberfileFolderExtractor + for url in folders: + yield Message.Queue, url, folder + + if files := extract_files(html): + folder["_extractor"] = CyberfileFileExtractor + for url in files: + yield Message.Queue, url, folder + + if len(folders) + len(files) < perpage: return data["pageStart"] += 1 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("<!-- /.navbar-collapse -->") + 26 + + data = {"_extractor": CyberfileFolderExtractor} + for url in text.extract_iter(html, 'sharing-url="', '"', pos): + yield Message.Queue, url, data + + data = {"_extractor": CyberfileFileExtractor} + for url in text.extract_iter(html, 'dtfullurl="', '"', pos): + yield Message.Queue, url, data + + class CyberfileFileExtractor(CyberfileExtractor): subcategory = "file" directory_fmt = ("{category}", "{uploader}", "{folder}") @@ -113,7 +153,7 @@ class CyberfileFileExtractor(CyberfileExtractor): "Filesize:", "</tr>"))[:-1]), "tags" : text.split_html(extr( "Keywords:", "</tr>")), - "date" : text.parse_datetime(text.remove_html(extr( + "date" : self.parse_datetime(text.remove_html(extr( "Uploaded:", "</tr>")), "%d/%m/%Y %H:%M:%S"), "permissions": text.remove_html(extr( "Permissions:", "</tr>")).split(" & "), @@ -121,5 +161,5 @@ class CyberfileFileExtractor(CyberfileExtractor): file["file_url"] = url = extr("openUrl('", "'") text.nameext_from_url(file["name"] or url, file) - yield Message.Directory, file + yield Message.Directory, "", file yield Message.Url, url, file |
