Aller au contenu

Script Genre "c T Koi" ?


Messages recommandés

Tu ne peux pas, le système proposé par R3dH4x0r fonctionne seulement pour les radios Radionomy, pour que tu puissent faire ça avec un Shoutcast, je crains qu'il faillent que tu créer ton propre système en PHP (réussir a enregistré tout les titres qui sont diffusé dans une BDD Mysql avec le jour et l'heure, à partir de ça, tu pourras faire ce que tu veux avec cette BDD, entre autre faire un "C T Koi")

Lien vers le commentaire
Partager sur d’autres sites

  • 1 month later...

Salut a tous ;)

Je vais essayer de vous aider a ce niveau la ^^

En faite il n'y a aucun moyen matéreil ni logiciel de détecter une musique et de l'enregistrée en BDD sql.

Les grosses radio font une liste des musique a passer dans la journée, on va prendre exemple avec Fun radio.

Fun donne une fiche avec toutes les musiques a passer avec des Top horaire. Les moments des speaks, sur intro ou sur cage.

Et donc il ont une liste des musique qu'ils doivent passer.

Sur internet, ils enregistrent cette liste en BDD sql.

Et un script, tout facile, va chercher l'id 1 qui passe a 16H24. L'id 2 a 16H35 ... Et in ci de suite.

Lien vers le commentaire
Partager sur d’autres sites

Attention quand même avec cette technique, il faudra mettre une condition pour ne pas afficher les titres a venir ;)

Lien vers le commentaire
Partager sur d’autres sites

La première partie de ce que tu dis est fausse. J'ai développé un système de ce genre pour la webradio pour laquelle je travaille.

Le logiciel de titrage qui est disponible gratuitement sur le net appelle une page php avec le titre dans l'url. Dans cette page php, je récupère le titre, l'heure et la date et j'ajoute le tout dans la base de donnée.

Il n'existe pas de solution toute faite, c'est à vous de la développer.

Lien vers le commentaire
Partager sur d’autres sites

oui du genre page.php?id=1&titre=lol&artiste=moi&date=13/18/46&heure=15H15

Ca oui, mais je parle d'un logiciel qui se connecte en BDD externe et enregistre. Juste une connexion est possible. Mais pas d'envoi, Cela n'est pas possible.

Lien vers le commentaire
Partager sur d’autres sites

Et existe t'il une liste des titres passés pour In The Club by Goom Radio ?

Car je suis partenaire avec eux mais je ne peux pas avoir de programmeur de chez eux étant donné qu'ils sont chez GoomRadio USA.

À moins que j'arrive à faire faire une capture d'écran à mon serveur à chaque changement de titre par VLC et remplir une liste moi même.

Je vais tenter d'aviser.

Lien vers le commentaire
Partager sur d’autres sites

Le logiciel se connecte a ma page comme ceci :

Logiciel de titrage >> mapage.php?titre=Eminem - Stan >> Ajout dans la DB SQL

Dans "mapage.php", il y du code php qui est exécuté et qui récupère le titre en GET, la date et l'heure du serveur web et qui ajoute le tout dans une table SQL.

Et si tu ne veux pas passer par le soft de titrage une tache CRON sur un fichier php qui récupère le titre du SHOUTcast et si il est différent du précédent tu l'ajoute.

Lien vers le commentaire
Partager sur d’autres sites

Pour la date et l'heure je te conseil d'utiliser un timestamp.

Préci et tres simple d'utilisation. Et pour le coup Tres bien pour les titrage radio :)

du genre (il y a 2 minutes)

Lien vers le commentaire
Partager sur d’autres sites

Pour la date et l'heure je te conseil d'utiliser un timestamp.

Préci et tres simple d'utilisation. Et pour le coup Tres bien pour les titrage radio :)

du genre (il y a 2 minutes)

J'y avais pensé, t’inquiète ;)

Je m'occupe d'abord de chercher un pilote de carte son qui aille sur mon serveur car elle marchait sous windows serveur 2003 mais depuis que je suis passé au 2008... Winamp refuse de lancer le stream ^^

Lien vers le commentaire
Partager sur d’autres sites

La pour le coup je peut pas t'aider !! Essay le bon vieux mesdrivers.com ;)

LOL ca y est, j'ai fini par trouver en prenant le dernier driver sur le site Realtek. Hé oui, un serveur avec peut de moyens, ca donne un bon vieux Dell Optiplex =)

EDIT : Ca y est, tout est bon, maintenant ca se complique car on arrive à la partie où il faut envoyer les données à la base de données quand il y a un changement de titre...

