web-dev-qa-db-fra.com

Téléchargez les tags lastfm en mp3 comment ou genre

j'ai longtemps rêvé d'avoir des balises lastfm de chansons dans ma bibliothèque musicale pour pouvoir les utiliser rapidement pour générer des playlists.

Il y avait un moyen de faire cela dans amarok 1.4, mais cela n’a jamais été stable.

Il existe ensuite le plugin lastfm/lastfmplus de MusicBrainz Picard. C'est partiellement bon, mais je n'arrive pas à le faire rechercher UNIQUEMENT pour les balises lastfm et à les mettre dans les commentaires/genre/peu importe, mais il faut toujours baliser tout. Et ça ne lui convient pas particulièrement, surtout avec les petits groupes, les chansons sans album, etc.

Ma bibliothèque de musique est plutôt bien organisée. La plupart des tags sont corrects. J'ai aussi pas mal de chansons sans album. Et je ne veux pas qu'il trouve les albums de ces chansons, car cela gâcherait l'affichage de mon album. Donc, il ne doit pas toucher les champs nom de la piste, numéro de la piste, artiste et album. Tout ce que je veux, c'est que les tags lastfm les plus populaires entrent dans le tag genre ou commentaires du mp3, séparés par des points-virgules, des virgules ou autres.

Je pense que je me souviens d'un script qui a fait ce travail, mais je ne peux pas trouver.

Est-ce que quelqu'un sait s'il y a quelque chose comme ça? Serait-il difficile d'écrire cela, par exemple en tant que plugin Banshee?

Je vous remercie

6
Meng Tian

J'ai préparé rapidement un script Python. Vous pouvez le consulter ici: http://db.tt/yGa14ZA ou télécharger à partir d'ici: http://db.tt/Rnkhpod

Si j'ai bien compris, votre bibliothèque est au format MP3, j'ai donc utilisé ID3 Tagger. Le script récupère les top-tags last.fm et les place dans le tag COMMENT.
Si vous me demandez, bien que les "TopTags" soient plus significatifs que les "TrackTags", ils peuvent contenir beaucoup de déchets.

Le script utilise la bibliothèque Standard Python, à l'exception du module qui écrit les balises - eyeD3 (Sudo apt-get install python-eyed3)

Exemple d'utilisation (analyser tous les fichiers du dossier actuel):

$ for f in *.mp3 ; do python lastfm_top-tags.py "$f" ; done

Une ligne bash similaire peut également parcourir tous les sous-dossiers.

J'espère que c'est utile :)

5
zetah

Le script bash mentionné ci-dessus me convient parfaitement, mais comment l'utiliser pour parcourir automatiquement mes sous-répertoires de manière récursive? Mes sous-répertoires et mes fichiers contiennent également des espaces - comment puis-je le scripter lorsque des noms figurent dans des espaces?

J'ai cherché autour et l'ai enveloppé avec ceci:

current_directory=$(pwd)
mp3_files=$(find "${current_directory}" -type f -iname "*.mp3")
# Need to change IFS or files with filenames containing spaces will not
# be handled correctly by for loop
IFS=$'\n' 
for mp3_file in ${mp3_files}; do 
   python /home/bruce/lastfm_top-tags.py "$f" ; 
done

Mais je pense que ce n'est pas tout à fait ça.

2
BruceG

Rendez le script exécutable et exécutez-le comme ceci:

#!/bin/bash

SAVEIFS=$IFS
IFS=$(echo -en "\n\b")

for f in $(find ./ -type f -iname "*.mp3")
do
    lastfm_top-tags.py
    # or use this : python $HOME/bin/lastfm_top-tags.py "$f" ;
done

IFS=$SAVEIFS
1
Michael