Radio php v 0.1

Contenu du snippet

Comme son nom l'indique, ce script est une radio php pour winamp.
Il est possible d'y mettre de la vidéo mais il faut des fichiers adaptés ou une très grosse connexion :)
Vous pouvez ranger vos fichiers audios comme bon vous semble, les sous répertoires sont gérés.
La sélection de piste est aléatoire.

Pour l'utiliser, il suffit de le déposer dans un répertoire accessible au public voulu et interprété par php :)
"Protegez" votre répertoire de musique : avec un .htaccess ou dans un dossier inaccessible depuis l'extérieur.
Ensuite, configurez le script et la radio avec les constantes prévues à cet effet.
Enfin, créez une playlist winamp *.m3u et faites un lien sur votre site vers cette playlist :)

Conseil : ne pas utiliser de bitrate trop élevé ou faites 2 dossiers de fichiers pour le bas et le haut débit.

Source / Exemple :


<?

/*************************************************************************\
/*************************** CYRILLE2.FREE.FR ****************************\
/        Source écrit par Cyrille2 en 2004 - Tous droits réservés         \
/*************************************************************************\
/     Ce source est distribué et non donné, i.e. vous pouvez l'utiliser   \
/  et le modifier du moment que les droits d'auteurs sont respectés.      \
/                                                                         \
/     Il est entendu par là que tout script utilisant ou ayantpour base   \
/  ce source doit conserver et afficher le nom de l'auteur original dans  \
/  le source. De même que toute utilisation partielle ou complete de ce   \
/  source doit être commentée en mentionnant la source et l'auteur.       \
/                                                                         \
/  En effet, le script executé devra afficher, et ce, lisiblement par     \
/  tous, la mention :                                                     \
/     "Contenant une ou des portions de code développées par Cyrille2     \
/      cyrille2@free.fr"                                                  \
/                                                                         \                                                                    \
/     Enfin, l'auteur décline toute responsabilité quant à la mauvaise    \
/ utilisation qu'il pourrait être faite de ce source.                     \
/                                                                         \
/ Pour toute information ou demande, cyrille2@free.fr                     \
/                                                                         \
/*************************************************************************/

// Radio PHP V0.1 du 19/08/2004 à 6h00 AM

srand();

// Configuration du Script //

define('AUDIO_PATH','/home/mp3s/'); // path absolu ou relatif jusqu'au dossier contenant les mp3
define('BITRATE','128'); // bitrate des mp3, laisser vide s'il est variable
define('MUSIC_COUNT','60'); // nb de morceaux qui seront ds la playlist

// Configuration De la Radio //

define('TITLE','Radio Cyrille2 powered by Radio PHP v0.1 cyrille2@free.fr ');
define('GENRE','Trance'); // genre de musique

// Divers //

define(CRLF,chr(13).chr(10)); // ne pas toucher :)

// Fin Conf

// Functions 

function Select_File($path) { // Permet de selectionner un fichier au pseudo-hasard dans le répertoire (gestion des sous-répertoires)
	$files = array();
	$i = 0;
	
	if(substr($path,-1) != '/')
		$path .= '/'; // sécurité
	
	if ($dh = opendir($path)) {
		
		// listing files
		
		while (($file = readdir($dh)) !== false)
			if ($file != '.htaccess' && $file != '.' && $file != '..')
       				$files[$i++] = $file;
 
		closedir($dh);
	
       		// choix au hasard
       		
       		$r = rand(0,count($files)-1);
       		
       		if (is_dir($path.$files[$r]))
       			return Select_File($path.$files[$r]); // récurrence
       		else
       			return $path.$files[$r];

	}
	
	return 0;
}

// Fin fonctions

// Headers pour le stream

header('Content-Type: application/force-download');
header('Content-Description: File Transfert');
header('Content-Disposition: attachment; filename="'.TITLE.'"');

// infos radio

echo 	'ICY 200 OK'.CRLF.
	'icy-notice1: <br />This stream requires <a href="http://www.winamp.com/">Winamp</a><br />'.CRLF.
	'icy-notice2: RadioPHP v0.1 by Cyrille2 - cyrille2@free.fr<br />'.CRLF.
	'icy-genre: '.GENRE.CRLF.
	'icy-url: http://cyrille2.free.fr/'.CRLF.
	'icy-pub: 0'.CRLF.
	'icy-metaint: 0'.CRLF.
	((BITRATE=='')?'':'icy-br:'.intval(BITRATE).CRLF).
	'icy-name: '.TITLE.CRLF.CRLF;

// MUSIC_COUNT morceaux de musiques non stop

for($i = 0; $i <MUSIC_COUNT; $i++) {
	$f = Select_File(AUDIO_PATH);
	
	if (!($f === 0))
		@readfile($f);
}

?>

Conclusion :


Aucun bug connu à l'heure actuelle.
Si vous faites tourner ce script sur votre site ou que vous vous en servez, merci de me le faire savoir avec un petite url, ca me ferait plaisir qd meme :)

Enfin, je sais que la playlist est en random et non en shuffle, si un jour j'ai la foi, je coderai un peu plus...

Bonne écoute :)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.