", '\\', 'N?', 'n?'); $replace = array("&", "<", ">", '', 'N°', 'n°'); $substring = str_replace($search, $replace, $substring); return $substring; } function get_shoutcast_tags($string) { $headers = array(); $metadata = array(); $useragent = 'Winamp 2.81'; $t = parse_url($string); $context = stream_context_create([ 'ssl' => [ 'verify_peer' => false, 'allow_self_signed' => true, ], ]); //$sock = stream_socket_client('tls://'.$t['host'].':'.$t['port'], $errno, $errstr, 10, STREAM_CLIENT_CONNECT, $context); $sock = stream_socket_client('tcp://'.$t['host'].':'.$t['port'], $errno, $errstr, 10, STREAM_CLIENT_CONNECT, $context); //$sock = stream_socket_client('127.0.0.1:'.$t['port'], $errno, $errstr, 10, STREAM_CLIENT_CONNECT, $context); $path = isset($t['path'])?$t['path']:'/'; if ($sock){ $request = 'GET '.$path.' HTTP/1.0'."\r\n". 'Host: '.$t['host']."\r\n". 'Connection: Close'."\r\n". 'User-Agent: '.$useragent."\r\n". 'Accept: */*'."\r\n". 'icy-metadata: 1'."\r\n". 'icy-prebuffer: 65536'."\r\n\r\n"; if (fwrite($sock, $request)){ $theaders = $line = ''; $count=0; while (!feof($sock)){ //~ $line = fgets($sock, 4096); $line = fgets($sock, 16384); $count += strlen($line); //~ echo ". "; if('' == trim($line)){ break; } $theaders .= $line; } $theaders = explode("\r\n", $theaders); foreach ($theaders as $header){ $t = explode(':', $header); if (isset($t[0]) && trim($t[0]) != ''){ $name = preg_replace('/[^a-z][^a-z0-9]*/i','', strtolower(trim($t[0]))); array_shift($t); $value = trim(implode(':', $t)); if ($value != ''){ if (is_numeric($value)){ $headers[$name] = (int)$value; }else{ $headers[$name] = $value; } } } } var_dump($theaders); exit(0); if (!isset($headers['icymetaint'])){ $data = ''; $metainterval = 512; while(!feof($sock)){ $data .= fgetc($sock); if (strlen($data) >= $metainterval) break; } $matches = array(); preg_match_all('/([\x00-\xff]{2})\x0\x0([a-z]+)=/i', $data, $matches, PREG_OFFSET_CAPTURE); preg_match_all('/([a-z]+)=([a-z0-9\(\)\[\]., ]+)/i', $data, $matches, PREG_SPLIT_NO_EMPTY); $title = $artist = ''; foreach ($matches[0] as $nr => $values){ $offset = $values[1]; $length = ord($values[0]{0}) + (ord($values[0]{1}) * 256)+ (ord($values[0]{2}) * 256*256)+ (ord($values[0]{3}) * 256*256*256); $info = substr($data, $offset + 4, $length); $seperator = strpos($info, '='); $metadata[substr($info, 0, $seperator)] = substr($info, $seperator + 1); if (substr($info, 0, $seperator) == 'title') $title = substr($info, $seperator + 1); if (substr($info, 0, $seperator) == 'artist') $artist = substr($info, $seperator + 1); } $metadata['streamtitle'] = $artist . ' - ' . $title; }else{ $metainterval = $headers['icymetaint']; $intervals = 0; $metadata = ''; while(1){ $data = ''; while(!feof($sock)){ $data .= fgetc($sock); if (strlen($data) >= $metainterval) break; } //print_data($data); //$len = join(unpack('c', fgetc($sock))) * 16; $len = @join(@unpack('c', fgetc($sock))) * 16; if ($len > 0){ $metadata = str_replace("\0", '', fread($sock, $len)); break; }else{ $intervals++; if ($intervals > 100) break; } } //~ echo "metadata : [".$metadata."]\n"; $metarr = explode(';', $metadata); foreach ($metarr as $meta){ $pos_StreamTitle = strpos($meta, "StreamTitle=", 0 ); if( 0 === $pos_StreamTitle ) { $t = explode('=', $meta); if (isset($t[0]) && trim($t[0]) != ''){ $name = preg_replace('/[^a-z][^a-z0-9]*/i','', strtolower(trim($t[0]))); array_shift($t); $value = trim(implode('=', $t)); if (substr($value, 0, 1) == '"' || substr($value, 0, 1) == "'"){ $value = substr($value, 1); } if (substr($value, -1) == '"' || substr($value, -1) == "'"){ $value = substr($value, 0, -1); } if ($value != ''){ $valuearr = explode(' - ', $value); return $valuearr; } } } } } fclose($sock); } } else { $metadata[0]=$ERROR_STRING."2"; $metadata[1]=$errstr; return $metadata; } } function get_fipradio_tags() { $metadata = array(); # $jsondata=file_get_contents("http://www.fipradio.fr/sites/default/files/import_si/si_titre_antenne/FIP_player_current.json"); $jsondata=file_get_contents("https://www.fip.fr/livemeta/7"); $array_json = json_decode($jsondata,TRUE); $fipradio_artist = "An Error Occured"; $fipradio_title = "An Error Occured"; $fipradio_url = ""; if( isset($array_json["levels"][0]["position"]) ) { $position=$array_json["levels"][0]["position"]; $trid=$array_json["levels"][0]["items"][$position]; $title=$array_json["steps"][$trid]["title"]; $fipradio_title=strtolower(trim($title)); $artist=$array_json["steps"][$trid]["authors"]; $fipradio_artist=strtolower(trim($artist)); if( isset($array_json["steps"][$trid]["visual"]) ) { $fipradio_url=$array_json["steps"][$trid]["visual"]; } } $metadata[0]=$fipradio_artist; $metadata[1]=$fipradio_title; $metadata[2]=$fipradio_url; return $metadata; } function get_lemouv_tags() { $metadata = array(); $mouvfront = file_get_contents("https://www.mouv.fr/"); $re = '/