diff --git a/docs/supportedsites.md b/docs/supportedsites.md index c2600714..a33e7248 100644 --- a/docs/supportedsites.md +++ b/docs/supportedsites.md @@ -196,7 +196,7 @@ Consider all listed sites to potentially be NSFW. Cyberdrop https://cyberdrop.me/ - Albums + Albums, Media Files diff --git a/gallery_dl/extractor/cyberdrop.py b/gallery_dl/extractor/cyberdrop.py index a514696b..e1508297 100644 --- a/gallery_dl/extractor/cyberdrop.py +++ b/gallery_dl/extractor/cyberdrop.py @@ -10,12 +10,15 @@ from . import lolisafe from .common import Message from .. import text +BASE_PATTERN = r"(?:https?://)?(?:www\.)?cyberdrop\.(?:me|to)" + class CyberdropAlbumExtractor(lolisafe.LolisafeAlbumExtractor): + """Extractor for cyberdrop albums""" category = "cyberdrop" root = "https://cyberdrop.me" root_api = "https://api.cyberdrop.me" - pattern = r"(?:https?://)?(?:www\.)?cyberdrop\.(?:me|to)/a/([^/?#]+)" + pattern = BASE_PATTERN + r"/a/([^/?#]+)" example = "https://cyberdrop.me/a/ID" def items(self): @@ -40,7 +43,7 @@ class CyberdropAlbumExtractor(lolisafe.LolisafeAlbumExtractor): extr('id="title"', "") album = { - "album_id" : self.album_id, + "album_id" : album_id, "album_name" : text.unescape(extr('title="', '"')), "album_size" : text.parse_bytes(extr( '

', "B")), @@ -67,3 +70,20 @@ class CyberdropAlbumExtractor(lolisafe.LolisafeAlbumExtractor): continue yield file + + +class CyberdropMediaExtractor(CyberdropAlbumExtractor): + """Extractor for cyberdrop media links""" + subcategory = "media" + directory_fmt = ("{category}",) + pattern = BASE_PATTERN + r"/f/([^/?#]+)" + example = "https://cyberdrop.me/f/ID" + + def fetch_album(self, album_id): + return self._extract_files((album_id,)), { + "album_id" : "", + "album_name" : "", + "album_size" : -1, + "description": "", + "count" : 1, + } diff --git a/gallery_dl/version.py b/gallery_dl/version.py index 2dab0d65..e8084706 100644 --- a/gallery_dl/version.py +++ b/gallery_dl/version.py @@ -6,5 +6,5 @@ # it under the terms of the GNU General Public License version 2 as # published by the Free Software Foundation. -__version__ = "1.28.1" +__version__ = "1.28.2-dev" __variant__ = None diff --git a/test/results/cyberdrop.py b/test/results/cyberdrop.py index 7f6a8eb9..5b58b879 100644 --- a/test/results/cyberdrop.py +++ b/test/results/cyberdrop.py @@ -58,4 +58,30 @@ __tests__ = ( "url" : str, }, +{ + "#url" : "https://cyberdrop.me/f/lHYBt9VAluZf6", + "#category": ("lolisafe", "cyberdrop", "media"), + "#class" : cyberdrop.CyberdropMediaExtractor, + "#pattern" : r"https://k1-cd\.cdn\.gigachad-cdn\.ru/api/file/d/lHYBt9VAluZf6\?token=ey.+", + "#count" : 1, + "#sha1_content": "a546bdbc07d07f8e2c53e49e99736d5206f4da23", + + "album_id" : "", + "album_name" : "", + "album_size" : -1, + "auth_url" : "https://api.cyberdrop.me/api/file/auth/lHYBt9VAluZf6", + "count" : 1, + "description" : "", + "extension" : "gif", + "filename" : "danbooru_133128_049ebb917bb57589bca19155271a4200-rrhV0I30", + "id" : "rrhV0I30", + "name" : "danbooru_133128_049ebb917bb57589bca19155271a4200", + "num" : 1, + "size" : 143992, + "slug" : "lHYBt9VAluZf6", + "thumbnail_url": "https://api.cyberdrop.me/api/proxy/thumb/lHYBt9VAluZf6", + "type" : "image/gif", + "url" : str, +}, + )