id3_set_tag

Eléphanteau du PHP | 21 Messages

05 janv. 2013, 23:25

Bonjour,

Je passais souvent ici il y a quelques années, je profite d'un nouveau problème pour redécouvrir le forum.

J'aimerais utiliser la fonction id3_set_tag sur un nouveau site.
Je stocke des compositions musicales avec l'aide d'une base de donnée, et j'aimerais ne pas avoir à modifier à chaque fois les propriétés des mp3 sur mon ordinateur avant de les publier. Je souhaiterais modifier les tags des mp3 via PHP. Mais j'ai l'impression que la fonction n'est pas disponible sur mon serveur mutualisé.

Le code :
/* MODIFICATION DES TAGS DU MP3 */
				$data = array(
							  "title" => $nom,
							  "artist" => $groupe,
							  "album" => $album,
							  "year" => $annee
							 );
				$result = id3_set_tag('./url/fichier.mp3', $data, ID3_V1_0 );
				if ($result === true) {
					echo '<p>OK | Tag modifié.</p>';
				}
				
			}
La réponse :
Fatal error: Call to undefined function id3_set_tag() in /url/page.php on line 268
Je ne comprends pas grand chose à l'installation d'extensions PECL et je doute que ce soit possible sur un serveur mutualisé.
Y-at-il une alternative ?

Merci !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

06 janv. 2013, 11:16

Salut,

Effectivement il y a peu de chance que ton hébergeur ai ce type d'extension ;) (rien qu'en utilisation mémoire ça doit les faire chier ;) ) mais tu peux toujours demander ;)

En cherchant sur Google je suis tombé la dessus : http://www.getid3.org/ il y a peux être ton bonheur (il y a ne classe php mais qui semble dépendante de l'extension id3....

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 21 Messages

06 janv. 2013, 12:40

Merci ! Héhé, c'est une usine à gaz :)
En principe cet exemple est fait pour, mais je n'ai pas réussi à m'en servir...
J'obtiens toujours des erreurs après avoir supprimé la ligne "die". Je vais creuser encore un peu.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

06 janv. 2013, 13:02

erreur sur le require ?

il faut toute la "distrib" pour que cela fonctionne ;)



@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 21 Messages

06 janv. 2013, 13:18

Oui, j'ai toute la distrib sur mon serveur.

Quand j'utilise l'exemple demo.write.php j'obtiens une erreur :

Code : Tout sélectionner

magic_quotes_gpc is enabled, getID3 will not run.
Quand j'utilise l'exemple simple.write.php c'est le fichier test qui semble poser problème.

Code : Tout sélectionner

Failed to write tags! filename set to non-existant file "P:/webroot/_dev/getID3/testfiles/_writing/2011-02-02/test.mp3" in getid3_writetags
Donc je mets un mp3 test sur mon serveur et remplace les adresses par ../../musiques/test.mp3
J'obtiens cette erreur :

Code : Tout sélectionner

Fatal error: Uncaught exception 'Exception' with message '$this->overwrite_tags=false is known to be buggy in this version of getID3. Will be fixed in the near future, check www.getid3.org for a newer version.' in /url/www/getid3-1.9.4b1-20121005/getid3/write.php:422 Stack trace: #0 /url/www/getid3-1.9.4b1-20121005/getid3/write.php(564): getid3_writetags->MergeExistingTagData('id3v2', Array) #1 /url/www/getid3-1.9.4b1-20121005/getid3/write.php(284): getid3_writetags->FormatDataForID3v2(3) #2 /url/www/getid3-1.9.4b1-20121005/demos/demo.simple.write.php(51): getid3_writetags->WriteTags() #3 {main} thrown in /url/www/getid3-1.9.4b1-20121005/getid3/write.php on line 422

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

06 janv. 2013, 14:19

1/ désactive les magicquote => iniset
2/ Effectivement indique un nom de fichier existant dans le path (p: c'est assez rare ;) )
3/ le truc est buggé dans la version que tu utilise :) (enfin c'est eux qui le disent :mrgreen: donc rien a faire ;)


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 120 Messages

06 janv. 2013, 14:37

ini_set() ne permet pas de désactiver magic_quotes en runtime, car ces données sont traitées avant que le code PHP ne soit interprété. Il faut les désactiver à la racine : soit directement dans le fichier php.ini, soit par .htaccess si le serveur le permet.
D'ailleurs, si tu es chez un hébergeur qui active toujours magic_quotes en 2013 par défaut, à ta place, je changerais d'hébergeur aussi vite que possible.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

06 janv. 2013, 15:03

effective c'était en php en php4 que l'on pouvait le faire avec ini_set.

beaucoup d'hébergeur garde ce type de configuration pour éviter les problèmes de rétro compatibilité sur des scripts assez vieux (idem pour le register globals etc etc) ;)

(il y a toujours des hébergeur qui propose php4 ...)

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 21 Messages

06 janv. 2013, 21:55

Merci,
Bon je crois que je vais me contenter d'un logiciel pour changer les tags ;)