[realbooru] fix videos and provide fallback URLs (#2530)

revert acc94ac187.
pull/5667/head
Mike Fährmann 4 months ago
parent deacbcbfdf
commit 807e2f7094
No known key found for this signature in database
GPG Key ID: 5680CA389D365A88

@ -25,7 +25,7 @@ class GelbooruV02Extractor(booru.BooruExtractor):
self.api_root = self.config_instance("api_root") or self.root
if self.category == "realbooru":
self._file_url = self._file_url_realbooru
self.items = self._items_realbooru
self._tags = self._tags_realbooru
def _api_request(self, params):
@ -124,6 +124,35 @@ class GelbooruV02Extractor(booru.BooruExtractor):
self.root, md5[0:2], md5[2:4], md5, url.rpartition(".")[2])
return url
def _items_realbooru(self):
from .common import Message
data = self.metadata()
for post in self.posts():
try:
html = self._html(post)
fallback = post["file_url"]
url = post["file_url"] = text.rextract(
html, 'href="', '"', html.index(">Original<"))[0]
except Exception:
self.log.debug("Unable to fetch download URL for post %s "
"(md5: %s)", post.get("id"), post.get("md5"))
continue
text.nameext_from_url(url, post)
post.update(data)
self._prepare(post)
self._tags(post, html)
path = url.rpartition("/")[0]
post["_fallback"] = (
"{}/{}.{}".format(path, post["md5"], post["extension"]),
fallback,
)
yield Message.Directory, post
yield Message.Url, url, post
def _tags_realbooru(self, post, page):
tag_container = text.extr(page, 'id="tagLink"', '</div>')
tags = collections.defaultdict(list)

Loading…
Cancel
Save