summaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/booru.py
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2020-12-30 18:41:48 -0500
committerLibravatarUnit 193 <unit193@unit193.net>2020-12-30 18:41:48 -0500
commit87a5aa088ce33a1196ff409b76a9ea8233bdc634 (patch)
tree7e6155edcc5dd12e40b47ad814b3bc69e65c52fc /gallery_dl/extractor/booru.py
parent8f7c87a2697113134c311aaeafd9c919555a2741 (diff)
New upstream version 1.16.1.upstream/1.16.1
Diffstat (limited to 'gallery_dl/extractor/booru.py')
-rw-r--r--gallery_dl/extractor/booru.py30
1 files changed, 19 insertions, 11 deletions
diff --git a/gallery_dl/extractor/booru.py b/gallery_dl/extractor/booru.py
index 517df93..64cde80 100644
--- a/gallery_dl/extractor/booru.py
+++ b/gallery_dl/extractor/booru.py
@@ -13,6 +13,7 @@ from .. import text, util, exception
from xml.etree import ElementTree
import collections
+import operator
import re
@@ -25,15 +26,25 @@ class BooruExtractor(Extractor):
def items(self):
self.login()
- extended_tags = self.config("tags", False)
data = self.metadata()
+ tags = self.config("tags", False)
+
for post in self.posts():
try:
- url = self._prepare_post(post, extended_tags)
- except KeyError:
+ url = self._file_url(post)
+ if url[0] == "/":
+ url = self.root + url
+ except (KeyError, TypeError):
+ self.log.debug("Unable to fetch download URL for post %s "
+ "(md5: %s)", post.get("id"), post.get("md5"))
continue
+
+ if tags:
+ self._extended_tags(post)
+ self._prepare(post)
post.update(data)
text.nameext_from_url(url, post)
+
yield Message.Directory, post
yield Message.Url, url, post
@@ -53,17 +64,14 @@ class BooruExtractor(Extractor):
"""Return an iterable with post objects"""
return ()
- def _prepare_post(self, post, extended_tags=False):
- url = post["file_url"]
- if url[0] == "/":
- url = self.root + url
- if extended_tags:
- self._fetch_extended_tags(post)
+ _file_url = operator.itemgetter("file_url")
+
+ @staticmethod
+ def _prepare(post):
post["date"] = text.parse_datetime(
post["created_at"], "%a %b %d %H:%M:%S %z %Y")
- return url
- def _fetch_extended_tags(self, post, page=None):
+ def _extended_tags(self, post, page=None):
if not page:
url = "{}/index.php?page=post&s=view&id={}".format(
self.root, post["id"])