[bunkr] fix extraction (#4514, #4532, #4529, #4540)

This commit is contained in:
Mike Fährmann
2023-09-30 18:05:12 +02:00
parent 4477808d1c
commit b92645cd37
2 changed files with 36 additions and 32 deletions

View File

@@ -38,36 +38,37 @@ class BunkrAlbumExtractor(LolisafeAlbumExtractor):
page, "<h1", "</div>").partition(">")[2])
count, _, size = info[1].split(None, 2)
# files
cdn = None
files = []
append = files.append
pos = page.index('class="grid-images')
for url in text.extract_iter(page, '<a href="', '"', pos):
if url.startswith("/"):
if not cdn:
# fetch cdn root from download page
durl = "{}/d/{}".format(self.root, url[3:])
cdn = text.extr(self.request(
durl).text, 'link.href = "', '"')
cdn = cdn[:cdn.index("/", 8)]
url = cdn + url[2:]
urls = list(text.extract_iter(page, '<a href="', '"', pos))
url = text.unescape(url)
if url.lower().endswith(CDN_HOSTED_EXTENSIONS):
scheme, domain, path, query, fragment = urlsplit(url)
if domain in MEDIA_DOMAIN_OVERRIDES:
domain = MEDIA_DOMAIN_OVERRIDES[domain]
else:
domain = domain.replace("cdn", "media-files", 1)
url = urlunsplit((scheme, domain, path, query, fragment))
append({"file": url})
return files, {
return self._extract_files(urls), {
"album_id" : self.album_id,
"album_name" : text.unescape(info[0]),
"album_size" : size[1:-1],
"description": text.unescape(info[2]) if len(info) > 2 else "",
"count" : len(files),
"count" : len(urls),
}
def _extract_files(self, urls):
for url in urls:
if url.startswith("/"):
try:
page = self.request(self.root + text.unescape(url)).text
if url[1] == "v":
url = text.extr(page, '<source src="', '"')
else:
url = text.extr(page, '<img src="', '"')
except Exception as exc:
self.log.error("%s: %s", exc.__class__.__name__, exc)
continue
else:
if url.lower().endswith(CDN_HOSTED_EXTENSIONS):
scheme, domain, path, query, fragment = urlsplit(url)
if domain in MEDIA_DOMAIN_OVERRIDES:
domain = MEDIA_DOMAIN_OVERRIDES[domain]
else:
domain = domain.replace("cdn", "media-files", 1)
url = urlunsplit((scheme, domain, path, query, fragment))
yield {"file": text.unescape(url)}

View File

@@ -12,7 +12,7 @@ __tests__ = (
"#url" : "https://bunkrr.su/a/Lktg9Keq",
"#category": ("lolisafe", "bunkr", "album"),
"#class" : bunkr.BunkrAlbumExtractor,
"#pattern" : r"https://cdn\.bunkr\.ru/test-テスト-\"&>-QjgneIQv\.png",
"#urls" : "https://i-burger.bunkr.ru/test-テスト-\"&>-QjgneIQv.png",
"#sha1_content": "0c8768055e4e20e7c7259608b67799171b691140",
"album_id" : "Lktg9Keq",
@@ -29,7 +29,7 @@ __tests__ = (
"#comment" : "mp4 (#2239)",
"#category": ("lolisafe", "bunkr", "album"),
"#class" : bunkr.BunkrAlbumExtractor,
"#pattern" : r"https://media-files\.bunkr\.ru/_-RnHoW69L\.mp4",
"#urls" : "https://burger.bunkr.ru/_-RnHoW69L.mp4",
"#sha1_content": "80e61d1dbc5896ae7ef9a28734c747b28b320471",
},
@@ -38,14 +38,17 @@ __tests__ = (
"#comment" : "cdn4",
"#category": ("lolisafe", "bunkr", "album"),
"#class" : bunkr.BunkrAlbumExtractor,
"#pattern" : r"https://(cdn|media-files)4\.bunkr\.ru/",
"#urls" : (
"https://media-files4.bunkr.ru/video-wFO9FtxG.mp4",
"https://i4.bunkr.ru/image-sZrQUeOx.jpg",
),
"#sha1_content": "da29aae371b7adc8c5ef8e6991b66b69823791e8",
"album_id" : "iXTTc1o2",
"album_name" : "test2",
"album_size" : "691.1 KB",
"count" : 2,
"description": "072022",
"description": "",
"filename" : r"re:video-wFO9FtxG|image-sZrQUeOx",
"id" : r"re:wFO9FtxG|sZrQUeOx",
"name" : r"re:video|image",
@@ -57,8 +60,8 @@ __tests__ = (
"#comment" : "cdn12 .ru TLD (#4147)",
"#category": ("lolisafe", "bunkr", "album"),
"#class" : bunkr.BunkrAlbumExtractor,
"#pattern" : r"https://(cdn12.bunkr.ru|media-files12.bunkr.la)/\w+",
"#count" : 8,
"#pattern" : r"https://(i-)?meatballs.bunkr.ru/\w+",
"#count" : 10,
},
{