IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Récupération des tags id3 de fichiers ogg


Sujet :

Langage PHP

  1. #1
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 646
    Par défaut Récupération des tags id3 de fichiers ogg
    Bonjour,

    Pour l'instant, j'en suis là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php 
    $monRep = "../morceaux";
     
    if (is_dir($monRep)) {
       if ($dir = opendir($monRep)) {
          while (($file = readdir($dir)) !== false) {
             $dirfile = "$monRep/$file";
             if (stristr($dirfile, ".ogg") && is_readable($dirfile)) {
                $f = fopen($monRep."/".$file, "rb");
                $header = fread($f, 512);
     
                $koi = substr($header, 149,149) ;
    } } } }
    ?>
    ce qui retourne :
    artist=L_Artiste���title=Le_Titre���album=L_Album ���date=La_Date ���genre=Le_Genrevorbis+BCV����1L ŀАU����`$)�fI)���(y��HI)���0�����c�1�c�1�c�
    Et là, je ne sais plus...
    comment ne récupérer que les tags ?

    PS : je ne peux rien ajouter sur le serveur, qui n'a apparemment pas ce qu'il faut pour manipuler les tags ID3.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 646
    Par défaut
    Bon, j'avance un petit peu, j'ai remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $koi = substr($header, 149,149) ;
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $tagD = 'Xiph.Org libVorbis I';
    $tagF = 'vorbis+BCV';
    $debTag = strpos($header, $tagD) + strlen($tagD); 
    $finTag = strpos($header, $tagF); 
    $lesTags = substr($header, $debTag, $finTag - $debTag);
    echo $lesTags;
    et donc, je me retrouve avec
    20050304������TITLE=le_titre���ALBUM=l_album ���ARTIST=l_artiste ���DATE=la_date ���GENRE=le_genre
    Il faudrait que je puisse ne récupérer que les caractères valides, ou découper '$lesTags' entre le charabia, ou remplacer le charabia par un caractère valide qui marquerait la séparation des tags
    ...
    ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 646
    Par défaut
    À force...hein !
    C'est sans doute maladroit...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?php
    $monRep = "../morceaux";
     
    if (is_dir($monRep)) {
       if ($dir = opendir($monRep)) {
          while (($file = readdir($dir)) !== false) {
          $dirfile = "$monRep/$file";
             if (stristr($dirfile, ".ogg") && is_readable($dirfile)) {
                $fp = fopen($monRep."/".$file, "rb");
                $header = fread($fp, 512);
    $tagB = 'Xiph.Org libVorbis I';
    $tagE = 'BCV';
    $debTag = strpos( $header, $tagB ) + strlen( $tagB ); 
    $finTag = strpos( $header, $tagE ); 
    $lesTags = substr($header, $debTag, $finTag - $debTag);
    $lesTags = preg_replace("/\\x0|[\x01-\x1f]|vorbis./U"," ", $lesTags);
    $lesTags = preg_replace('/\s\s+/', ':', $lesTags);
    list($ver, $titre, $album, $artiste, $date, $genre) = split(':', $lesTags);
    echo "$ver - $titre - $album - $date - $genre .";
             fclose($fp);
             }
          }
       }
       closedir($dir);
    ?>
    }
    retroune
    20050304 - TITLE=le_titre - ALBUM=l_album - ARTIST=l_artiste - DATE=la_date - GENRE=le_genre .
    Je n'ai plus qu'à retirer les intitulés des tags.

    Si vous connaissez une manière plus simple, plus directe, plus...mieux !!!
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 646
    Par défaut Récupération des commentaires de fichiers ogg
    N'est-ce pas mieux ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <?php 
    $monRep = "../www/morceaux";
     
    if (is_dir($monRep)) {
       if ($dir = opendir($monRep)) {
          while (($file = readdir($dir)) !== false) {
             $dirfile = "$monRep/$file";
             if (stristr($dirfile, ".ogg") && is_readable($dirfile)) {
                $fp = fopen($dirfile, "rb");
                $header = fread($fp, 512);
     
    $startComments = 141;
    $espace = 4;
    $nbComments = ord(substr($header,$startComments, $espace));
    $startComments = $startComments+$espace;
    for ($var = 1; $var <= $nbComments; $var++) {
       $startComments = $startComments+$CommentPlace;
       $CommentPlace = ord(substr($header, $startComments, $espace));
       $startComments = $startComments+$espace;
       $Comment = substr($header, $startComments, $CommentPlace);
       echo ereg_replace(".*=", ' - ', $Comment);
    }
    unset($CommentPlace);
    echo "<br>\n";
     
                fclose($fp);
             }
          }
       }
       closedir($dir);
    }
    ?>
    retourne :
    commentaire#1 - commentaire#2 - commentaire#3 - commentaire#n ...
    quel que soit le nombre de commentaires.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. lecture et écriture des tags id3 d'un fichier mp3
    Par Rachel dans le forum Contribuez
    Réponses: 2
    Dernier message: 12/04/2012, 09h48
  2. Lire des tags ID3 sur un fichier distant
    Par thms92 dans le forum Programmation multimédia/Jeux
    Réponses: 4
    Dernier message: 15/03/2009, 16h01
  3. Récupération des données d'un fichier .txt
    Par vincou dans le forum VB.NET
    Réponses: 3
    Dernier message: 24/07/2007, 10h55
  4. récupération des dates d'un fichier
    Par Bleuarff dans le forum Langage
    Réponses: 6
    Dernier message: 22/11/2005, 01h50
  5. Récupération des éléments d'un fichier xml en flux retour
    Par opeo dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 07/11/2005, 10h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo