aboutsummaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/flickr.py
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2023-07-03 00:57:03 -0400
committerLibravatarUnit 193 <unit193@unit193.net>2023-07-03 00:57:03 -0400
commitef30b1fa552fd4ceebdd14bbcc16f30f430883f8 (patch)
treecf680fbc0801f3090b28c190b7dd4a9d0fe1f454 /gallery_dl/extractor/flickr.py
parent9fb906aeb3816abb42f459d1b67e35024e6f2348 (diff)
New upstream version 1.25.7.upstream/1.25.7
Diffstat (limited to 'gallery_dl/extractor/flickr.py')
-rw-r--r--gallery_dl/extractor/flickr.py27
1 files changed, 24 insertions, 3 deletions
diff --git a/gallery_dl/extractor/flickr.py b/gallery_dl/extractor/flickr.py
index e85d68a..d44ff3c 100644
--- a/gallery_dl/extractor/flickr.py
+++ b/gallery_dl/extractor/flickr.py
@@ -106,6 +106,8 @@ class FlickrImageExtractor(FlickrExtractor):
def items(self):
photo = self.api.photos_getInfo(self.item_id)
+ if self.api.exif:
+ photo.update(self.api.photos_getExif(self.item_id))
if photo["media"] == "video" and self.api.videos:
self.api._extract_video(photo)
@@ -323,6 +325,7 @@ class FlickrAPI(oauth.OAuth1API):
def __init__(self, extractor):
oauth.OAuth1API.__init__(self, extractor)
+ self.exif = extractor.config("exif", False)
self.videos = extractor.config("videos", True)
self.maxsize = extractor.config("size-max")
if isinstance(self.maxsize, str):
@@ -367,6 +370,11 @@ class FlickrAPI(oauth.OAuth1API):
params = {"user_id": user_id}
return self._pagination("people.getPhotos", params)
+ def photos_getExif(self, photo_id):
+ """Retrieves a list of EXIF/TIFF/GPS tags for a given photo."""
+ params = {"photo_id": photo_id}
+ return self._call("photos.getExif", params)["photo"]
+
def photos_getInfo(self, photo_id):
"""Get information about a photo."""
params = {"photo_id": photo_id}
@@ -451,9 +459,19 @@ class FlickrAPI(oauth.OAuth1API):
return data
def _pagination(self, method, params, key="photos"):
- params["extras"] = ("description,date_upload,tags,views,media,"
- "path_alias,owner_name,")
- params["extras"] += ",".join("url_" + fmt[0] for fmt in self.formats)
+ extras = ("description,date_upload,tags,views,media,"
+ "path_alias,owner_name,")
+ includes = self.extractor.config("metadata")
+ if includes:
+ if isinstance(includes, (list, tuple)):
+ includes = ",".join(includes)
+ elif not isinstance(includes, str):
+ includes = ("license,date_taken,original_format,last_update,"
+ "geo,machine_tags,o_dims")
+ extras = extras + includes + ","
+ extras += ",".join("url_" + fmt[0] for fmt in self.formats)
+
+ params["extras"] = extras
params["page"] = 1
while True:
@@ -478,6 +496,9 @@ class FlickrAPI(oauth.OAuth1API):
photo["views"] = text.parse_int(photo["views"])
photo["date"] = text.parse_timestamp(photo["dateupload"])
photo["tags"] = photo["tags"].split()
+
+ if self.exif:
+ photo.update(self.photos_getExif(photo["id"]))
photo["id"] = text.parse_int(photo["id"])
if "owner" in photo: