[mastodon] add support for card images
This commit is contained in:
@@ -2616,6 +2616,16 @@ Description
|
|||||||
user IDs.
|
user IDs.
|
||||||
|
|
||||||
|
|
||||||
|
extractor.[mastodon].cards
|
||||||
|
--------------------------
|
||||||
|
Type
|
||||||
|
``bool``
|
||||||
|
Default
|
||||||
|
``false``
|
||||||
|
Description
|
||||||
|
Fetch media from cards.
|
||||||
|
|
||||||
|
|
||||||
extractor.[mastodon].reblogs
|
extractor.[mastodon].reblogs
|
||||||
----------------------------
|
----------------------------
|
||||||
Type
|
Type
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ class MastodonExtractor(BaseExtractor):
|
|||||||
self.instance = self.root.partition("://")[2]
|
self.instance = self.root.partition("://")[2]
|
||||||
self.reblogs = self.config("reblogs", False)
|
self.reblogs = self.config("reblogs", False)
|
||||||
self.replies = self.config("replies", True)
|
self.replies = self.config("replies", True)
|
||||||
|
self.cards = self.config("cards", False)
|
||||||
|
|
||||||
def items(self):
|
def items(self):
|
||||||
for status in self.statuses():
|
for status in self.statuses():
|
||||||
@@ -48,6 +49,17 @@ class MastodonExtractor(BaseExtractor):
|
|||||||
if status["reblog"]:
|
if status["reblog"]:
|
||||||
attachments.extend(status["reblog"]["media_attachments"])
|
attachments.extend(status["reblog"]["media_attachments"])
|
||||||
|
|
||||||
|
if self.cards:
|
||||||
|
card = status.get("card")
|
||||||
|
if card:
|
||||||
|
url = card.get("image")
|
||||||
|
if url:
|
||||||
|
card["weburl"] = card.get("url")
|
||||||
|
card["url"] = url
|
||||||
|
card["id"] = "card" + "".join(
|
||||||
|
url.split("/")[6:-2]).lstrip("0")
|
||||||
|
attachments.append(card)
|
||||||
|
|
||||||
status["instance"] = self.instance
|
status["instance"] = self.instance
|
||||||
acct = status["account"]["acct"]
|
acct = status["account"]["acct"]
|
||||||
status["instance_remote"] = \
|
status["instance_remote"] = \
|
||||||
@@ -120,6 +132,7 @@ class MastodonUserExtractor(MastodonExtractor):
|
|||||||
api.account_id_by_username(self.item),
|
api.account_id_by_username(self.item),
|
||||||
only_media=(
|
only_media=(
|
||||||
not self.reblogs and
|
not self.reblogs and
|
||||||
|
not self.cards and
|
||||||
not self.config("text-posts", False)
|
not self.config("text-posts", False)
|
||||||
),
|
),
|
||||||
exclude_replies=not self.replies,
|
exclude_replies=not self.replies,
|
||||||
|
|||||||
@@ -164,4 +164,36 @@ __tests__ = (
|
|||||||
"num" : int,
|
"num" : int,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"#url" : "https://mastodon.social/@technewsbot@assortedflotsam.com/112360601113258881",
|
||||||
|
"#comment" : "card image",
|
||||||
|
"#category": ("mastodon", "mastodon.social", "status"),
|
||||||
|
"#class" : mastodon.MastodonStatusExtractor,
|
||||||
|
"#options" : {"cards": True},
|
||||||
|
"#urls" : "https://files.mastodon.social/cache/preview_cards/images/095/900/335/original/83f0b4a793c84123.jpg",
|
||||||
|
|
||||||
|
"media": {
|
||||||
|
"author_name" : "Tom Warren",
|
||||||
|
"author_url" : "https://www.theverge.com/authors/tom-warren",
|
||||||
|
"blurhash" : "UHBDWMCjVGM0k,XjnPM#0h+vkpb^RkjYSh$*",
|
||||||
|
"description" : "Microsoft’s big Xbox games showcase will take place on June 9th. It will include more games than last year and a special Call of Duty Direct will follow.",
|
||||||
|
"embed_url" : "",
|
||||||
|
"height" : 628,
|
||||||
|
"html" : "",
|
||||||
|
"id" : "card95900335",
|
||||||
|
"image" : "https://files.mastodon.social/cache/preview_cards/images/095/900/335/original/83f0b4a793c84123.jpg",
|
||||||
|
"image_description": "The Xbox showcase illustration",
|
||||||
|
"language" : "en",
|
||||||
|
"provider_name": "The Verge",
|
||||||
|
"provider_url": "",
|
||||||
|
"published_at": "2024-04-30T14:15:30.341Z",
|
||||||
|
"title" : "The Xbox games showcase airs June 9th, followed by a Call of Duty Direct",
|
||||||
|
"type" : "link",
|
||||||
|
"url" : "https://files.mastodon.social/cache/preview_cards/images/095/900/335/original/83f0b4a793c84123.jpg",
|
||||||
|
"weburl" : "https://www.theverge.com/2024/4/30/24145262/xbox-games-showcase-summer-2024-call-of-duty-direct",
|
||||||
|
"width" : 1200,
|
||||||
|
},
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user