Merge pull request #10708 from annando/peertube-videos

Better handling of displaying peertube videos
This commit is contained in:
Hypolite Petovan 2021-09-14 15:34:30 -04:00 committed by GitHub
commit 39e4ab89fa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -547,7 +547,7 @@ class Media
return $attachments;
}
$height = 0;
$heights = [];
$selected = '';
$previews = [];
@ -591,14 +591,11 @@ class Media
in_array($filetype, ['audio', 'image'])) {
$attachments['visual'][] = $medium;
} elseif (($medium['type'] == self::VIDEO) || ($filetype == 'video')) {
if (strpos($medium['url'], $guid) !== false) {
if (!empty($medium['height'])) {
// Peertube videos are delivered in many different resolutions. We pick a moderate one.
// By checking against the GUID we also ensure to only work this way on Peertube posts.
// This wouldn't be executed when someone for example on Mastodon was sharing multiple videos in a single post.
if (empty($height) || ($height > $medium['height']) && ($medium['height'] >= 480)) {
$height = $medium['height'];
$selected = $medium['url'];
}
// Since only Peertube provides a "height" parameter, this wouldn't be executed
// when someone for example on Mastodon was sharing multiple videos in a single post.
$heights[$medium['height']] = $medium['url'];
$video[$medium['url']] = $medium;
} else {
$attachments['visual'][] = $medium;
@ -607,6 +604,15 @@ class Media
$attachments['additional'][] = $medium;
}
}
if (!empty($heights)) {
ksort($heights);
foreach ($heights as $height => $url) {
if (empty($selected) || $height <= 480) {
$selected = $url;
}
}
if (!empty($selected)) {
$attachments['visual'][] = $video[$selected];
unset($video[$selected]);
@ -614,6 +620,8 @@ class Media
$attachments['additional'][] = $element;
}
}
}
return $attachments;
}