J'ai trouvé sur internet un petit script php qui me donne le titre; voir ici : http://46.22.92.83/itc/index.php

Si quelqu'un s'y connais dans le domaine de l'envoie vers la base de données, j'aurai besoin d'un peut d'aide. Merci

Lien vers le commentaire
Partager sur d’autres sites

J'aurai encore besoin d'aide quand à la récupération des titres.

J'ai mis en stream la radio à laquelle je souhaite récupérer les données avec Winamp, avec le DSP EdCast et IceCast Server.

Tout fonctionne correctement, voir à l'adresse de mon serveur : http://46.22.92.83:8000

Maintenant si quelqu'un voudrait bien m'expliquer comment faire la récupération des titres, je lui en serait reconnaissant.

Merci d'avance

Lien vers le commentaire
Partager sur d’autres sites

Moi je suis webmaster de reseau social, donc c'est complétement mon domaine ^^

Le truc c'est comme je l'est expliquer taleur, c'est enregistré en BDD et tout ;)

Lien vers le commentaire
Partager sur d’autres sites

Moi je suis webmaster de reseau social, donc c'est complétement mon domaine ^^

Le truc c'est comme je l'est expliquer taleur, c'est enregistré en BDD et tout ;)

Oui, donc là j'ai mon config.php, la page qui affiche le titre est prête à s'y connecter mais je ne sais pas comment faire apres, c'est ca le problème.

config.php :


<?php
define("DB_HOST","127.0.0.1");
define("DB_LOGIN","val");
define("DB_PASS","monmotdepasse");
define("DB_BDD","itc");
?>

index.php :


<?php
require"config.php";
mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD);

function connect_icecast($host, $port){
$fp = @fsockopen($host, $port, $errno, $errstr, 3);

if(!$fp){
echo 'Impossible de se connecter : "' . $errno . ' - ' . $errstr . '"<br />';
return false;
} else {
fputs($fp, 'GET /status2.xsl' . " HTTP/1.0\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9)\r\n\r\n");

$page = '';
while(!feof($fp)){
$page .= fread($fp, 1000);
}
fclose($fp);
return $page;
}
}

function kiwi_icecast($host, $port){
$contenu = connect_icecast($host, $port);

$tabChamps = array(3 => 'nom', 4 => 'auditeurs', 5 => 'max', 6 => 'titre', 7 => 'artiste');

if ($contenu){
if (preg_match_all('`([[:cntrl:]]/|//::///)([^,]*),([^,]*),([[:digit:]]*),([[:digit:]]*),([^/]*)`', $contenu, $resultat)){

foreach($resultat[2] as $numPoint => $mountName)
foreach ($tabChamps as $index => $champ)
$tabIce[$mountName][$champ] = $resultat[$index][$numPoint];

return $tabIce;
} else {
echo 'Pas de contenu !<br />';
return false;
}
}
else{
return false;
}

}

$tabIceCast = kiwi_icecast('192.168.1.56', 8000);

if($tabIceCast){
echo 'Titre en cours : ' . $tabIceCast['itc']['titre'];
} else {
echo 'Parsing impossible';
}
?>

La base de données et la table est crée avec :

une colonne 'titre' en varchar de 60 not null

une autre colonne 'date' en timestamps not null et un défaut à current timestamp

J'espère que tu pourra m'aider.

Lien vers le commentaire
Partager sur d’autres sites

Ba enfaite, il faut que ton fichier php sois dans le site ou il y a ds la BDD :

Pour commencer, ton fichier config ne va pas. Tu utilise des défine si tu as plusieur BDD.

Donc met ca a la place ds ton fichier config.php :

<?php
$DB_HOST = '127.0.0.1';
$DB_LOGIN = 'val';
$DB_PASS = 'monmotdepasse';
$DB_BDD = 'itc';
?>

et au debut de ton login :


mysql_connect($DB_HOST,$DB_LOGIN,$DB_PASS);
mysql_select_db($DB_BDD);

Et tu change juste ca :

if($tabIceCast){
echo 'Titre en cours : ' . $tabIceCast['itc']['titre'];
} else {
echo 'Parsing impossible';
}

en ca :

if($tabIceCast){

//AFICHAGE DU TITRE
echo 'Titre en cours : ' . $tabIceCast['itc']['titre'];

//ENREGISTREMENT DU TITRE EN BDD

$titre = $tabIceCast['itc']['titre'];
$time = time();

$insert_bdd= mysql_query(" INSERT INTO donnees VALUES (
$titre,
$time
)
");

} else {
echo 'Parsing impossible';
}

