Comment j’utilise Groovy pour analyser les pochettes d’album dans mon répertoire musical


  • Français


  • Dans cette série, je développe plusieurs scripts pour aider à nettoyer ma collection de musique. Dans le dernier article, j’ai utilisé le cadre que j’ai créé pour analyser le répertoire et les sous-répertoires des fichiers musicaux et j’ai effectué l’analyse avec l’amende open source Bibliothèque JAudiotagger pour analyser les balises des fichiers musicaux dans le répertoire musical et les sous-répertoires. Dans cet article, je vais faire un travail plus simple :

    1. Utilisez le cadre que nous avons créé dans la partie 1
    2. Assurez-vous que chaque répertoire d’album a un cover.jpg classer
    3. Notez tous les autres fichiers du répertoire de l’album qui ne sont pas FLAC, MP3 ou OGG.

    Musique et métadonnées

    Si vous n’avez pas lu les parties 1 et 2 de cette série, faites-le maintenant pour comprendre la structure prévue de mon répertoire musical, le cadre créé dans cet article et comment récupérer les fichiers FLAC, MP3 et OGG.

    Encore une chose. La plupart des applications d’extraction audio et de nombreux téléchargements :

    • Ne venez pas avec un utile cover.jpg dossier
    • Même s’ils viennent avec un utile cover.jpg fichier, ils ne lient pas les fichiers multimédias à celui-ci
    • Emportez toutes sortes d’autres fichiers d’utilité douteuse (par exemple, playlist.m3uqui est créé par un utilitaire de marquage que j’ai utilisé dans le passé)

    Comme je l’ai mentionné dans mon dernier article, le but ultime de cette série est de créer quelques scripts utiles pour aider à identifier les balises manquantes ou inhabituelles et faciliter la création d’un plan de travail pour résoudre les problèmes de balisage. Ce script particulier recherche les éléments manquants cover.jpg fichiers et fichiers non multimédias indésirables, et crée un fichier CSV que vous pouvez charger dans LibreOffice ou OnlyOffice pour rechercher des problèmes. Il ne regardera pas les fichiers multimédias eux-mêmes, ni les fichiers superflus laissés dans les sous-répertoires de l’artiste (ce sont des exercices laissés au lecteur).

    L’analyse des fichiers de cadre et d’album

    Commencez par le code. Comme auparavant, j’ai incorporé des commentaires dans le script qui reflètent les “notes de commentaires” (relativement abrégées) que je me laisse généralement :

         1  // Define the music library directory
           
         2  def musicLibraryDirName = '/var/lib/mpd/music'
           
         3  // Print the CSV file header
           
         4  println "artist|album|cover|unwanted files"
           
         5  // Iterate over each directory in the music libary directory
         6  // These are assumed to be artist directories

         7  new File(musicLibraryDirName).eachDir { artistDir ->
           
         8      // Iterate over each directory in the artist directory
         9      // These are assumed to be album directories
           
        10      artistDir.eachDir { albumDir ->
           
        11          // Iterate over each file in the album directory
        12          // These are assumed to be content or related
        13          // (cover.jpg, PDFs with liner notes etc)
           
        14          // Initialize the counter for cover.jpg
        15          // and the list for unwanted file names
           
        16          def coverCounter = 0
        17          def unwantedFileNames = []
           
        18          albumDir.eachFile { contentFile ->
           
        19              // Analyze the file
           
        20              if (contentFile.name ==~ /.*\.(flac|mp3|ogg)/) {
        21                  // nothing to do here
        22              } else if (contentFile.name == 'cover.jpg') {
        23                  coverCounter++
        24              } else {
        25                  unwantedFileNames << contentFile.name
        26              }
           
        27          }
        28          println "${artistDir.name}|${albumDir.name}|$coverCounter|${unwantedFileNames.join(',')}"
        29      }
        30  }

    Les lignes 1-2 définissent le nom du répertoire de fichiers musicaux.

    Les lignes 3-4 impriment l’en-tête du fichier CSV.

    Les lignes 5 à 13 proviennent du cadre créé dans la partie 1 de cet article et descendent dans les sous-sous-répertoires de l’album.

    Les lignes 14 à 17 établissent le cover.jpg counter (ne devrait jamais être que zéro ou un) et la liste vide dans laquelle nous accumulerons les noms de fichiers indésirables.

    Les lignes 18 à 27 analysent tous les fichiers trouvés dans les répertoires de l’album :

    Les lignes 20-21 utilisent l’opérateur de correspondance Groovy ==~ et une expression régulière “slashy” pour vérifier les modèles de nom de fichier. Rien n’est fait avec ces fichiers (voir la partie 2 pour cette information).

    Les lignes 22-23 comptent les instances de cover.jpg (il ne devrait jamais être que zéro ou un).

    Les lignes 24 à 26 enregistrent les noms de tous les non-médias, non-cover.jpg fichiers pour montrer le cruft potentiel ou qui-sait-quoi dans les répertoires de l’album.

    La ligne 28 imprime le nom de l’artiste, le nom de l’album, cover.jpg nombre et liste des noms de fichiers indésirables.

    C’est ça!

    Exécuter le code

    En règle générale, je lance ceci comme suit:

    $ groovy TagAnalyzer3.groovy > tagAnalysis3.csv

    Ensuite, je charge le CSV résultant dans une feuille de calcul. Par exemple, avec LibreOffice Calc , allez dans le Feuille menu et sélectionnez Insérer une feuille à partir du fichier. Lorsque vous y êtes invité, définissez le caractère délimiteur sur |. Dans mon cas, les résultats ressemblent à ceci:

    (Chris Hermansen, CC BY-SA 4.0)

    J’ai trié cela dans l’ordre croissant de la colonne “couverture” pour afficher les sous-sous-sous-répertoires de l’album qui n’ont pas cover.jpg des dossiers. A noter que certains ont cover.png Au lieu. Mon expérience avec les lecteurs de musique est qu’au moins certains ne fonctionnent pas bien avec les images de couverture au format PNG.

    Notez également que certains d’entre eux ont des notes de doublure PDF, des fichiers d’image supplémentaires, des listes de lecture M3U, etc. Dans mon prochain article, je vais vous montrer comment gérer une partie du cruft.

    Source

    Houssen Moshinaly

    Pour contacter personnellement le taulier :

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

    Copy code