praegune kellaaeg 25.04.2024 09:32:41
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
sõnum |
|
-IFFI-
HV kasutaja
liitunud: 31.12.2002
|
30.12.2018 18:16:56
Kuidas kuvada Shoutcast XML faili sisu kodukal? |
|
|
Oleks vaja SEE info saada SELLISES pildis kuvama oma kodukale. Ehk siis viimati esitatud lugude nimekiri vaja aint saada.
Googeldades leidnud mitmeid valmis scripte aga mitte ükski ei tööta.
Hetkel viimasena proovinud antud koodi kuid seegi ei kuva midagi
Spoiler
<?php
// last10.php -- get and display last n tracks...
// URL syntax:
// last10.php?host={http://s3.myradiostream.com}&port={58074}&n={lastN}
//
// {bracketed} items need to be replaced or they will default as below.
//
// I can return Javascript or HTML only.
//
/* keep warnings from our output */
error_reporting(E_ERROR);
// -- Server Info here -- //
$yourIP = 'http://s45.myradiostream.com';
$yourPORT = '18024';
// -- Tweak Display Here -- //
$bgcolor = '#ffffff'; // Page background color
$tablew = '400'; // Table width
$toprow = '#c0c0c0'; // Top background color
$bottom = '#ffffff'; // Bottom background color
$border = '#000000'; // Border color
$thickness = '2'; // Border thickness
$padding = '4'; // Cell padding
$font = 'Verdana'; // Font
$fontsize = '2'; // Font size
$refresh = '30'; // How often should it refresh? (seconds)
// Return JavaScript or HTML
$jsOutput=FALSE; // TRUE=js | FALSE=HTML
// try to get the target from the url...
$host = $_REQUEST***91;host***93;;
if (!$host) $host = $yourIP;
$port = $_REQUEST***91;port***93;;
if (!$port) $port = $yourPORT;
$lf = chr(10); // 0x0A ***91;\n***93;
// The lastN is configurable at the DNAS with, ShowLastSongs= it defaults to 10 and has a maximum of 20
$t_max = $_REQUEST***91;n***93;;
if (!t_max || $t_max<1 || $t_max>19) $t_max=10;
//19 is the max here because 20=current_track+19
// Let's get /index.html first... to keep this short, there is no code to handle the dnas being down
// or not running, so the script will display nothing in those cases.
$connect_timeout=5;
$success=0;
$fp1 = fsockopen($host, $port, &$errno, &$errstr, $connect_timeout); //open connection
if(!$fp1) { //if this fails, I'm done....
fclose($fp1);
$success++;
} else {
$request="GET /index.html HTTP/1.1\r\nHost:" . $host . ":" . $port . "\r\nUser-Agent: SHOUTcast DNAS Status ***91;index***93; * (Mozilla/PHP)\r\nConnection: close\r\n\r\n"; //get index.html
fputs($fp1,$request,strlen($request));
$page='';
while(!feof($fp1)) {
$page .= fread($fp1, 16384);
}
fclose($fp1);
// now I have the entire /index.html in $page -- all I want from here is the current track...
// (hint-hint)
$song00 = ereg_replace("</b></td>.*", "", ereg_replace(".*Current Song: </font></td><td><font class=default><b>", "", $page)); // easy, right <img src="images/smilies/smile.gif" border="0" alt="">
// now let's get /played.html... (this is kinda long)
$fp = fsockopen($host, $port, &$errno, &$errstr, $connect_timeout);
if(!$fp) { //if connection could not be made
fclose($fp);
$success++;
} else {
$request="GET /played.html HTTP/1.1\r\nHost: " . $host . ":" . $port . "\r\nUser-Agent: SHOUTcast DNAS Status ***91;played***93; * (Mozilla/PHP)\r\n"."Connection: close\r\n\r\n";
fputs($fp,$request,strlen($request));
$page='';
while (!feof($fp)) {
$page .= fread($fp, 16384);
}
fclose($fp); //close connection
$played_html=$page;
if ($played_html) {
$played_html= ereg_replace('<x>','|-|',ereg_replace('</tr>','',ereg_replace('</td><td>','<x>',ereg_replace('<tr><td>','',ereg_replace('</tr>','</tr>' . $lf,ereg_replace('-->','--***93;',ereg_replace('<!--','***91;!--',ereg_replace('</table><br><br>.*','',ereg_replace('.*<b>Current Song</b></td></tr>','',$played_html)))))))));
$xxn=strlen($played_html);
$r=2;
$t_count=0;
$reading=0;
$track***91;0***93;=$song00;
while ($r<$xxn & $t_count<=$t_max){
$cur=substr($played_html,$r,1);
if ($cur==$lf) $reading=0;
if ($reading==1) $track***91;$t_count***93; .= $cur;
if ($cur=="|" & substr($played_html,$r-1,1)=="-" & substr($played_html,$r-2,1)=="|") {
$reading=1;
$t_count++;
}
$r++;
}
}
}
}
// I now have $track***91;0-N***93; containg the current plus last N tracks...
// Output time...
if ($success==0) {
if ($jsOutput) { // JavaScript - used as <script src=...></script>
header('Content-type: text/javascript');
} else { // HTML... (iFrames anyone?)
echo '<HTML>
<HEAD><TITLE>TITLE OF YOUR PAGE HERE - Now Playing: ' . $track***91;0***93; . '</title>
<meta http-equiv="refresh" content="' . $refresh . ';URL=' . $_SERVER***91;'PHP_SELF'***93; . '?host=' . $host . '&port=' . $port . '">
</head>
<BODY bgcolor=' . $bgcolor . '>';
}
$r=0;
$output_string='';
//tweak the output string (the table init) here....
$output_string .= '<table width="' . $tablew . '" style="border-collapse: collapse" border="' . $thickness . '" bordercolor="' . $border . '"><tr bgcolor="' . $toprow . '"><td>
<table width="100%" border="0" cellpadding="' . $padding . '"><tr><td>
<font face=' . $font . ' size=' . $fontsize . '>'; //Now playing...
while ($r<=$t_max){
if ($r==0) $output_string .= 'Now Playing:<br> <b>'.str_replace("'", "'",str_replace('"', '"',$track***91;$r***93;)).'</b></td></tr></table></td></tr><tr><td><table bgcolor=' . $bottom . ' width="100%" border="0" cellpadding="' . $padding . '"><tr><td><br><font face=' . $font . ' size=' . $fontsize . '><i>Before that you heard:</i><br><br>';
else $output_string .= str_replace("'", "'",str_replace('"', '"',$track***91;$r***93;)) . '<br>';
$r++;
}
// I also want to close the table code now....
$output_string .= '</td></tr></table></td></tr></font></td></tr></table>';
if ($jsOutput) {
echo "document.write('" . $output_string . "');";
} else {
echo $output_string . '</body></html>';
}
} else { // I couldn't connect to the DNAS
if ($jsOutput) echo "document.write('Off Air');";
else echo "<HTML><HEAD><TITLE>Off-Air</title></head>
<BODY bgcolor=" . $bgcolor . "><font face=" . $font . " size=" . $fontsize . ">Server is <b>Off-Air</b>, try again later.</body></html>";
}
?> |
Usun, et googlest leitud scriptid on lihtsalt ajale jäänud jalgu. Vast väikese kõpitsemise järgi saaks asja ka toimima.
Oskab keegi abiks olla, on see väga keeruline teha!?
Olemas on ka paroolid serveri logimiseks.
|
|
Kommentaarid: 17 loe/lisa |
Kasutajad arvavad: |
|
:: |
0 :: |
0 :: |
16 |
|
tagasi üles |
|
|
infidel
HV kasutaja
liitunud: 31.01.2004
|
30.12.2018 19:21:25
|
|
|
XML ma ei näe, aga mõistlik tunduks asi JSONiks ümber konvertida ja siis AJAXiga lehele tassida,
Otse HTMList niimoodi:
php:
|
<?php $htmlContent = file_get_contents("http://s45.myradiostream.com:18024/played.html?sid=1"); $DOM = new DOMDocument; $DOM->loadHTML($htmlContent); $songs = []; $items = $DOM->getElementsByTagName('tr'); foreach ($items as $node) { $song["time"] = $node->firstChild->textContent; $node->removeChild($node->firstChild); $song["title"] = $node->firstChild->textContent; $songs[] = $song; } echo json_encode ($songs); ?>
|
Muidugi võib JSONi asemel ka kohe tabeli kujundada.
|
|
Kommentaarid: 35 loe/lisa |
Kasutajad arvavad: |
|
:: |
0 :: |
0 :: |
34 |
|
tagasi üles |
|
|
olavsu1
külaline
|
|
tagasi üles |
|
|
-IFFI-
HV kasutaja
liitunud: 31.12.2002
|
01.01.2019 08:54:24
|
|
|
infidel kirjutas: |
XML ma ei näe, aga mõistlik tunduks asi JSONiks ümber konvertida ja siis AJAXiga lehele tassida,
Otse HTMList niimoodi:
php:
|
<?php $htmlContent = file_get_contents("http://s45.myradiostream.com:18024/played.html?sid=1"); $DOM = new DOMDocument; $DOM->loadHTML($htmlContent); $songs = []; $items = $DOM->getElementsByTagName('tr'); foreach ($items as $node) { $song["time"] = $node->firstChild->textContent; $node->removeChild($node->firstChild); $song["title"] = $node->firstChild->textContent; $songs[] = $song; } echo json_encode ($songs); ?>
|
Muidugi võib JSONi asemel ka kohe tabeli kujundada. |
Tänks, see töötab küll suurepäraselt aga näeb välja selline hetkel http://retromusic.live/test/uus.php Ise ma seda koodi majandust ei jaga aga ilmselt on vaja vist kuidagi see tulem nüüd viia HTML lehele, et näeks välja sama moodi nagu ma esimeses postis tõn välja selle shoutcast lehe nimekirja. Mõtlen just, et olekski ainult nimekiri, muid kulinaid polegi vaja.
Ma saan lisada aint HTML sisu sinna Wordpress plugina WPBakery Page Builder RawHTML plokki.
to olavsu1 Ma kasutan tarkvarana localhost serverisse installitud AIRTIME. Sellel puudub see automaatne veebilehe genereerimine nagu seda SAM võimaldab. Olen kunagi ammu kasutanud seda SAM Broadcasterit. Kuna see pole saadaval linux süsteemidele siis oli vaja leida alternatiiv. Mis peamine see AIRTIME on täiesti TASUTA!
|
|
Kommentaarid: 17 loe/lisa |
Kasutajad arvavad: |
|
:: |
0 :: |
0 :: |
16 |
|
tagasi üles |
|
|
infidel
HV kasutaja
liitunud: 31.01.2004
|
01.01.2019 12:14:49
|
|
|
Kui tavaliseks tabeliks, siis tabeliks. Ega seal muud pole, kui tabeli tagid ümber ja väljundi koht veidi teiseks.
php:
|
<table> <thead> <td>Played at</td> <td>Song title</td> </thead> <?php $htmlContent = file_get_contents("http://s45.myradiostream.com:18024/played.html?sid=1"); $DOM = new DOMDocument; $DOM->loadHTML($htmlContent); $songs = []; $items = $DOM->getElementsByTagName('tr'); foreach ($items as $node) { $song["time"] = $node->firstChild->textContent; $node->removeChild($node->firstChild); $song["title"] = $node->firstChild->textContent; $songs[] = $song; } foreach ($songs as $song) { echo "<tr><td>{$song["time"]}</td><td>{$song["title "]}</td></tr>"; } ?> </table>
|
Või siis lihtsalt tekstina (reavahed tagidena siiski):
php:
|
<?php $htmlContent = file_get_contents("http://s45.myradiostream.com:18024/played.html?sid=1"); $DOM = new DOMDocument; $DOM->loadHTML($htmlContent); $songs = []; $items = $DOM->getElementsByTagName('tr'); foreach ($items as $node) { $song["time"] = $node->firstChild->textContent; $node->removeChild($node->firstChild); $song["title"] = $node->firstChild->textContent; $songs[] = $song; } foreach ($songs as $song) { echo "{$song["time"]} {$song["title "]}</br>"; } ?>
|
viimati muutis infidel 01.01.2019 12:48:20, muudetud 1 kord |
|
Kommentaarid: 35 loe/lisa |
Kasutajad arvavad: |
|
:: |
0 :: |
0 :: |
34 |
|
tagasi üles |
|
|
olavsu1
külaline
|
01.01.2019 12:23:04
|
|
|
sellel airtimel on ka, ainut tuleb kurjemat vaeva näha selle tööle saamiseks. paraku tema manual on puudulik ja ei kirjelda kõiki nüansse.
vennad lihtsalt ei viitsi kõiki vajalikke vidinaid ette ära teha.
|
|
tagasi üles |
|
|
-IFFI-
HV kasutaja
liitunud: 31.12.2002
|
01.01.2019 14:54:44
|
|
|
infidel kirjutas: |
Kui tavaliseks tabeliks, siis tabeliks. Ega seal muud pole, kui tabeli tagid ümber ja väljundi koht veidi teiseks.
php:
|
<table> <thead> <td>Played at</td> <td>Song title</td> </thead> <?php $htmlContent = file_get_contents("http://s45.myradiostream.com:18024/played.html?sid=1"); $DOM = new DOMDocument; $DOM->loadHTML($htmlContent); $songs = []; $items = $DOM->getElementsByTagName('tr'); foreach ($items as $node) { $song["time"] = $node->firstChild->textContent; $node->removeChild($node->firstChild); $song["title"] = $node->firstChild->textContent; $songs[] = $song; } foreach ($songs as $song) { echo "<tr><td>{$song["time"]}</td><td>{$song["title "]}</td></tr>"; } ?> </table>
|
Või siis lihtsalt tekstina (reavahed tagidena siiski):
php:
|
<?php $htmlContent = file_get_contents("http://s45.myradiostream.com:18024/played.html?sid=1"); $DOM = new DOMDocument; $DOM->loadHTML($htmlContent); $songs = []; $items = $DOM->getElementsByTagName('tr'); foreach ($items as $node) { $song["time"] = $node->firstChild->textContent; $node->removeChild($node->firstChild); $song["title"] = $node->firstChild->textContent; $songs[] = $song; } foreach ($songs as $song) { echo "{$song["time"]} {$song["title "]}</br>"; } ?>
|
|
Head uut aastat kõigile ja suured, suured tänud sulle infidel viitsimast raisata oma aega minu peale! Nüüd töötab täpselt nii nagu ma oma vaimu silmas ette kujutasingi Mina topisin esimest koodi igasugu <table> <td> <tr> ja muu analoogsete tagide vahele. Ikka loll pole lihtne olla
to olavsu1 Airtimel on tegelikult jah tarkvara sisene "Playout History" täiesti kenasti olemas. Ja kindlasti saab selle ka sealt miski scriptiga välja eksportida nagu saab hetkel "Current & Next Show" "Current & Next Song" "On Air Today" "Two Weeks Schedule"
Eks nad laiskvorstid ei ole viitsinud seda "Playout Widgets" valmis muterdada
|
|
Kommentaarid: 17 loe/lisa |
Kasutajad arvavad: |
|
:: |
0 :: |
0 :: |
16 |
|
tagasi üles |
|
|
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|
Hinnavaatlus ei vastuta foorumis tehtud postituste eest.
|