shoutcast radio mod

This forum is now closed as part of retiring phpBB2
Forum rules
READ: phpBB.com Board-Wide Rules and Regulations

This forum is now closed due to phpBB2.0 being retired.
Post Reply
oliverhazard
Registered User
Posts: 29
Joined: Wed Jun 22, 2005 8:02 pm

shoutcast radio mod

Post by oliverhazard »

Hi, Im looking for a mod for my forum to display info on my shoutcast radio staion.
Idealy one that will show the song title, artist tune inn or something similar.

on my forum search i found this:
http://djspinnercee.servemp3.com:32768/ ... &port=9005

that was kind of what i had in mind, but id like it on my server with out a link to another site, and so i have full controll of it, im sure you all no what i mean.

anyhelp would be great.

cheers
oliverhazard
Registered User
Posts: 29
Joined: Wed Jun 22, 2005 8:02 pm

Post by oliverhazard »

bump!
User avatar
Ramon Fincken
Registered User
Posts: 4835
Joined: Thu Oct 14, 2004 1:04 am
Location: NL, The Netherlands Amsterdam area @GMT +1
Contact:

Post by Ramon Fincken »

I ve done this mod like this: http://www.rgtunez.co.uk/forum/

Here's the script:

file: shoutcastparser.php

Code: Select all

<?php
// Ramon Fincken, Phpbbinstallers.com
// Changed all Echo's to $shoutcast_phpbb_output .=
// shoutcastxml.php

// A SHOUTcast XML parser for PHP and Apache
// Copyright Peter Manchester B.Sc.
// All rights reserved
// 20th October 2002
// Web: www.petermanchester.co.uk
// Email: [email protected]

// turn off error reporting
error_reporting(0);

// DEBUG constant can be set to provide extra output when required
define ("DEBUG", "0");

// parameters for your SHOUTcast server - ** YOU WILL NEED TO CHANGE THESE **
$shoutcast_host = 'rgtunez.co.uk';  // SHOUTcast station url
$shoutcast_port = '8002';      // SHOUTcast station port number
$shoutcast_password = '';  // SHOUTcast password
$shoutcast_url = "http://" . $shoutcast_host . ':' . $shoutcast_port . "/listen.pls";
// end of parameters for your SHOUTcast server

// timeout period in seconds while contacting station
$fsock_time_out = 1;
// error number to be returned
$fsock_error_number = 0;
// error text to be returned
$fsock_error_text = "";

// an associative array to store the items we are interested in
$shoutcast_data = array('streamstatus' => '',
                        'bitrate' => '', 
                        'currentlisteners' => '', 
                        'maxlisteners' => '',
                        'servertitle' => '', 
                        'songtitle' => '');

$shoutcast_xml = "";

global $shoutcast_data, $shoutcast_xml_element;

if (!function_exists('startElement')) {

  // start element handler for xml parser
  function startElement($parser, $name, $attrs) {
      global $shoutcast_xml_element;
      // track which xml element is being parsed
      $shoutcast_xml_element = strtolower($name);
  }

}

if (!function_exists('endElement')) {

  // end element handler for xml parser
  function endElement($parser, $name) {
      global $shoutcast_xml_element;
      // forget which xml element was being parsed
      $shoutcast_xml_element = '';
  }
}

if (!function_exists('handleData')) {

  // character data handler for xml parser
  function handleData($parser, $data) {
      global $shoutcast_data, $shoutcast_xml_element;
      $shoutcast_data[$shoutcast_xml_element] .= $data;
  }
}

if (!function_exists('defaultHandler')) {

  // default handler
  function defaultHandler($parser, $data) {}
}

//open socket connection to the shoutcast server 
$shoutcast_fp = fsockopen($shoutcast_host,
                          $shoutcast_port, 
                          $fsock_error_number,
                          $fsock_error_text,
                          $fsock_time_out);

