diff --git a/bridges/AssociatedPressNewsBridge.php b/bridges/AssociatedPressNewsBridge.php index 37dff8b9ffc..c000acb4f29 100644 --- a/bridges/AssociatedPressNewsBridge.php +++ b/bridges/AssociatedPressNewsBridge.php @@ -214,10 +214,7 @@ private function processMediaPlaceholders($html, $id) } if ($media['type'] === 'YouTube') { - $div->outertext = << - -EOD; + $div->outertext = handleYoutube($media['externalId']); } } } @@ -249,10 +246,7 @@ private function processVideo($storyContent) $video = $storyContent['media'][0]; if ($video['type'] === 'YouTube') { - $url = 'https://www.youtube.com/embed/' . $video['externalId']; - $html = << -EOD; + $html = handleYoutube($video['externalId']); } else { $html = << diff --git a/bridges/Drive2ruBridge.php b/bridges/Drive2ruBridge.php index a8db31d2d0d..1255de3ab01 100644 --- a/bridges/Drive2ruBridge.php +++ b/bridges/Drive2ruBridge.php @@ -173,9 +173,7 @@ private function adjustContent($content) $node->outertext = ''; } foreach ($content->find('iframe') as $node) { - preg_match('/embed\/(.*?)\?/', $node->src, $match); - $node->outertext = 'https://www.youtube.com/watch?v=' . $match[1] . ''; + $node->outertext = handleYoutube($node->src); } return $content; } diff --git a/bridges/EuronewsBridge.php b/bridges/EuronewsBridge.php index c779c6c7b7d..5542d0116c6 100644 --- a/bridges/EuronewsBridge.php +++ b/bridges/EuronewsBridge.php @@ -207,8 +207,7 @@ private function getItemContent($url) $player_div = $html->find('.js-player-pfp', 0); if ($player_div) { $video_id = $player_div->getAttribute('data-video-id'); - $video_url = 'https://www.youtube.com/watch?v=' . $video_id; - $content .= '' . $video_url . ''; + $content .= handleYoutube($video_id); } } diff --git a/bridges/FallGuysBridge.php b/bridges/FallGuysBridge.php index 46411f33408..76efc7bded0 100644 --- a/bridges/FallGuysBridge.php +++ b/bridges/FallGuysBridge.php @@ -94,23 +94,18 @@ public function collectData() if (count($mediaOptions) == count($mainContentOptions)) { for ($i = 0; $i < count($mediaOptions); $i++) { if (property_exists($mediaOptions[$i], 'youtubeVideo')) { - $videoUrl = 'https://youtu.be/' . $mediaOptions[$i]->youtubeVideo->contentId; - $image = $mainContentOptions[$i]->image->src ?? ''; + $videoID = $mediaOptions[$i]->youtubeVideo->contentId; + $videoHtml = handleYoutube($videoID); - $content .= '

'; + $content .= '

' . $videoHtml; + $image = $mainContentOptions[$i]->image->src ?? ''; if ($image != $headerImage) { $contentImages[] = $image; - $content .= <<
- HTML; + $content .= '
'; } - $content .= <<(Video: {$videoUrl}) - HTML; - $content .= '

'; } } diff --git a/bridges/GenshinImpactBridge.php b/bridges/GenshinImpactBridge.php index cd8b397ba13..aef6e7f5259 100644 --- a/bridges/GenshinImpactBridge.php +++ b/bridges/GenshinImpactBridge.php @@ -37,8 +37,7 @@ public function collectData() if (preg_match($exp_youtube, $article_html, $matches)) { // Replace the YouTube embed with a YouTube link $yt_embed = $article_html->find('div[class="ttr-video-frame"]', 0); - $yt_link = sprintf('https://www.youtube.com/watch?v=%1$s', $matches[1]); - $article_html = str_replace($yt_embed, $yt_link, $article_html); + $yt_embed->outertext = handleYoutube($yt_embed); } $item = []; $item['title'] = $json_item['sTitle']; diff --git a/bridges/GolemBridge.php b/bridges/GolemBridge.php index 6ae96cba516..e69efcba617 100644 --- a/bridges/GolemBridge.php +++ b/bridges/GolemBridge.php @@ -133,11 +133,7 @@ private function extractContent($page, $prevcontent) if (array_key_exists($i, $embedSrcs)) { $src = $embedSrcs[$i]; if (preg_match('/youtube(-nocookie)?\.com/', $src, $match)) { - $placeholders[$i]->innertext = <<'; - EOT; + $placeholders[$i]->innertext = handleYoutube($src); } } } diff --git a/bridges/HeiseBridge.php b/bridges/HeiseBridge.php index ea21d64a9e3..14100227193 100644 --- a/bridges/HeiseBridge.php +++ b/bridges/HeiseBridge.php @@ -127,6 +127,7 @@ public function collectData() protected function parseItem(array $item) { + $item['uri'] = 'https://www.heise.de/news/ChatGPT-Atlas-ist-ein-Quatsch-Browser-10964861.html'; $sessioncookie = $this->getInput('sessioncookie'); // strip rss parameter @@ -207,19 +208,13 @@ private function addArticleToItem($item, $article) //fix for embbedded youtube-videos $oldlink = ''; foreach ($article->find('div.video__yt-container') as &$ytvideo) { - if (preg_match('/www.youtube.*?\"/', $ytvideo->innertext, $link) && $link[0] != $oldlink) { - //save link to prevent duplicates - $oldlink = $link[0]; - $ytiframe = << - EOT; - //check if video is in header or article for correct possitioning - if (strpos($header->innertext, $link[0])) { - $item['content'] .= $ytiframe; + $ytResult = handleYoutube($ytvideo->innertext); + if ($ytResult) { + //check if video is in header or article for correct positioning + if (strpos($header->innertext, $ytvideo)) { + $item['content'] .= $ytResult; } else { - $ytvideo->innertext .= $ytiframe; + $ytvideo->innertext .= $ytResult; $reloadneeded = 1; } } diff --git a/bridges/RedditBridge.php b/bridges/RedditBridge.php index c088d6d337c..f18e21f0d13 100644 --- a/bridges/RedditBridge.php +++ b/bridges/RedditBridge.php @@ -280,8 +280,7 @@ private function collectDataInternal(): void } } elseif (isset($data->media) && $data->media->type == 'youtube.com') { // Youtube link - $item['content'] = $this->createFigureLink($data->url, $data->media->oembed->thumbnail_url, 'YouTube'); - //$item['content'] = htmlspecialchars_decode($data->media->oembed->html); + $item['content'] = handleYoutube($data->url); } elseif (explode('.', $data->domain)[0] == 'self') { // Crossposted text post // TODO (optionally?) Fetch content of the original post. diff --git a/bridges/ReutersBridge.php b/bridges/ReutersBridge.php index 62eb95147c2..b27b2a0b61c 100644 --- a/bridges/ReutersBridge.php +++ b/bridges/ReutersBridge.php @@ -535,17 +535,7 @@ private function handleArticleContent($contents) EOD; break; case 'youtube': - $url = "https://www.youtube.com/embed/$cid"; - $embed .= << - -EOD; + $embed .= handleYoutube($cid); break; } $description .= $embed; diff --git a/bridges/SteamCommunityBridge.php b/bridges/SteamCommunityBridge.php index 37ed555d339..79426944e8d 100644 --- a/bridges/SteamCommunityBridge.php +++ b/bridges/SteamCommunityBridge.php @@ -109,11 +109,10 @@ private function collectMedia() $mediaURI = $media->getAttribute('src'); $downloadURI = $mediaURI; + $content = ''; + if ($category == 'videos') { - preg_match('/.*\/embed\/(.*)\?/', $mediaURI, $result); - $youtubeID = $result[1]; - $mediaURI = 'https://img.youtube.com/vi/' . $youtubeID . '/hqdefault.jpg'; - $downloadURI = 'https://www.youtube.com/watch?v=' . $youtubeID; + $content = handleYoutube($mediaURI); } $desc = ''; @@ -133,8 +132,12 @@ private function collectMedia() $downloadURI = $htmlCard->find('a.downloadImage', 0)->href; } - $item['content'] = '

'; - $item['content'] .= '

' . $desc . '

'; + if (empty($content)) { + $content = '

'; + $content .= '

' . $desc . '

'; + } + + $item['content'] = $content; $this->items[] = $item; diff --git a/bridges/TheDriveBridge.php b/bridges/TheDriveBridge.php index f164dccd36e..b8485de66f2 100644 --- a/bridges/TheDriveBridge.php +++ b/bridges/TheDriveBridge.php @@ -35,7 +35,7 @@ protected function parseItem($feedItem) $videoID = $youtubeVideoDiv->getAttribute('data-video-id'); //place around the
- $youtubeVideoDiv->outertext = '' . $youtubeVideoDiv->outertext . ''; + $youtubeVideoDiv->outertext = handleYoutube($videoID); } $item['content'] = $html; diff --git a/bridges/WebfailBridge.php b/bridges/WebfailBridge.php index 48caf263a5b..ea6bf308af4 100644 --- a/bridges/WebfailBridge.php +++ b/bridges/WebfailBridge.php @@ -127,11 +127,7 @@ private function extractArticle($html) } elseif (!is_null($article->find('div.wf-video', 0))) { // Video type $videoId = $this->getVideoId($article->find('div.wf-play', 0)->onclick); $item['uri'] = 'https://www.youtube.com/watch?v=' . $videoId; - $item['content'] = ''; + $item['content'] = handleYoutube($videoId); } elseif (!is_null($article->find('video[id*=gif-]', 0))) { // Gif type $item['uri'] = $this->getURI() . $article->find('a', 2)->href; $item['content'] = '