From 0bbdeaaa504541c1b9fb62396e228cd99fdff25f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Wed, 14 Aug 2024 18:56:47 +0200 Subject: [PATCH] [bunkr] support 'bunkr:' URL prefix (#6017) and support 'bunkr.ax' by default --- docs/supportedsites.md | 2 +- gallery_dl/extractor/bunkr.py | 17 +++++++++-------- gallery_dl/extractor/lolisafe.py | 2 +- test/results/bunkr.py | 12 ++++++++++++ 4 files changed, 23 insertions(+), 10 deletions(-) diff --git a/docs/supportedsites.md b/docs/supportedsites.md index 660558ca..ea0b7ae4 100644 --- a/docs/supportedsites.md +++ b/docs/supportedsites.md @@ -135,7 +135,7 @@ Consider all listed sites to potentially be NSFW. Bunkr - https://bunkr.sk/ + https://bunkr.si/ Albums, Media Files diff --git a/gallery_dl/extractor/bunkr.py b/gallery_dl/extractor/bunkr.py index 240bbd3e..31dd906d 100644 --- a/gallery_dl/extractor/bunkr.py +++ b/gallery_dl/extractor/bunkr.py @@ -6,14 +6,15 @@ # it under the terms of the GNU General Public License version 2 as # published by the Free Software Foundation. -"""Extractors for https://bunkr.sk/""" +"""Extractors for https://bunkr.si/""" from .lolisafe import LolisafeAlbumExtractor from .. import text BASE_PATTERN = ( + r"(?:bunkr:(?:https?://)?([^/?#]+)|" r"(?:https?://)?(?:app\.)?(bunkr+" - r"\.(?:s[kiu]|[cf]i|ru|la|is|to|ac|black|cat|media|red|site|ws|org))" + r"\.(?:s[kiu]|[cf]i|ru|la|is|to|a[cx]|black|cat|media|red|site|ws|org)))" ) LEGACY_DOMAINS = { @@ -28,15 +29,15 @@ LEGACY_DOMAINS = { class BunkrAlbumExtractor(LolisafeAlbumExtractor): - """Extractor for bunkr.sk albums""" + """Extractor for bunkr.si albums""" category = "bunkr" - root = "https://bunkr.sk" + root = "https://bunkr.si" pattern = BASE_PATTERN + r"/a/([^/?#]+)" - example = "https://bunkr.sk/a/ID" + example = "https://bunkr.si/a/ID" def __init__(self, match): LolisafeAlbumExtractor.__init__(self, match) - domain = match.group(match.lastindex-1) + domain = self.groups[0] or self.groups[1] if domain not in LEGACY_DOMAINS: self.root = "https://" + domain @@ -83,11 +84,11 @@ class BunkrAlbumExtractor(LolisafeAlbumExtractor): class BunkrMediaExtractor(BunkrAlbumExtractor): - """Extractor for bunkr.sk media links""" + """Extractor for bunkr.si media links""" subcategory = "media" directory_fmt = ("{category}",) pattern = BASE_PATTERN + r"(/[vid]/[^/?#]+)" - example = "https://bunkr.sk/v/FILENAME" + example = "https://bunkr.si/v/FILENAME" def fetch_album(self, album_id): try: diff --git a/gallery_dl/extractor/lolisafe.py b/gallery_dl/extractor/lolisafe.py index 3d7d685b..117b88bc 100644 --- a/gallery_dl/extractor/lolisafe.py +++ b/gallery_dl/extractor/lolisafe.py @@ -34,7 +34,7 @@ class LolisafeAlbumExtractor(LolisafeExtractor): def __init__(self, match): LolisafeExtractor.__init__(self, match) - self.album_id = match.group(match.lastindex) + self.album_id = self.groups[-1] def _init(self): domain = self.config("domain") diff --git a/test/results/bunkr.py b/test/results/bunkr.py index 911e9df0..fc58bce1 100644 --- a/test/results/bunkr.py +++ b/test/results/bunkr.py @@ -57,6 +57,12 @@ __tests__ = ( "#count" : 9, }, +{ + "#url" : "https://bunkr.ax/a/Lktg9Keq", + "#category": ("lolisafe", "bunkr", "album"), + "#class" : bunkr.BunkrAlbumExtractor, +}, + { "#url" : "https://bunkrrr.org/a/Lktg9Keq", "#category": ("lolisafe", "bunkr", "album"), @@ -147,6 +153,12 @@ __tests__ = ( "#class" : bunkr.BunkrAlbumExtractor, }, +{ + "#url" : "bunkr:http://example.org/a/Lktg9Keq", + "#category": ("lolisafe", "bunkr", "album"), + "#class" : bunkr.BunkrAlbumExtractor, +}, + { "#url" : "https://bunkr.black/i/image-sZrQUeOx.jpg", "#category": ("lolisafe", "bunkr", "media"),