// check that the socket is open before proceeding
if($shoutcast_fp) {

    // socket connection is established, so the station is on-line

    // set 1 second timeout for communication with the station
    // stream_set_timeout($shoutcast_fp, 1);
    
    // build a string containing an HTTP request to your SHOUTcast server
    $shoutcast_httpreq = "GET /admin.cgi?pass=$shoutcast_password&mode=viewxml
      HTTP/1.0\r\nUser-Agent: SHOUTcast Song Status (Mozilla Compatible)\r\n\r\n";

    // send HTTP request to shoutcast server
    fputs($shoutcast_fp, $shoutcast_httpreq);

    // read entire xml output stream
    while(!feof($shoutcast_fp)) {
        $shoutcast_xml .= fgets($shoutcast_fp, 1000);
    }
  
    // close the socket now we no longer need it
    fclose($shoutcast_fp);

    // if we have got some XML back  then we need to strip away some
    // stuff that we don't need  
    if ($shoutcast_xml != '')
        $shoutcast_xml = strstr($shoutcast_xml, '<SHOUTCASTSERVER>');

    // create an instane of the EXPAT XML parser
    $xml_parser = xml_parser_create();

    // set element start and end element handler functions
    xml_set_element_handler($xml_parser, 'startElement', 'endElement');

    // set character data handler function
    xml_set_character_data_handler($xml_parser, 'handleData');

  xml_set_default_handler($xml_parser, 'defaultHandler');
  
    // activate the XML parser
  $parsed = xml_parse($xml_parser, $shoutcast_xml, 1);

    // some debugging code
    if (DEBUG) {
        $shoutcast_phpbb_output .= $shoutcast_xml;
        print_r ($shoutcast_data);
    }

    // check that the parsing operation worked correctly
    if ($parsed) {

        // it worked, so report the station status
        if ($shoutcast_data['streamstatus'] == '1') {
    
        // streaming content is available
        $shoutcast_phpbb_output .= '<p>';
        $shoutcast_phpbb_output .= $shoutcast_data['servertitle'];
        $shoutcast_phpbb_output .= '<br />Streaming at ';
        $shoutcast_phpbb_output .= $shoutcast_data['bitrate'];
        $shoutcast_phpbb_output .= ' kbps.</p>';
        $shoutcast_phpbb_output .= '<p>Currently playing: ';
        $shoutcast_phpbb_output .= $shoutcast_data['songtitle'];
        $shoutcast_phpbb_output .= '</p>';
        $shoutcast_phpbb_output .= '<p>Current listeners: ';
        $shoutcast_phpbb_output .= $shoutcast_data['currentlisteners'];
        $shoutcast_phpbb_output .= ' (only ';
        $shoutcast_phpbb_output .= $shoutcast_data['maxlisteners'];
        $shoutcast_phpbb_output .= ' allowed).</p>';
        if (intval($shoutcast_data['currentlisteners']) 
             < intval($shoutcast_data['maxlisteners'])) {
             $shoutcast_phpbb_output .= "<p>If you have Real Player installed, then ";
             $shoutcast_phpbb_output .= "click the Play button on the console above. ";
             $shoutcast_phpbb_output .= "Otherwise, to listen using Winamp ";
             $shoutcast_phpbb_output .= "click <a href=\"$shoutcast_url\">here</a>.</p>";
        } else {
             $shoutcast_phpbb_output .= "<p>Please wait until another listener can be added.</p>";
        }
        } else {

            // no streaming content is available
            $shoutcast_phpbb_output .= '<p>Radio is currently offline.</p>';
        }
        
    }
    else {
        // parsing failed
      if (DEBUG) {
          $shoutcast_phpbb_output .= 'XML Parser reported the following error:' . '<br />';
          $shoutcast_phpbb_output .= xml_error_string(xml_get_error_code($xml_parser)) . ' in line ';
          $shoutcast_phpbb_output .= xml_get_current_line_number($xml_parser) . '<br />';
      }
    }

    // the xml parser is no longer required
    xml_parser_free($xml_parser);

} else {

    // socket connection could not be established
    $shoutcast_phpbb_output .= '<p>The station is offline.</p>';
}

?>

OPEN

Code: Select all

index.php
FIND

Code: Select all

$template->pparse('body');
BEFORE, ADD

Code: Select all

// shoutcast Panel - START
// MOD Ramon Fincken, Phpbbinstallers.com
include_once($phpbb_root_path . 'shoutcastparser.'.$phpEx);
	     	$template->assign_block_vars('chield', array(   
	     	"SHOUTCAST_PHPBB_OUTPUT" => $shoutcast_phpbb_output));  
// MOD Ramon Fincken

// shoutcast - END
OPEN

Code: Select all

templates/[yourtemplatename]/index_body.tpl
ADD

Code: Select all

<table width="100%" border="0" cellpadding="0" cellspacing="0" class="forumline"><tr><td>

<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr><td class="catHead" colspan="2" height="28"><span class="cattitle">Radio</span></td>
</tr>
<tr><td class="row1" align="left"><p class="genmed">

<!-- BEGIN shoutcastparser -->
{shoutcastparser.SHOUTCAST_PHPBB_OUTPUT}
<!-- END shoutcastparser --> 

<br /><br /></p></td></tr>
</table>


</td></tr></table>

DIY INSTRUCTIONS

Code: Select all

#edit
#// parameters for your SHOUTcast server - ** YOU WILL NEED TO CHANGE THESE **
#$shoutcast_host = 'rgtunez.co.uk';  // SHOUTcast station url
#$shoutcast_port = '8002';      // SHOUTcast station port number
#$shoutcast_password = '';  // SHOUTcast password
#$shoutcast_url = "http://" . $shoutcast_host . ':' . $shoutcast_port . "/listen.pls";
#// end of parameters for your SHOUTcast server
Dutch quality fully managed WordPress hosting - ManagedWPHosting.nl

Before changing a file, some code or installing a MOD >> Make a backup first!

Do you like my mods? paypal me $1 :) forumsoftware[AT}creativepulses[DOT}nl [/size]
PhpBBantispam.com || Instant find your mod here
tomy91
Registered User
Posts: 41
Joined: Wed Apr 16, 2008 11:13 am

Re: shoutcast radio mod

Post by tomy91 »

this looks awesome, but how to integrate it in phpbb3? where to put the php code that had to be in index.php?
Post Reply

Return to “[2.0.x] MOD Requests”