feat: add preview for external urls in twitterv2 (#3006)

Fix #2430
This commit is contained in:
quickwick 2022-09-04 20:31:36 -07:00 committed by GitHub
parent 51f6ec8dc1
commit 36f64a3258
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 46 additions and 2 deletions

View File

@ -470,6 +470,24 @@ EOD
$this->item['title'] = $titleText;
// Get external link info
$extURL = null;
if (isset($tweet->entities->urls) && strpos($tweet->entities->urls[0]->expanded_url, 'twitter.com') === false) {
Debug::log('Found an external link!');
$extURL = $tweet->entities->urls[0]->expanded_url;
Debug::log($extURL);
$extDisplayURL = $tweet->entities->urls[0]->display_url;
$extTitle = $tweet->entities->urls[0]->title;
$extDesc = $tweet->entities->urls[0]->description;
if (isset($tweet->entities->urls[0]->images)) {
$extMediaOrig = $tweet->entities->urls[0]->images[0]->url;
$extMediaScaled = $tweet->entities->urls[0]->images[1]->url;
} else {
$extMediaOrig = '';
$extMediaScaled = '';
}
}
// Generate Avatar HTML block
$picture_html = '';
if (!$hideProfilePic && isset($this->item['avatar'])) {
@ -487,6 +505,7 @@ EOD;
// Generate media HTML block
$media_html = '';
$quoted_media_html = '';
$ext_media_html = '';
if (!$hideImages) {
if (isset($tweet->attachments->media_keys)) {
Debug::log('Generating HTML for tweet media');
@ -496,6 +515,17 @@ EOD;
Debug::log('Generating HTML for quoted tweet media');
$quoted_media_html = $this->createTweetMediaHTML($quotedTweet, $includesMedia, $retweetedMedia);
}
if (isset($extURL)) {
Debug::log('Generating HTML for external link media');
if ($this->getInput('noimgscaling')) {
$extMediaURL = $extMediaOrig;
} else {
$extMediaURL = $extMediaScaled;
}
$ext_media_html = <<<EOD
<a href="$extURL"><img referrerpolicy="no-referrer" src="$extMediaURL" /></a>
EOD;
}
}
// Generate the HTML for Item content
@ -514,8 +544,8 @@ EOD;
if (isset($quotedTweet)) {
$quotedTweetURI = self::URI . $quotedUser->username . '/status/' . $quotedTweet->id;
$quote_html = <<<QUOTE
<div style="display: table; border-style: solid; border-width: 1px;
border-radius: 5px; padding: 5px;">
<div style="display: table; border-style: solid; border-width: 1px; border-radius: 5px; padding: 5px;">
<p><b>$quotedUser->name</b> @$quotedUser->username ·
<a href="$quotedTweetURI">$quotedTweet->created_at</a></p>
$cleanedQuotedTweet
@ -525,6 +555,20 @@ QUOTE;
$this->item['content'] .= $quote_html;
}
// Add External Link HTML, if relevant
if (isset($extURL)) {
Debug::log('Adding HTML for external link');
$ext_html = <<<EXTERNAL
<div style="display: table; border-style: solid; border-width: 1px; border-radius: 5px; padding: 5px;">
$ext_media_html<br>
<a href="$extURL">$extDisplayURL</a><br>
<b>$extTitle</b><br>
$extDesc
</div>
EXTERNAL;
$this->item['content'] .= $ext_html;
}
$this->item['content'] = htmlspecialchars_decode($this->item['content'], ENT_QUOTES);
// Add current Item to Items array