begin process at 2010 03 21 08:13:39
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > RADIO PHP V 0.1

RADIO PHP V 0.1


 Information sur la source

Note :
8,33 / 10 - par 3 personnes
8,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseau & Internet Classé sous :radio, streaming Niveau :Initié Date de création :08/09/2004 Date de mise à jour :08/09/2004 06:16:35 Vu :16 457

Auteur : Cyrille2

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (19)
Ajouter un commentaire et/ou une note


 Description

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

  • <?
  • /*************************************************************************\
  • /*************************** 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);
  • }
  • ?>
<?

/*************************************************************************\
/*************************** 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 :)


 Historique

08 septembre 2004 06:16:36 :
Correction de texte

 Sources du même auteur

COMPTEUR BASIC AVEC CONTRÔLE DES COMPTAGES INUTILES SUR X MI...
HTMLENTITIES POUR LES ARRAY
Source avec Zip RECUPÉRATION D'UNE LISTE DES CHANS DE SERVER IRC SOUS FORME ...

 Sources de la même categorie

SONDAGE - VOTE - POLL (AVEC MYSQL) par hornet_bzz
Source avec Zip Source avec une capture CRAYONPRO EST UN CMS SIMPLE EN PHP ET MYSQL - INSTALLATION E... par crayoncie
Source avec Zip Source avec une capture LISTENGEN GÉNÉRATEUR DE FICHIER PLAYLIST par AGG
Source avec Zip IP CALCULATOR par X_Cli
Source avec Zip Source avec une capture WHOIS DOMAIN CLASS : LOOKUP & AVAIBILITY par aKheNathOn

 Sources en rapport avec celle ci

Source avec Zip JUKEBOX MP3 par sesebs
[POO PHP5] RÉCUPÉRATION DES INFOS DES STREAMS DE PULSRADIO par Epoc22
Source avec Zip STREAMING EN PHP par jbphp
Source avec Zip UPLOAD MP3 + LECTEUR par lobotomihaho
VOTE POUR SHOUTCAST par masterofquebec

Commentaires et avis

Commentaire de GRenard le 08/09/2004 13:37:40

Hum... ca marche pas ?
Disons que premierement il faut mettre le error_reporting sans les NOTICE
et ensuite, bah il me download un fichier la et ca marque que ca downoad à 2.3Mb/sec (fenetre de IE) mais je ne vois aucun traffic sortant s'effectuant sur mon PC et la page n'affiche rien.
Je viens de faire un autre essais, et la le download s'est terminé (sans downloader de l'extérieur). Il fait 1.73mb...
Ya ton entete au début, du pad apres, des données crypté ensuite et ensuite il y a des fichiers ... png.c... tout pleins de fichier en c... (pour etre plus précis, c'est des fichiers de Qt)...

Je passe par un ordinateur linux avant de me connecter à internet.

Commentaire de Cyrille2 le 08/09/2004 15:28:43 administrateur CS

Slt!
Le fichier que les clients sont censé ouvrir est le m3u (comme spécifié ds la description du source) ainsi winamp va lui même faire une requette sur ce script. Ensuite seulement le script agira.

De plus, apparemment j'ai omis de le spécifier mais il me semblait que c t évident, le répertoire spécifié dans AUDIO_PATH (ainsi que ses sous répertoires) ne doit contenir que des fichiers audios (ou vidéos, voir description). Les fichiers .htaccess sont automatiquement skippés.

Le fait que tu ai récupéré des fichiers de Qt indique que ton AUDIO_PATH n'est pas correct, ou qu'il contient les fichiers de Qt à la racine de AUDIO_PATH ou dans un sous répertoire.

Le fait que tu ai eu un dl dans internet explorer indique tu n'as pas lancé le m3u. :))

Du moins, je pense, si tel n'est pas le cas, fais le moi savoir!

Dans tout les cas, tiens moi au courant,
merci :)

Commentaire de GRenard le 09/09/2004 04:02:14

Ahhh d'accord lol :P
Le seul problème, c'est que avec le foutu SP2 de windows (jvais vite reinstaller mon windows moi)
tu peux pas l'ouvrir... tu peux que faire Save (avec IE)
Alors si tu veux lécouter c comme pas possible...

Par contre, j'ai une belle question pour toi, ca pourrait aider à mieux expliquer ton script... (ou ajouter des fonctionnalités). Au début, je pensais que ca se connectait sur kk chose, mais la ca lit juste les musiques... est-ce que c'est possible que ca lise les musiques mais dans un ordre défini par le "master" (et l'ordre si on est rendu à Y, bah kkun ki se connect la devrait écouter Y)

Ca srait pas mal ca :)

Commentaire de GRenard le 09/09/2004 04:06:04

Oh et je pourrais rajouter... on dirait que ca lit TOUS les fichiers... serait-il possible qu'il ne lise pas tous... en fait lol est-il possible de faire une RADIO :P même si c'est décallé de 10 secondes ca srait pas bin grave :P mais ca srait hot pareil ;)

Commentaire de Cyrille2 le 09/09/2004 06:21:02 administrateur CS

Encore une fois (et j'espère la dernière), il n'est pas question de consulter la page toi même mais par winamp. Comme spécifié clairement dans la description, le lien sur le site porte sur la PLAYLIST m3u et non le script.

2nd répétition, oui tous les fichiers sont lus, le répertoire musique, comme je l'ai déjà dit, ne doit contenir que des musiques (...), eventuellement de la vidéos pour faire mumuse.

Concernant l'enchainement des pistes, biensur c'est possible en tout point, mais ce n'était pas le but du script au départ!!! Maintenant, libre à toi de faire une gestion si tu le souhaites tant :) Pour ma part je m'en chargerai si j'ai du temps à perdre un jour ...

Bon coding !

Commentaire de SATANdemon le 10/09/2004 18:50:18

ca a l'air cool comme source mais j'arrive pas a la faire marcher.

j'ai fait un fichier liste.m3u qui contient l'adresse de la page avec ta source (http://localhost/temp/index.php).

j'ai rempli les variables comme ca :
define('AUDIO_PATH','/mp3/');
define('BITRATE','');
define('MUSIC_COUNT','18');
define('TITLE','Ma radio');
define('GENRE','Transe');

et quand je lance ma liste dans winamp, il me repond ca : ERROR SYNCING TO MPEG

donc mon dossier MP3 il n'y a que des fichier MP3, rien d'autre.

d'ou viens le probleme, je pense tout faire correctement :(

PS :
a quoi sert cette ligne : header('Content-Disposition: attachment; filename="'.TITLE.'"');
et pourquoi TITLE est il ici, c'est pas fait pour telecharger un fichier ca ??

Commentaire de GRenard le 10/09/2004 20:00:13

Yes, kan tu mets m3u moi ca bug aussi (Winamp5).. dès que tu mets une autre extension il arrive à le lire car il ne le traite pas comme étant un m3u...

Commentaire de fser le 10/09/2004 23:42:58

J'ai pas les infra structures permettant de tester, mais ça m'a l'air tres sympa tout ça !!

Commentaire de Cyrille2 le 11/09/2004 03:01:12 administrateur CS

Salut!
bon déjà si vous souhaitez tester, il existe un vieux site (le seul avec de la musique dont la diffusion gratuite est légale pour tester) soit http://evaleone.free.fr/ dans la section radio. Au moins vous pourrez voir le rendu :) Merci de ne pas regarder le code, ca date d'un an, c vieux pour moi.

SATANDemon > Ensuite, la ligne header('Content-Disposition: attachment; filename="'.TITLE.'"'); vient du fait que mon script initial était un script pour forcer le download d'un fichier et que je me suis apercu que le filename avait une incidence selon comment winamp interprétait (il peut ne pas recevoir le icy-name ou prendre le nom du fichier selon les versions, du moins n ami m'avait signalé l'affichage de FILENAME donc j'ai changé en title :)

Concernant l'erreur de SYNCING, je ne l'ai jms rencontrée, mais avec une brève recherche sur google ... http://www.winampfr.com/forum/viewtopic.php?t=6592&sid=47 il ne semble qu'aucune information ne soit trouvable

GRenard > vu comme tu en parles, il semble que tu es renommé le script php en m3u ... sinon il n'y a pas de raison que winamp plante sur une lecture de m3u... Regarde le site "exemple" pour mieux voir!

Je pense n'avoir rien oublié :)
@tantot

Commentaire de GRenard le 11/09/2004 03:24:28

Non, j'ai renommé le fichier que j'ai downloadé en m3u...
ca me crée plusieurs choses dans winamp et certains ne fonctionnent pas du tout, d'autres marquent BadRequest...
Si je renomme en autre chose ca lit les mp3...

Commentaire de Cyrille2 le 11/09/2004 05:28:43 administrateur CS

Je sais pas quel fichier tu as downloadé mais je crois que tu te trompes encore une fois, le fichier m3u ne doit contenir que le lien vers le script ... et le script reste en .php biensur...

Commentaire de GRenard le 11/09/2004 05:31:26

ohhhhh
"Enfin, créez une playlist winamp *.m3u et faites un lien sur votre site vers cette playlist :)"
c'tait pas claire... ca m'a pas marqué...
faut juste écrire le link dans le m3u ok je ne savais pas... moi je loadais le fichier php direct...

Commentaire de manland le 13/09/2004 23:00:38

Salut ! Je n'est qu'une seule question !!
Pourquoi faire un aussi bon code que pour Winanp ?? En effet le plupart des internautes ont windob média player ou voir real !!! Ce ne serait pas possible de le faire pour tous les logiciels ??

Merci !!

Commentaire de Cyrille2 le 14/09/2004 03:19:12 administrateur CS

lut!
en fait, je n'utilise pas WMP ni Real mais si un jour je les installe ... p-e que j'en observerais le fonctionnement (ss doute très similaire) !!

Je suis pas fan c tt, voila pk :)

Commentaire de narutosensei le 11/02/2005 10:55:52

hello all !
enfaite je suis carrément débutant ! et j'aimerez ke vous mexpliquez comment sa marche !
parce que dans mon forum j'aimeré mettre une radio
comme celle ci !
mais je ne sais pas comment faire voila le probleme
MERCI DE M'AIDER
anou95_1@hotmail.com   ^^

Commentaire de ravery le 16/02/2006 22:14:52

Ben ca marche nickel.
Bravo pour ce script.
Je sens que je vais plus trop m'emmerder au boulot.

Commentaire de thomvaill le 24/04/2006 18:31:28

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.

Commentaire de Cyrille2 le 30/04/2006 20:37:15 administrateur CS

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 ;)

++

Commentaire de goliath2002 le 10/02/2007 23:30:58


Bonjour,

Voici le probleme que j'ai quand je lance ma liste dans winamp, il me repond ca : ERROR SYNCING TO MPEG
Merci

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

recuperation d'une variable dans unn bouton radio [ par eryk17 ] jai un formulaire avec des boutons radios lorsque l'invité fait un chois en cliquant sur ce bouton je voudrai conaitre le choix de celui ci pour pourv boutons radio [ par eax ] salut!!g encore un petit problème : c'est dans la vérification d'un formulaire, je veux tester si le mec a sélectionné sa ville dans une liste de bout Bouton radio [ par iomega ] Bonjour à tous j'ai une liste de bouton radioet lorsque je clique sur l'un deux et que je confirme sur mon bouton chercher, le choix du bouton radio n Streaming MP3 [ par TiotBour ] Bonjour, j'avais poster un message pour lire un mp3 sur une page web. Je remerci encore une fois les personnes ayant repondu a mon post.Maintenant mon Recuperer les valeurs de bouton radio [ par Grimnar ] Bonjour tout le monde.J'ai un petit souci dans un code ou je dois recuperer les valeurs de boutons radio. apres avoir fais une recherche sur le forum besoin d'aide sur les formulaire avec des "radio" [ par SemBy ] salut,comment fait on pour trensferer les données d'un formulaire avec des boutons "radion"par exemple:vous preferer :-foot-rugbisi c'est le foot c Vote pour titre classement radio [ par radyonne ] Bonjour,Je voudrais savoir comment faire un vote pour le site web de ma radio avec mon system de titrage et d'affichage de pochettes cd, pour faire vo Systeme de vote pour radio ! [ par radyonne ] Bonjour,je voudrais savoir si quelqu'un saurait faire un system de vote pour le site web de ma radio, un system de vote comme celui de radiowave "top mettre de la radio sur son site web perso [ par amaew ] slt, je suis nouveau et j'essaie de faire mon premier site web. J'aimerai mettre de la radio dessus et que le visiteurs puisse choisir celle qu'il veu pb de formulaire [ par ronanf235 ] bonjourj'ai un formulaire avec plein de bouton radio, et lorsque je fais l'envoie a ma base MySql, je passe par un script qui recoit toutes les variab


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,764 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales