[arcalife] add 'gifs' option (#5657)

This commit is contained in:
Mike Fährmann
2025-03-14 22:34:45 +01:00
parent 5fa5a45f03
commit dbe8820b9e
4 changed files with 25 additions and 7 deletions

View File

@@ -1405,6 +1405,17 @@ Description
Download emoticon images.
extractor.arcalive.gifs
-----------------------
Type
``bool``
Default
``true``
Description
Check if ``.mp4`` videos have a ``.gif`` version
and download those instead.
extractor.artstation.external
-----------------------------
Type

View File

@@ -103,7 +103,8 @@
{
"sleep-request": "0.5-1.5",
"emoticons": false
"emoticons": false,
"gifs" : true
},
"artstation":
{

View File

@@ -41,6 +41,7 @@ class ArcalivePostExtractor(ArcaliveExtractor):
def items(self):
self.emoticons = self.config("emoticons", False)
self.gifs = self.config("gifs", True)
post = self.api.post(self.groups[0])
files = self._extract_files(post)
@@ -61,7 +62,7 @@ class ArcalivePostExtractor(ArcaliveExtractor):
def _extract_files(self, post):
files = []
for media in self._extract_media(post["content"]):
for video, media in self._extract_media(post["content"]):
if not self.emoticons and 'class="arca-emoticon"' in media:
continue
@@ -87,6 +88,13 @@ class ArcalivePostExtractor(ArcaliveExtractor):
if ext != orig:
fallback = (url + "?type=orig",)
url = path + "." + orig
elif video and self.gifs:
url_gif = url.rpartition(".")[0] + ".gif"
response = self.request(
url_gif + "?type=orig", method="HEAD", fatal=False)
if response.status_code < 400:
fallback = (url + "?type=orig",)
url = url_gif
files.append({
"url" : url + "?type=orig",
@@ -99,7 +107,7 @@ class ArcalivePostExtractor(ArcaliveExtractor):
def _extract_media(self, content):
ArcalivePostExtractor._extract_media = extr = re.compile(
r"<(?:img|video) ([^>]+)").findall
r"<(?:img|vide(o)) ([^>]+)").findall
return extr(content)

View File

@@ -86,7 +86,7 @@ __tests__ = (
{
"#url" : "https://arca.live/b/bluearchive/117240135",
"#comment": "video",
"#comment": ".mp4 video",
"#class" : arcalive.ArcalivePostExtractor,
"#urls" : "https://ac.namu.la/20240926sac/16f07778a97f91b935c8a3394ead01a223d96b2a619fdb25c4628ddba88b5fad.mp4?type=orig",
},
@@ -94,10 +94,8 @@ __tests__ = (
{
"#url" : "https://arca.live/b/bluearchive/111191955",
"#comment": "fake .mp4 GIF",
"#skip" : "not implemented",
"#class" : arcalive.ArcalivePostExtractor,
# "#urls" : "https://ac.namu.la/20240714sac/c8fcadeb0b578e5121eb7a7e8fb05984cb87c68e7a6e0481a1c8869bf0ecfd2b.gif?type=orig",
"#urls" : "https://ac.namu.la/20240714sac/c8fcadeb0b578e5121eb7a7e8fb05984cb87c68e7a6e0481a1c8869bf0ecfd2b.mp4?type=orig",
"#urls" : "https://ac.namu.la/20240714sac/c8fcadeb0b578e5121eb7a7e8fb05984cb87c68e7a6e0481a1c8869bf0ecfd2b.gif?type=orig",
},
{