-
-
Save sonyarianto/c46196df1e5f393a2859240d8dde332a to your computer and use it in GitHub Desktop.
<?php | |
function getStreamMetadata($streamUrl) { | |
$needle = 'StreamTitle='; | |
$ua = 'Dailymate Radio/1.0'; | |
$opts = ['http' => ['method' => 'GET', | |
'header' => 'Icy-MetaData: 1', | |
'user_agent' => $ua] | |
]; | |
$context = stream_context_create($opts); | |
$icyMetaIntFound = false; | |
$icyInterval = -1; | |
$offset = 0; | |
if(($headers = get_headers($streamUrl, 0, $context))) { | |
foreach($headers as $h) { | |
if(!(strpos(strtolower($h), 'icy-metaint:') === false)) { | |
$icyMetaIntFound = true; | |
$icyInterval = explode(':', $h)[1]; | |
break; | |
} | |
} | |
} | |
if(!$icyMetaIntFound) { | |
echo "icy-metaint header not exists!"; | |
return; | |
} | |
if($stream = fopen($streamUrl, 'r', false, $context)) { | |
while($buffer = stream_get_contents($stream, $icyInterval, $offset)) { | |
if(strpos($buffer, $needle) !== false) { | |
fclose($stream); | |
$title = explode($needle, $buffer)[1]; | |
return substr($title, 1, strpos($title, ';') - 2); | |
} | |
$offset += $icyInterval; | |
} | |
} | |
} | |
echo getStreamMetadata('http://sukmben.radiogentara.com:8080/gentarahd'); | |
// var_dump(getStreamMetadata('https://freeuk16.listen2myradio.com/live.mp3?typeportmount=s1_23369_stream_600894294')); | |
// var_dump(getStreamMetadata('http://pu.klikhost.com:7720/;')); |
@starapple2 it just user agent string
@starapple2 it just user agent string
Thanks @sonyarianto . What is the importance in this script? Is it a Web standard?
Nice script @sonyarianto. I called it in an AJAX request, put the result in a span and applied CSS scrolling and ended up with a nice player that is updated every 15 secs with JavaScript setInterval:
@starapple2 it just user agent string
Thanks @sonyarianto . What is the importance in this script? Is it a Web standard?
ya it just to tell what User Agent that access that URL, you can type anything
Nice script @sonyarianto. I called it in an AJAX request, put the result in a span and applied CSS scrolling and ended up with a nice player that is updated every 15 secs with JavaScript setInterval:
wow this is very nice
What's Dailymate Radio/1.0 and what does it do?