Ensuite dans l'affichage du dernier titre mit tu met ca :



$select_titre = mysql_query("SELECT * FROM donnees ORDER by id DESC LIMIT 1");
while($v_titre = mysql_fetch_array($select_titre)) {

$titre = $v_titre['titre'];
$time = $v_titre['date'];
}

echo '

Le dernier titre jouer est :'.$titre.' le '.date(d.'/'.m.'/'.Y, $time).' à '.date(H.':'.i.':'.s, $time).'
';

EDIT (MaxPag) : Pas besoin de double post, la fonction "Editer" existe ;)

Lien vers le commentaire
Partager sur d’autres sites

Je te remercie pour tout mais j'ai tout mis correctement et rien ne se passe dans la base de données.

Je crois qu'il n'arrive pas à insérer les données.

J'ai bien réglé les lignes comme ça : //ENREGISTREMENT DU TITRE EN BDD

$table = 'donnees';

$titre = $tabIceCast['itc']['titre'];

$time = time();

$insert_bdd= mysql_query(" INSERT INTO $table VALUES (

$titre,

$time

)

");

} else {

echo 'Parsing impossible';

}

?>

Voici un screen de la table avec les colonnes :

donnees.png

Lien vers le commentaire
Partager sur d’autres sites

OK esay un truc tout bette :

if($tabIceCast){

//AFICHAGE DU TITRE
echo 'Titre en cours : ' . $tabIceCast['itc']['titre'];

//ENREGISTREMENT DU TITRE EN BDD

$titre = 'inna';
$time = time();

$insert_bdd = mysql_query(" INSERT INTO donnees VALUES (
'$titre',
'$time'
)
");

if (!$insert_bdd) {
die('Requête invalide (bdd titre) : ' . mysql_error());
}
else {
echo 'enregistrement réussit';}


} else {
echo 'Parsing impossible';
}

Pour le type de date : met int ;)

Lien vers le commentaire
Partager sur d’autres sites

essay ca :

if($tabIceCast){

//AFICHAGE DU TITRE
echo 'Titre en cours : ' . $tabIceCast['itc']['titre'];

//ENREGISTREMENT DU TITRE EN BDD

$titre = $tabIceCast['itc']['titre'];
$time = time();

$insert_bdd = mysql_query(" INSERT INTO donnees VALUES (
'$titre',
'$time'
)
");

if (!$insert_bdd) {
die('Requête invalide (bdd titre) : ' . mysql_error());
}
else {
echo 'enregistrement réussit';}


} else {
echo 'Parsing impossible';
}

Lien vers le commentaire
Partager sur d’autres sites

La le probléme c'est qu'il va ajouter ds la bdd a chaque fois que tu charge la page.

Je vais modifier le script por qu'il detecte si il doit le faire ou pas.

Il le fera pas si la musique en cours est la meme que la dernière enregistrer

Hop la :

if($tabIceCast){

//AFICHAGE DU TITRE
echo 'Titre en cours : ' . $tabIceCast['itc']['titre'];

//ENREGISTREMENT DU TITRE EN BDD

$select_titre = mysql_query("SELECT * FROM donnees ORDER by id DESC LIMIT 1");
while($v_titre = mysql_fetch_array($select_titre)) {

$titre = $v_titre['titre'];
}

$titre_now = $tabIceCast['itc']['titre'];
$time_now = time();

//teste si le titre jouer est le meme que le dernier titre enregistrer
if ($titre != $titre_now) {

$insert_bdd = mysql_query(" INSERT INTO donnees VALUES (
'$titre_now',
'$time_now'
)
");

if (!$insert_bdd) {
die('Requête invalide (bdd titre) : ' . mysql_error());
}
}
}
else {
echo 'Parsing impossible';
}

Dit moi si ca marche

Lien vers le commentaire
Partager sur d’autres sites

On va prendre ca avec le sourir.

J'ai mis le code, j'ai mis index.php sur mon serveur puis j'ai changé la page.

Super ! Ça fonctionne dans la base de donnée mais il y a une petite erreur :

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\itc\index.php on line 59

Voici la ligne 59 : while($v_titre = mysql_fetch_array($select_titre)) {

Puis la musique change donc je ré-actualise et le titre précédent s'efface ( ne reste que le timestamp ) et voici l'erreur que j'ai :

Titre en cours : , - The Black Eyed Peas - Don't Stop The Party (Goom Edit) (IN THE CLUB) ,<

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\itc\index.php on line 59

Requête invalide (bdd titre) : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 't Stop The Party (Goom Edit) (IN THE CLUB) ,<', '1309277669' )' at line 2

