diff --git a/docs/supportedsites.rst b/docs/supportedsites.rst index 9d3d08b5..7ac2363b 100644 --- a/docs/supportedsites.rst +++ b/docs/supportedsites.rst @@ -26,6 +26,7 @@ ArtStation https://www.artstation.com/ |artstation-C| baraag https://baraag.net/ Images from Statuses, User Profiles `OAuth `__ Behance https://www.behance.net/ Collections, Galleries, User Profiles Blogger https://www.blogger.com/ Blogs, Posts, Search Results +Cyberdrop https://cyberdrop.me/ Albums Danbooru https://danbooru.donmai.us/ Pools, Popular Images, Posts, Tag Searches Supported Derpibooru https://derpibooru.org/ Galleries, Posts, Search Results `API Key `__ Desuarchive https://desuarchive.org/ Boards, Search Results, Threads diff --git a/gallery_dl/extractor/__init__.py b/gallery_dl/extractor/__init__.py index 36b5dfab..476cbdd3 100644 --- a/gallery_dl/extractor/__init__.py +++ b/gallery_dl/extractor/__init__.py @@ -23,6 +23,7 @@ modules = [ "bcy", "behance", "blogger", + "cyberdrop", "danbooru", "derpibooru", "deviantart", diff --git a/gallery_dl/extractor/cyberdrop.py b/gallery_dl/extractor/cyberdrop.py new file mode 100644 index 00000000..b67e5cc6 --- /dev/null +++ b/gallery_dl/extractor/cyberdrop.py @@ -0,0 +1,34 @@ +import base64 + +from .common import Extractor, Message +from .. import text + + +class CyberdropAlbumExtractor(Extractor): + pattern = r"(?:https?://)?(?:www\.)?cyberdrop\.me/a/([^/]+)/?" + category = "cyberdrop" + subcategory = "album" + directory_fmt = ("{category}", "{album}") + root = "https://cyberdrop.me" + + def __init__(self, match): + Extractor.__init__(self, match) + self.album_id = match.group(1) + self.album_url = self.root + "/a/" + self.album_id + + def items(self): + initial_page = self.request(self.album_url).text + + albumName, _ = text.extract(initial_page, "name: '", "'") + + encodedFileList, _ = text.extract(initial_page, "fl: '", "'") + + fileList = [base64.b64decode(s.encode()).decode() + for s in encodedFileList.split(",")] + + for f in fileList: + data = text.nameext_from_url(f) + yield Message.Directory, { + "album": self.album_id + ": " + albumName + } + yield Message.Url, "https://f.cyberdrop.cc/" + f, data