1
0
Fork 0
mirror of synced 2024-05-13 08:42:47 +12:00

imgur: download videos as mp4 instead of gif

Some imgur URLS have the extension ".gifv" and show up as a gif,
even though they're actually supposed to be mp4 videos. Imgur
serves all videos/gifs as both .gif and .mp4. The image dict has
a key "prefer_video" to distinguish the two. This commit
overrides the .gif extension if "prefer_video" is true to ensure
we download the submission as originally intended.
This commit is contained in:
Eli Lipsitz 2021-09-12 16:50:31 -05:00
parent 063caf0126
commit 33312687ac
2 changed files with 14 additions and 2 deletions

View file

@ -32,7 +32,11 @@ class Imgur(BaseDownloader):
return out
def _compute_image_url(self, image: dict) -> Resource:
image_url = 'https://i.imgur.com/' + image['hash'] + self._validate_extension(image['ext'])
ext = self._validate_extension(image['ext'])
if image.get('prefer_video', False):
ext = '.mp4'
image_url = 'https://i.imgur.com/' + image['hash'] + ext
return Resource(self.post, image_url, Resource.retry_download(image_url))
@staticmethod

View file

@ -111,7 +111,7 @@ def test_imgur_extension_validation_bad(test_extension: str):
),
(
'https://imgur.com/gallery/IjJJdlC',
('7227d4312a9779b74302724a0cfa9081',),
('740b006cf9ec9d6f734b6e8f5130bdab',),
),
(
'https://imgur.com/a/dcc84Gt',
@ -142,6 +142,14 @@ def test_imgur_extension_validation_bad(test_extension: str):
'https://imgur.com/ubYwpbk.GIFV',
('d4a774aac1667783f9ed3a1bd02fac0c',),
),
(
'https://i.imgur.com/j1CNCZY.gifv',
('58e7e6d972058c18b7ecde910ca147e3',),
),
(
'https://i.imgur.com/uTvtQsw.gifv',
('46c86533aa60fc0e09f2a758513e3ac2',),
),
))
def test_find_resources(test_url: str, expected_hashes: list[str]):
mock_download = Mock()