[bunkr] extract 'album_...' metadata for '/f/' URLs (#8405)

This commit is contained in:
Mike Fährmann
2025-10-13 19:16:37 +02:00
parent 6e4f9e2ce3
commit 55821346f5
2 changed files with 47 additions and 6 deletions

View File

@@ -11,6 +11,7 @@
from .common import Extractor from .common import Extractor
from .lolisafe import LolisafeAlbumExtractor from .lolisafe import LolisafeAlbumExtractor
from .. import text, util, config, exception from .. import text, util, config, exception
from ..cache import memcache
import random import random
if config.get(("extractor", "bunkr"), "tlds"): if config.get(("extractor", "bunkr"), "tlds"):
@@ -227,10 +228,26 @@ class BunkrMediaExtractor(BunkrAlbumExtractor):
self.log.error("%s: %s", exc.__class__.__name__, exc) self.log.error("%s: %s", exc.__class__.__name__, exc)
return (), {} return (), {}
album_id, album_name, album_size = self._album_info(text.extr(
page, ' href="../a/', '"'))
return (file,), { return (file,), {
"album_id" : "", "album_id" : album_id,
"album_name" : "", "album_name": album_name,
"album_size" : -1, "album_size": album_size,
"description": "", "count" : 1,
"count" : 1,
} }
@memcache(keyarg=1)
def _album_info(self, album_id):
if album_id:
try:
page = self.request(f"{self.root}/a/{album_id}").text
return (
album_id,
text.unescape(text.unescape(text.extr(
page, 'property="og:title" content="', '"'))),
text.extr(page, '<span class="font-semibold">(', ')'),
)
except Exception:
pass
return album_id, "", -1

View File

@@ -240,7 +240,10 @@ __tests__ = (
"#category": ("lolisafe", "bunkr", "media"), "#category": ("lolisafe", "bunkr", "media"),
"#class" : bunkr.BunkrMediaExtractor, "#class" : bunkr.BunkrMediaExtractor,
"#results" : "https://mlk-bk.cdn.gigachad-cdn.ru/image-sZrQUeOx.jpg", "#results" : "https://mlk-bk.cdn.gigachad-cdn.ru/image-sZrQUeOx.jpg",
"#sha1_content": "55998743751dfe008d0e95605114fcbfa7dc4de8", "#sha1_content": (
"55998743751dfe008d0e95605114fcbfa7dc4de8",
"caf7c3d3439d94e83b3c24ddaf5a3a48aa057519",
),
"count" : 1, "count" : 1,
"extension": "jpg", "extension": "jpg",
@@ -330,4 +333,25 @@ __tests__ = (
"uuid" : "acba241d-c1e8-40c3-aa73-94daf75fcd13", "uuid" : "acba241d-c1e8-40c3-aa73-94daf75fcd13",
}, },
{
"#url" : "https://bunkr.cr/f/mX1DBQooiUOJ9",
"#comment" : "'album_...' metadata from '/f/' URL (#8405)",
"#category": ("lolisafe", "bunkr", "media"),
"#class" : bunkr.BunkrMediaExtractor,
"#results" : "https://rum.bunkr.ru/edf721b7-618b-4214-9305-845e1d210437.png",
"album_id" : "MwY4XLNV",
"album_name": "foo & bar",
"album_size": "3.54 MB",
"count" : 1,
"extension" : "png",
"filename" : "danbooru_10113035_fe864be2aa86487e5b08c768be78b787",
"id" : "",
"id_url" : "54661720",
"name" : "danbooru_10113035_fe864be2aa86487e5b08c768be78b787",
"num" : 1,
"slug" : "mX1DBQooiUOJ9",
"uuid" : "edf721b7-618b-4214-9305-845e1d210437",
},
) )