[cyberfile] add 'shared' extractor (#8323)

https://github.com/mikf/gallery-dl/issues/8323#issuecomment-3366857916
This commit is contained in:
Mike Fährmann
2025-10-25 20:40:55 +02:00
parent caa76e071e
commit c0e665e3db
4 changed files with 55 additions and 1 deletions

View File

@@ -220,7 +220,7 @@ Consider all listed sites to potentially be NSFW.
<tr id="cyberfile" title="cyberfile"> <tr id="cyberfile" title="cyberfile">
<td>CyberFile</td> <td>CyberFile</td>
<td>https://cyberfile.me/</td> <td>https://cyberfile.me/</td>
<td>Files, Folders</td> <td>Files, Folders, Shares</td>
<td></td> <td></td>
</tr> </tr>
<tr id="dandadan" title="dandadan"> <tr id="dandadan" title="dandadan">

View File

@@ -86,6 +86,37 @@ class CyberfileFolderExtractor(CyberfileExtractor):
resp = self.request_api("/account/ajax/load_files", data) 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 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): class CyberfileFileExtractor(CyberfileExtractor):
subcategory = "file" subcategory = "file"
directory_fmt = ("{category}", "{uploader}", "{folder}") directory_fmt = ("{category}", "{uploader}", "{folder}")

View File

@@ -265,6 +265,9 @@ SUBCATEGORY_MAP = {
"discord-server": "", "discord-server": "",
"posts" : "", "posts" : "",
}, },
"cyberfile": {
"shared": "Shares",
},
"Danbooru": { "Danbooru": {
"favgroup": "Favorite Groups", "favgroup": "Favorite Groups",
"random" : "Random Posts", "random" : "Random Posts",

View File

@@ -104,4 +104,24 @@ __tests__ = (
"#exception": exception.AuthorizationError, "#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",
},
) )