diff --git a/docs/configuration.rst b/docs/configuration.rst index e4d13892..a7deeb9d 100644 --- a/docs/configuration.rst +++ b/docs/configuration.rst @@ -6647,6 +6647,17 @@ Description Download video files. +extractor.wikimedia.format +-------------------------- +Type + ``string`` +Default + ``"original"`` +Description + Sets the `format` query parameter value + added to all download URLs. + + extractor.wikimedia.image-revisions ----------------------------------- Type diff --git a/docs/gallery-dl.conf b/docs/gallery-dl.conf index 08b2b841..4ab30b48 100644 --- a/docs/gallery-dl.conf +++ b/docs/gallery-dl.conf @@ -1129,6 +1129,7 @@ "wikimedia": { "sleep-request": "1.0-2.0", + "format": "original", "image-revisions": 1, "limit": 50, "subcategories": true diff --git a/gallery_dl/extractor/wikimedia.py b/gallery_dl/extractor/wikimedia.py index ece9a581..e7a6bcda 100644 --- a/gallery_dl/extractor/wikimedia.py +++ b/gallery_dl/extractor/wikimedia.py @@ -51,6 +51,7 @@ class WikimediaExtractor(BaseExtractor): # https://www.mediawiki.org/wiki/API:Revisions # https://www.mediawiki.org/wiki/API:Imageinfo self.image_revisions = self.config("image-revisions", 1) + self.format = self.config("format", "original") @cache(maxage=36500*86400, keyarg=1) def _search_api_path(self, root): @@ -74,9 +75,15 @@ class WikimediaExtractor(BaseExtractor): m["name"]: m["value"] for m in image["commonmetadata"] or ()} - text.nameext_from_url(image["canonicaltitle"].partition(":")[2], image) + text.nameext_from_name( + image["canonicaltitle"].partition(":")[2], image) image["date"] = self.parse_datetime_iso(image["timestamp"]) + if self.format: + url = image["url"] + image["url"] = (f"{url}{'&' if '?' in url else '?'}" + f"format={self.format}") + def items(self): for info in self._pagination(self.params): try: diff --git a/test/results/fandom.py b/test/results/fandom.py index 358c9732..fc9370a0 100644 --- a/test/results/fandom.py +++ b/test/results/fandom.py @@ -19,7 +19,7 @@ __tests__ = ( "#url" : "https://mushishi.fandom.com/wiki/Yahagi", "#category": ("wikimedia", "fandom-mushishi", "article"), "#class" : wikimedia.WikimediaArticleExtractor, - "#results" : "https://static.wikia.nocookie.net/mushi-shi/images/f/f8/Yahagi.png/revision/latest?cb=20150128052255", + "#results" : "https://static.wikia.nocookie.net/mushi-shi/images/f/f8/Yahagi.png/revision/latest?cb=20150128052255&format=original", "bitdepth" : 8, "canonicaltitle": "File:Yahagi.png", @@ -75,7 +75,7 @@ __tests__ = ( "sha1" : "e3078a97976215323dbabb0c86b7acc55b512d16", "size" : 429912, "timestamp" : "2015-01-28T05:22:55Z", - "url" : "https://static.wikia.nocookie.net/mushi-shi/images/f/f8/Yahagi.png/revision/latest?cb=20150128052255", + "url" : "https://static.wikia.nocookie.net/mushi-shi/images/f/f8/Yahagi.png/revision/latest?cb=20150128052255&format=original", "user" : "ITHYRIAL", "userid" : 4637089, "width" : 728, @@ -90,12 +90,23 @@ __tests__ = ( "metadata" : {}, }, +{ + "#url" : "https://hildatheseries.fandom.com/wiki/Burku", + "#comment" : "'.webp' file without 'format=original' (#5512)", + "#category": ("wikimedia", "fandom-hildatheseries", "article"), + "#class" : wikimedia.WikimediaArticleExtractor, + "#options" : {"format": ""}, + "#range" : "1", + "#results" : "https://static.wikia.nocookie.net/hildatheseries/images/2/24/Burku.png/revision/latest?cb=20251010033752", + "#sha1_content": "36dce0e511fa8f6e1f834b92150126804fde971f", +}, + { "#url" : "https://discogs.fandom.com/zh/wiki/File:CH-0430D2.jpg", "#comment" : "non-English language prefix (#6370)", "#category": ("wikimedia", "fandom-discogs", "file"), "#class" : wikimedia.WikimediaArticleExtractor, - "#results" : "https://static.wikia.nocookie.net/discogs/images/a/ab/CH-0430D2.jpg/revision/latest?cb=20241007150151&path-prefix=zh", + "#results" : "https://static.wikia.nocookie.net/discogs/images/a/ab/CH-0430D2.jpg/revision/latest?cb=20241007150151&path-prefix=zh&format=original", }, { diff --git a/test/results/mediawiki.py b/test/results/mediawiki.py index ec6029a4..1d3d09b3 100644 --- a/test/results/mediawiki.py +++ b/test/results/mediawiki.py @@ -13,11 +13,11 @@ __tests__ = ( "#category": ("wikimedia", "mediawiki", "help"), "#class" : wikimedia.WikimediaArticleExtractor, "#results" : ( - "https://upload.wikimedia.org/wikipedia/commons/e/ec/OOjs_UI_icon_information-progressive.svg", - "https://upload.wikimedia.org/wikipedia/commons/6/62/PD-icon.svg", - "https://upload.wikimedia.org/wikipedia/commons/0/0e/Vector_Sidebar.png", - "https://upload.wikimedia.org/wikipedia/commons/7/77/Vector_page_tabs.png", - "https://upload.wikimedia.org/wikipedia/commons/6/6e/Vector_user_links.png", + "https://upload.wikimedia.org/wikipedia/commons/0/07/Codex_icon_specialPages_color-progressive.svg?format=original", + "https://upload.wikimedia.org/wikipedia/commons/6/62/PD-icon.svg?format=original", + "https://upload.wikimedia.org/wikipedia/commons/0/0e/Vector_Sidebar.png?format=original", + "https://upload.wikimedia.org/wikipedia/commons/7/77/Vector_page_tabs.png?format=original", + "https://upload.wikimedia.org/wikipedia/commons/6/6e/Vector_user_links.png?format=original", ), }, diff --git a/test/results/pidgiwiki.py b/test/results/pidgiwiki.py index 6b66b7ab..085c704d 100644 --- a/test/results/pidgiwiki.py +++ b/test/results/pidgiwiki.py @@ -12,7 +12,7 @@ __tests__ = ( "#url" : "https://www.pidgi.net/wiki/File:Key_art_-_Fight_Knight.png", "#category": ("wikimedia", "pidgiwiki", "file"), "#class" : wikimedia.WikimediaArticleExtractor, - "#results" : "https://cdn.pidgi.net/images/0/0c/Key_art_-_Fight_Knight.png", + "#results" : "https://cdn.pidgi.net/images/0/0c/Key_art_-_Fight_Knight.png?format=original", }, { diff --git a/test/results/wikimediacommons.py b/test/results/wikimediacommons.py index c520e583..7678716a 100644 --- a/test/results/wikimediacommons.py +++ b/test/results/wikimediacommons.py @@ -12,7 +12,7 @@ __tests__ = ( "#url" : "https://commons.wikimedia.org/wiki/File:Starr-050516-1367-Pimenta_dioica-flowers-Maunaloa-Molokai_(24762757525).jpg", "#category": ("wikimedia", "wikimediacommons", "file"), "#class" : wikimedia.WikimediaArticleExtractor, - "#results" : "https://upload.wikimedia.org/wikipedia/commons/f/fa/Starr-050516-1367-Pimenta_dioica-flowers-Maunaloa-Molokai_%2824762757525%29.jpg", + "#results" : "https://upload.wikimedia.org/wikipedia/commons/f/fa/Starr-050516-1367-Pimenta_dioica-flowers-Maunaloa-Molokai_%2824762757525%29.jpg?format=original", }, { @@ -35,7 +35,7 @@ __tests__ = ( "https://commons.wikimedia.org/wiki/Category:Ivan_Shishkin_in_art", "https://commons.wikimedia.org/wiki/Category:Ivan_Shishkin._To_the_190th_anniversary_of_the_birth", "https://commons.wikimedia.org/wiki/Category:Paintings_by_Ivan_Shishkin", - "https://commons.wikimedia.org/wiki/Category:Shishkin_street_(Martyshkino)", + "https://commons.wikimedia.org/wiki/Category:Shishkin_Street_(Martyshkino)", "https://commons.wikimedia.org/wiki/Category:Shishkin_street,_Moscow", "https://commons.wikimedia.org/wiki/Category:Shishkin's_Pine", ), diff --git a/test/results/wikispecies.py b/test/results/wikispecies.py index a7ef59d9..14644a85 100644 --- a/test/results/wikispecies.py +++ b/test/results/wikispecies.py @@ -12,7 +12,7 @@ __tests__ = ( "#url" : "https://species.wikimedia.org/wiki/Geranospiza", "#category": ("wikimedia", "wikispecies", "article"), "#class" : wikimedia.WikimediaArticleExtractor, - "#results" : "https://upload.wikimedia.org/wikipedia/commons/0/01/Geranospiza_caerulescens.jpg", + "#results" : "https://upload.wikimedia.org/wikipedia/commons/0/01/Geranospiza_caerulescens.jpg?format=original", "#sha1_content": "3a17c14b15489928e4154f826af1c42afb5a523e", },