Voilà ce que ca donne dans la base de données :

probleme.png

Lien vers le commentaire
Partager sur d’autres sites

J'ai plus d'erreur moi

Titre en cours : , - Marc Anthony

MET CA :

if($tabIceCast){

//AFICHAGE DU TITRE
echo 'Titre en cours : ' . $tabIceCast['titre'];

//ENREGISTREMENT DU TITRE EN BDD

$select_titre = mysql_query("SELECT * FROM donnees ORDER by id DESC LIMIT 1");
while($v_titre = mysql_fetch_array($select_titre)) {

$titre = $v_titre['titre'];
}

$titre_now = $tabIceCast['titre'];
$time_now = time();

//teste si le titre jouer est le meme que le dernier titre enregistrer
if ($titre != $titre_now) {

$insert_bdd = mysql_query(" INSERT INTO donnees VALUES (
'$titre_now',
'$time_now'
)
");

if (!$insert_bdd) {
die('Requête invalide (bdd titre) : ' . mysql_error());
}
}
}
else {
echo 'Parsing impossible';
}
echo 'Les 5 dernier titre : <br><br><table><tbody>';
$select_titre = mysql_query("SELECT * FROM donnees ORDER by id DESC LIMIT 5");
while($v_titre = mysql_fetch_array($select_titre)) {

$titre = $v_titre['titre'];
$time = $v_titre['date'];

echo '<tr><td>'.$titre.'</td><td>Le'.date(d.'/'.m.'/'.Y, $time).' à '.date(H.':'.i.':'.s, $time).'</td></tr>';

}
echo '</tbody></table>';
}

Lien vers le commentaire
Partager sur d’autres sites

bien sur que ca change ^^ C'est ca qui selectionne le dernier id ^^. Essay mon dernier code

Tu m'étonnes qu'il arrive pas à chopper le truc ! J'ai pas de colonne ID !

Je la fait en INT auto increment not null ?

Edit : C'est encore la m**** LOL

Maintenant j'ai ca : Requête invalide (bdd titre) : Column count doesn't match value count at row 1

Edit 2 : Ca n'envoie plus à la bdd, sans doute qu'il faut que je lui dise d'insérer l'ID ?

Lien vers le commentaire
Partager sur d’autres sites

non del ta colone id ^^

Met ca comme code :

if($tabIceCast){

//AFICHAGE DU TITRE
echo 'Titre en cours : ' . $tabIceCast['titre'];

//ENREGISTREMENT DU TITRE EN BDD

$select_titre = mysql_query("SELECT * FROM donnees ORDER by date DESC LIMIT 1");
while($v_titre = mysql_fetch_array($select_titre)) {

$titre = $v_titre['titre'];
}

$titre_now = $tabIceCast['titre'];
$time_now = time();

//teste si le titre jouer est le meme que le dernier titre enregistrer
if ($titre != $titre_now) {

$insert_bdd = mysql_query(" INSERT INTO donnees VALUES (
'$titre_now',
'$time_now'
)
");

if (!$insert_bdd) {
die('Requête invalide (bdd titre) : ' . mysql_error());
}
}
}
else {
echo 'Parsing impossible';
}
echo 'Les 5 dernier titre : <br><br><table><tbody>';
$select_titre = mysql_query("SELECT * FROM donnees ORDER by date DESC LIMIT 5");
while($v_titre = mysql_fetch_array($select_titre)) {

$titre = $v_titre['titre'];
$time = $v_titre['date'];

echo '<tr><td>'.$titre.'</td><td>Le'.date(d.'/'.m.'/'.Y, $time).' a '.date(H.':'.i.':'.s, $time).'</td></tr>';

}
echo '</tbody></table>';
}

Lien vers le commentaire
Partager sur d’autres sites

Pour ce que cela interesse ;) : CA DONNE CA

FICHIER index.php :

<?php
require"config.php";
mysql_connect($DB_HOST,$DB_LOGIN,$DB_PASS);
mysql_select_db($DB_BDD);

function time_t($iTime) { $iTimeDifference = time() - $iTime ; if( $iTimeDifference<0 ) { return; } $iSeconds = $iTimeDifference ; $iMinutes = round( $iTimeDifference/60 ); $iHours = round( $iTimeDifference/3600 ); $iDays = round( $iTimeDifference/86400 ); $iWeeks = round( $iTimeDifference/604800 ); $iMonths = round( $iTimeDifference/2419200 ); $iYears = round( $iTimeDifference/29030400 ); if( $iSeconds<60 ) return 'Il y a ' . $iSeconds . ' seconde' . ( $iSeconds>1 ? 's' : '' ); elseif( $iMinutes<60 ) return 'Il y a ' . $iMinutes . ' minute' . ( $iMinutes>1 ? 's' : '' ); elseif( $iHours<24 ) return 'Il y à ' . $iHours . ' heure' . ( $iHours>1 ? 's' : '' ); elseif( $iDays<2 ) return 'Hier à '.date(H.':'.i,$iTime); else return 'le '.date(d.'/'.m.'/'.Y.' à '.H.':'.i,$iTime); }



