X-Git-Url: https://git.cweiske.de/playVideoOnDreamboxProxy.git/blobdiff_plain/581440900eff261621ea4a55cfdd9aa3c6b46c36..53547a00a04ba956104748231cdc4d140355544d:/www/play.php diff --git a/www/play.php b/www/play.php index 3531035..8109951 100644 --- a/www/play.php +++ b/www/play.php @@ -1,101 +1,44 @@ &1'; - - $lastLine = exec($cmd, $output, $exitCode); - if ($exitCode !== 0) { - errorOut('youtube-dl error: ' . $lastLine); - } - return $lastLine; +$pageUrl = getPageUrl(); +$json = getYoutubeDlJson($pageUrl, $youtubedlPath); +$videoUrl = extractVideoUrlFromJson($json); +if (php_sapi_name() == 'cli') { + echo $videoUrl . "\n"; +} else { + header('Video-URL: ' . $videoUrl); } +playVideoOnDreambox($videoUrl, $dreamboxUrl); -function playVideoOnDreambox($videoUrl, $dreamboxHost) -{ - ini_set('track_errors', 1); - $xml = file_get_contents('http://' . $dreamboxHost . '/web/session'); - if ($xml === false) { - errorOut('Failed to fetch dreambox session token: ' . $php_errormsg); - } - $sx = simplexml_load_string($xml); - $token = (string) $sx; - - $playUrl = 'http://' . $dreamboxHost - . '/web/mediaplayerplay' - . '?file=4097:0:1:0:0:0:0:0:0:0:' - . str_replace('%3A', '%253A', rawurlencode($videoUrl)); - - $ctx = stream_context_create( - array( - 'http' => array( - 'method' => 'POST', - 'header' => 'Content-type: application/x-www-form-urlencoded', - 'content' => 'sessionid=' . $token, - //'ignore_errors' => true - ) - ) - ); - $ret = file_get_contents($playUrl, false, $ctx); - if ($ret !== false) { - header('HTTP/1.0 200 OK'); - echo "Video play request sent to dreambox\n"; - exit(0); - } else { - errorOut( - 'Failed to send video play request to dreambox: ' . $php_errormsg - ); - } -} function errorInput($msg) { - header('HTTP/1.0 400 Bad Request'); - header('Content-type: text/plain'); + if (!headers_sent()) { + header('HTTP/1.0 400 Bad Request'); + header('Content-type: text/plain'); + } echo $msg . "\n"; exit(1); } -function errorOut($msg) +function errorOut($msg, $httpStatus = '500 Internal Server Error') { - header('HTTP/1.0 500 Internal Server Error'); - header('Content-type: text/plain'); + if (!headers_sent()) { + header('HTTP/1.0 ' . $httpStatus); + header('Content-type: text/plain'); + } echo $msg . "\n"; + syslog(LOG_ERR, 'playVideoOnDreamboxProxy: ' . $httpStatus . ': ' . $msg); exit(2); } -?> \ No newline at end of file +?>