Bonsoir
Il y a ... très longtemps... j'utilisais un programme PHP (mp3_id3_utils.php) qui permettait de lire les métadonnées d'un fichier mp3.
Il semble que ce programme ne fonctionne plus dans la forme où je l'avais chargée. Il faut dire que la version de PHP de ce programme est très ancienne, php3, je crois, peut-être même antérieur.
Connaissez vous un outil similaire un peu plus récent?
Merci de votre aide.
Salut,
sous Linux, il y a les paquets :
easytag
Ex Falso
Quod Libet
Les deux derniers fonctionnent aussi sur Windows et Mac. Quod Libet est très efficace, tu peux y ajouter tout un tas de greffons pour tes besoins personnels.
Après, ce sont des librairies et on travaille généralement en console texte :
python-mutagen
Merci de ta réponse
Ce que je cherche c’est un programme PHP que je puisse appeler depuis d’autre programmes.
Les métadonnées permettent d’ajouter des informations à un fichier, encore faut-il pouvoir les lires, sinon il faut mettre ces informations dans un "metafichier" ce qui complique fortement la gestion des données
Merci de ta réponse
C’est bien un problème de version de PHP. Je suis arrivé à le faire remarcher. Maintenant, les versions de mp3 ont dû se succéder depuis le temps je suis toujours intéressé à une version plus récente
Le code n’est pas très complexe, il lit le ficher mp3 en binaire et recherche les champs des métadonnées. Yaka connaitre la structure du fichier, mais les Yaka...
Modifié par PapyJP (03 Feb 2020 - 13:56)
Merci Jencal, je vais essayer.
Ma version datait de 2001, celle là est toute fraiche.
Pas de problème avec php5, ce site est en php5, pas eu le temps de le migrer en php7
Euh...
Le manuel dit:
Quick Start
===
**Q:** How can I check that getID3() works on my server/files?
**A:** Unzip getID3() to a directory, then access `/demos/demo.browse.php`

Pas vu de dossier /demos dans la livraison...
Modifié par PapyJP (03 Feb 2020 - 15:43)
Modérateur
Et l'eau,

* réédition ancien message
ligne de commande dans un dossier (création environnement virtuel et installation du module tinytag):

$python3 -m venv venv
$ . venv/bin/activate
$pip install tinytag==0.18.0


ouvrir un fichier (nom : app.py) dans le dossier contenant l'environnement virtuel et taper ceci :

import os
import json
from tinytag import TinyTag

try:
    output = []
    source = "./musics/"
    if os.path.isdir(source):
        mp3s = os.listdir(source)
        for mp3 in mp3s:
            tags = TinyTag.get(os.path.join(source, mp3))
            row = {
                'album': tags.album,
                'albumartist': tags.albumartist,
                'artist': tags.artist,
                'audio_offset': tags.audio_offset,
                'bitrate': tags.bitrate,
                'disc': tags.disc,
                'disc_total': tags.disc_total,
                'duration': tags.duration,
                'filesize': tags.filesize,
                'genre': tags.genre,
                'samplerate': tags.samplerate,
                'title': tags.title,
                'track': tags.track,
                'track_total': tags.track_total,
                'year': tags.year,
            }

            output.append(row)
        print(json.dumps(output))
        # open('./output.json', "w").write(json.dumps(output))
    else:
        raise Exception("ce répertoire (%s) n'existe pas" % source)
except Exception as e:
    print('error =>', e)

pour voir le résultat ou si tu veux faire une sortie dans un fichier json (dans ce cas, tu décomentes la ligne open(....).write(....)):

python app.py

Dans le cas où tu souhaites récupérer à la volée tous les tags de tes mp3,
Tu ouvres un nouveau fichier qui sera en bash et tu l'enregistres sous le nom "script_schell". Tu y saisis ceci :

#!/usr/bin/env bash
source venv/bin/activate
python app.py
deactivate

* ne pas oublier de rendre ce fichier exécutable....

$chmod 777 script_schell


Pour finir en php, tu fais ceci dans un fichier:

<?php
    $command = escapeshellcmd('./script_schell');
    $output = shell_exec($command);
    header('Content-Type: application/json');
    echo json_encode(json_decode($output, true));
?>


* il est évident que cette solution fonctionne sur Unix / Unix-like ....
résultats en image :
- navigateur
- éditeur
Modifié par niuxe (05 Feb 2020 - 00:17)