Für ein Dashboard möchte ich gerne immer den gerade aktuellen YouTube Link von WELT-Live-Stream haben. Ich habe da auch schon ein Script, aber das ist sehr rudimentär und liefert nicht immer den aktuellsten Link zurück.
<?php
/*
Welt-Youtube-Link
Holt die ktuellen YouTube URL von Welt.
01.11.2022 Erstellung
*/
include(IPS_GetScript(43652)["ScriptFile"]);
$link_id = "";
$id_welt = 38430;
// $url = 'https://www.youtube.com/WELTVideoTV';
// Ab dem 05.10.2023:
// $url = 'https://www.youtube.com/playlist?list=PLslDofkqdKI-g3rvZuIn4Y5ujgGHoNEWz';
// $url = 'https://www.youtube.com/results?search_query=WELT+Newsstream';
$url = 'https://www.youtube.com/results?search_query=welt+live';
// $url = 'https://www.youtube.com/results?search_query=allintitle:WELT';
// $search_start = '"items":[{"videoRenderer":{"videoId":"';
// Ab dem 05.10.2023:
// $search_start = '"watchEndpoint":{"videoId":"';
// Ab dem 06.10.2023:
$search_start = '[{"itemSectionRenderer":{"contents":[{"videoRenderer":{"videoId":"';
// $search_stop = '","thumbnail":';
// Ab dem 05.10.2023:
// $search_stop = '","playlistId":"';
// Ab dem 06.10.2023:
$search_stop = '","thumbnail":';
$search_length = strlen($search_start);
if (($content = @file_get_contents($url)) === false) {
$error = error_get_last();
//echo "HTTP request failed. Error was: " . $error['message'];
AddWarning($device, $error);
} else {
$start = strpos($content, $search_start);
$stop = strpos($content, $search_stop, $start);
$link_id = substr($content, $start + $search_length, $stop - $start - $search_length);
$link_id = substr($link_id, 0, 11);
$welt_url = "https://www.youtube.com/embed/".$link_id."?autoplay=1&mute=0";
// echo "OK: $link_id";
SetValue($id_welt, $welt_url);
LogFile($device, "OK: $link_id");
}
?>
Hat jemand vielleicht eine Idee für eine zuverlässigere Lösung?
Einschlägige Suchmaschinen und auch ChatGPT liefern mir keine brauchbaren Ergebnisse.