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 585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 585
    Points : 19 462
    Points
    19 462
    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.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 585
    Points : 19 462
    Points
    19 462
    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
    ...
    ?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 585
    Points : 19 462
    Points
    19 462
    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 !!!

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 585
    Points : 19 462
    Points
    19 462
    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.

+ 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