Radio php v 0.1

Soyez le premier à donner votre avis sur cette source.

Snippet vu 21 572 fois - Téléchargée 38 fois

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

Ajouter un commentaire

Commentaires

cs_bilboss77
Messages postés
11
Date d'inscription
mercredi 18 octobre 2006
Statut
Membre
Dernière intervention
3 décembre 2007
-
Salut, c'est super comme truc, pile ce que je cherchai.
Je vais m'en servir pour un projet en local.

Merci.
goliath2002
Messages postés
43
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
20 mai 2011
1 -
Bonjour,

Voici le probleme que j'ai quand je lance ma liste dans winamp, il me repond ca : ERROR SYNCING TO MPEG
Merci
cs_Cyrille2
Messages postés
120
Date d'inscription
vendredi 16 août 2002
Statut
Modérateur
Dernière intervention
15 mai 2005
-
Salut!

en effet, ce sont des problèmes auquels je me suis heurtés mais les solutions sont déjà dans le source !

1) Comme le script s'éxécute en permanence, il faudrait y ajouter un set_time_limit(0); (si cette commande est permise par le système hôte). Parce qu'au bout d'un moment, le script devrait normalement s'arrêter.

En réalité, il ne s'execute pas en permanence, il envoie MUSIC_COUNT fichiers musicaux dans le buffer. Ces operations sont donc uniquement MUSIC_COUNT readfile. Donc en réalité, ce temps dépasse rarement les 30 secondes, puisque le streaming est géré par apache et non le script php ;)

2) En général (celà dépend de la configuration) PHP est autorisé à utiliser 8Mb de mémoire vive.. Dès qu'il dépasse ce seuil, il arrete l'exécution du script, donc dès que ta radio aura envoyée plus de 8Mb de son, à mon avis le script devrait s'arreter.

Vrai aussi ! Mais en réalité, le readfile envoie le contenu du fichier dans un autre buffer (celui d'apache je présume), cette limitation n'intervient donc plus ...

Je regarderai ton soft dès que j'aurais un peu de temps libre, merci beaucoup pour cette information et ta note ;)

++
thomvaill
Messages postés
370
Date d'inscription
mercredi 7 avril 2004
Statut
Membre
Dernière intervention
20 février 2007
-
Bonne idée :)
Tu as du te baser sur le serveur de radio "shoutCast" de Winamp.
Pour que ça soit compatible avec windows media etc, étudies le fonctionnement de icecast (même genre que Winamp).

Je n'ai pas testé la source, mais à mon avis il doit y avoir quelques beugs...
1) Comme le script s'éxécute en permanence, il faudrait y ajouter un set_time_limit(0); (si cette commande est permise par le système hôte). Parce qu'au bout d'un moment, le script devrait normalement s'arrêter.

2) En général (celà dépend de la configuration) PHP est autorisé à utiliser 8Mb de mémoire vive.. Dès qu'il dépasse ce seuil, il arrete l'exécution du script, donc dès que ta radio aura envoyée plus de 8Mb de son, à mon avis le script devrait s'arreter.

Si non, bon boulot et bonne idée. 8/10.
ravery
Messages postés
34
Date d'inscription
samedi 1 mai 2004
Statut
Membre
Dernière intervention
23 mars 2007
1 -
Ben ca marche nickel.
Bravo pour ce script.
Je sens que je vais plus trop m'emmerder au boulot.

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.