function connect_icecast($host, $port){
$fp = @fsockopen($host, $port, $errno, $errstr, 3);

if(!$fp){
echo 'Impossible de se connecter : "' . $errno . ' - ' . $errstr . '"<br />';
return false;
} else {
fputs($fp, 'GET /status2.xsl' . " HTTP/1.0\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9)\r\n\r\n");

$page = '';
while(!feof($fp)){
$page .= fread($fp, 1000);
}
fclose($fp);
return $page;
}
}

function kiwi_icecast($host, $port){
$contenu = connect_icecast($host, $port);

$tabChamps = array(3 => 'nom', 4 => 'auditeurs', 5 => 'max', 6 => 'titre', 7 => 'artiste');

if ($contenu){
if (preg_match_all('`([[:cntrl:]]/|//::///)([^,]*),([^,]*),([[:digit:]]*),([[:digit:]]*),([^/]*)`', $contenu, $resultat)){

foreach($resultat[2] as $numPoint => $mountName)
foreach ($tabChamps as $index => $champ)
$tabIce[$mountName][$champ] = $resultat[$index][$numPoint];

return $tabIce;
} else {
echo 'Pas de contenu !<br />';
return false;
}
}
else{
return false;
}

}

$tabIceCast = kiwi_icecast('192.168.1.56', 8000);

///////////////////////////////////////////////
//AFICHAGE DU TITRE
if($tabIceCast){

$titre_now = mysql_real_escape_string(htmlspecialchars(stripcslashes(trim($tabIceCast['itc']['titre']))));
$time_now = time();

echo '<div style="margin-left:20px;margin-top:20px;margin-bottom:10px; font-size:25px;"><b>Titre en cours : </b>' .$titre_now.'</div>';

//ENREGISTREMENT DU TITRE EN BDD

$select_titre = mysql_query("SELECT * FROM radio ORDER by id DESC LIMIT 1");
while($v_titre = mysql_fetch_array($select_titre)) {
$titre = $v_titre['titre'];
}

if($titre != $titre_now) {

$insert_bdd = mysql_query(" INSERT INTO radio VALUES (
'',
'$titre_now',
'$time_now'
)
");
if (!$insert_bdd) {
die('Requête invalide (bdd titre) : ' . mysql_error());
}
}
}
else {
echo 'Parsing impossible';
}
$dernier_titre = $_GET['dernier_titre'];
if (empty($dernier_titre) || $dernier_titre == '0') {$dernier_titre = '5';}
echo '
<div style="margin-left:20px;">
<table border="0"
cellpadding="5" cellspacing="5"
class="rounded-r10" style="color:white; background-image:url(\'http://www.mdl-champollion.fr/img/bg.png\');"><tbody><tr><td><b>Les '.$dernier_titre.' Dernier titres</b></td><td style="vertical-align:center; text-align:right"><form method="get"
action="index.php">
Voir les <input name="dernier_titre" size="1"> Dernier <span class="input-bleu2" style="margin-top:2px;"><input class="button-bleu2" type="submit" value="Ok"></span></form></td></tr>';

$select_titre = mysql_query("SELECT * FROM radio ORDER by id DESC LIMIT $dernier_titre");
while($v_titre = mysql_fetch_array($select_titre)) {
$titre = $v_titre['titre'];
$time = $v_titre['time'];
echo '<tr><td style="border-bottom:1px solid grey;">'.$titre.'</td><td style="text-align:right;border-bottom:1px solid grey;">'.time_t($time).'</td></tr>';

}

echo '</tbody></table></div>';
?>

Fichier config.php :

<?php
$DB_HOST = 'SERVEUR';
$DB_LOGIN = 'LOGIN DE LA BASE DE DONNEE';
$DB_PASS = 'PASSE SQL';
$DB_BDD = 'LE NOM DE LA BASE DE DONEE';
?>

CRéation de la base de donnée en code sql :

CREATE TABLE IF NOT EXISTS `radio` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`titre` varchar(1000) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
`time` int(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;

Dites moi se cela vous va :)

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...