Table des matières:

Supprimez ces chansons iTunes indésirables de votre ordinateur : 10 étapes
Supprimez ces chansons iTunes indésirables de votre ordinateur : 10 étapes

Vidéo: Supprimez ces chansons iTunes indésirables de votre ordinateur : 10 étapes

Vidéo: Supprimez ces chansons iTunes indésirables de votre ordinateur : 10 étapes
Vidéo: 🎵📲 Transférer une musique de son PC/Mac vers son iPhone ! 2024, Juillet
Anonim
Supprimez ces chansons iTunes indésirables de votre ordinateur
Supprimez ces chansons iTunes indésirables de votre ordinateur

Hé là mesdames et messieurs, c'est mon premier codage instructable, alors s'il vous plaît, lorsque vous commentez, laissez vos armes à la maison (les couteaux sont acceptables, cependant). Avec l'avènement des lecteurs mp3, il a été possible pour les gens de transporter des quantités sans précédent de la musique avec eux dans leurs poches. Il n'est pas rare d'entendre parler de personnes ayant des collections de 5, 10, voire 15 000 chansons (et certaines personnes, même plus). Parmi les lecteurs mp3, aucun n'est plus populaire que l'iPod d'Apple et le logiciel qui l'exécute, iTunes. Avec des bibliothèques musicales aussi volumineuses, cependant, il peut devenir un peu fastidieux de se débarrasser des chansons qui ne sonnent tout simplement pas bien ou qui ne sont pas attrayantes pour vous plus. Cela peut prendre des années pour parcourir votre collection de musique dans iTunes et vous débarrasser des chansons que vous n'aimez pas. C'est là qu'intervient cette instructable. Dans cette instructable, je vais vous montrer un moyen de vous débarrasser automatiquement des chansons qui sont tout simplement horribles, avec l'aide de mon bon ami, Perl. Une bonne connaissance de base de Perl est extrêmement utile lorsque vous essayez de répéter cette instruction, bien que non requise (vous pouvez certainement simplement prendre le produit de code fini et copier/coller et cela fonctionnera très bien). Pour ceux qui s'intéressent à Perl, je recommande fortement le livre "Learning Perl" d'O'Reilly, c'est une bonne lecture et l'un des meilleurs livres écrits sur Perl que j'ai eu la chance de lire. IMPORTANT: Bien que les méthodes présentées ici fonctionnent si cela est fait correctement, je ne peux et n'accepterai tout simplement aucune responsabilité si vous faites quelque chose de stupide et supprimez vos précieuses chansons. Veuillez envisager sérieusement de sauvegarder vos fichiers musicaux avant d'essayer d'écrire ou d'exécuter un script tel que celui-ci. Faites preuve de prudence afin que nous ne soyons pas blessés si vous ne le faites pas, merci. Lisez l'avertissement ? (Oui, même vous, personne qui n'a pas lu l'avertissement) Super ! Commençons:-) Mise à jour: Il semble que certains scripteurs perl aient travaillé dur pour rédiger des scripts iTunes. Pour une variété de scripts liés à iTunes, consultez les scripts de Teridon.

Étape 1: Mise en route

Commencer
Commencer

Comme pour tout, il y a un peu de préparation à faire avant de pouvoir exécuter ce script. Donc, des choses dont vous aurez besoin pour supprimer automatiquement des chansons d'iTunes: 1) Un ordinateur (duh) 2) iTunes (double duh) 3) Perl (difficile d'exécuter un script Perl sans Perl, n'est-ce pas ?) 4) Votre éditeur préféré (je suis moi-même un partisan de vi et vim, mais n'importe quel éditeur de texte devrait faire l'affaire)5) Un iPod (pas obligatoire, mais agréable d'avoir pour des raisons qui seront expliquées assez tôt)Obtenir Perl: suivez le instructions ici, devraient être assez simples: https://www.perl.com/download.csp Une fois que vous avez téléchargé, installé et prêt à utiliser Perl, nous voudrons des informations générales sur ce que nous faisons. Il convient de noter que le script a été développé à l'origine pour Mac OS X, bien que les mêmes méthodes devraient fonctionner sur des systèmes d'exploitation non basés sur Unix tels que Windows. Temps pour la partie ennuyeuse, euh, "éducative" de l'Instructable.

Étape 2: L'idée de script de base

iTunes inclut un système de notation 5 étoiles pour permettre aux utilisateurs de noter les chansons. Les chansons avec une note de 5 étoiles sont considérées comme les meilleures chansons, tandis que les chansons avec une note de 1 étoile sont considérées comme faisant partie des pires chansons. Pour nos besoins, nous supposerons que toute chanson qui n'a pas de note (alias 0 étoile) est une chanson que l'utilisateur n'a pas encore eu la chance de noter. Personnellement, lors de la notation de chansons, si une chanson a une note de 1 étoile, je trouver qu'il est probablement assez mauvais pour qu'il ne mérite pas le précieux espace disque dur que la chanson prend. Par conséquent, le script Perl que je vais vous présenter dans ce Instructable analysera la bibliothèque iTunes et supprimera toute piste qui a reçu une note de 1 étoile. En prime, les chansons peuvent être notées pendant que l'utilisateur est en déplacement. à l'aide d'un iPod. De cette façon, vous pouvez sélectionner des chansons à supprimer lors de vos déplacements en les notant simplement, et elles seront automatiquement supprimées lorsque vous synchroniserez votre iPod avec votre ordinateur plus tard (si vous synchronisez automatiquement votre iPod avec votre ordinateur). Maintenant que nous savons quoi nous faisons, voyons comment nous allons extraire les informations des chansons d'iTunes pour le script Perl.

Étape 3: La bibliothèque XML: Goto Guy d'ITunes

La bibliothèque XML: Goto Guy d'ITunes
La bibliothèque XML: Goto Guy d'ITunes

Afin de supprimer une chanson de l'ordinateur en fonction de sa note, nous avons besoin de 2 informations: la note de la chanson et l'emplacement de la chanson. Heureusement pour nous, il existe un fichier pratique à partir duquel nous pouvons obtenir toutes les informations que nous avons toujours voulues sur iTunes: le fichier XML de la bibliothèque musicale iTunes. Le fichier XML s'appelle "iTunes Music Library.xml" et doit être situé dans votre répertoire Musique sur votre disque dur principal.

À propos du fichier XML: Le fichier xml d'iTunes est une sorte de base de données gérée par iTunes et toujours à jour. Lorsqu'une modification est effectuée dans iTunes, la partie correspondante du fichier XML iTunes est modifiée pour noter ce changement. Un exemple d'entrée de mon fichier iTunes XML est donné ci-dessous: 1218Track ID1218NameTake On MeArtistA-HaGenre80'sKindMPEG audio fileSize3682382Total Time230138Date Modified2007-09-24T02:11:30ZDate Added2008-05-28T05:00:24ZBit Rate128Sample Rate4410017Play Count2Play Date329768Play Date32 25T01:26:58ZRating40Album Rating40Album Rating ComputedPersistent ID9AC5DB9713240B44Track TypeFileLocationfile://localhost/Volumes/HD1/iTunes%20Music/A-Ha/Unknown%20Album/Take%20On%20Me.mp3File Folder Count4Library Folder Count1As peut être vu à partir de l'entrée ci-dessus le fichier XML se compose de valeurs entourées de balises de style HTML. Pour les besoins du script, nous serons intéressés par les bits d'information Track ID, Name, Artist, Rating et Location. Si vous regardez le fichier XML, vous remarquerez peut-être d'en haut que cette chanson a une "note" de 40. iTunes attribue à chaque chanson un nombre entier, allant de 0 à 100, tous les 20 points étant une étoile supplémentaire pour la note. Ainsi, une note de 20 correspond à une note de 1 étoile, une note de 40 est une note de 2 étoiles, et ainsi de suite, 100 étant une note de 5 étoiles. Alors maintenant que nous connaissons le fichier XML, commençons à écrire des scripts

Étape 4: Votre ami le hasch (même si vous n'êtes pas à Amsterdam)

Votre ami le hasch (même si vous n'êtes pas à Amsterdam)
Votre ami le hasch (même si vous n'êtes pas à Amsterdam)

Avant de pouvoir éliminer les fichiers, nous avons besoin d'une base de données fonctionnelle qui relie toutes les informations de la chanson. Bien que des structures de données plus sophistiquées, telles qu'un tableau de hachages ou un hachage de hachages, puissent être utilisées, ce script est suffisamment simple pour mériter l'utilisation d'une simple liste de hachages. Pour les non-initiés, un hachage n'est rien de plus qu'un tableau qui est indexé par des chaînes, ou une masse confuse de paires clé/valeur. On peut considérer un hachage comme un grand tonneau avec des éléments (les valeurs) dedans, et tout dans le tonneau métaphorique a une étiquette (les clés) attachée. Vous pouvez retirer n'importe quel élément du baril en trouvant simplement son étiquette. Pour plus d'informations sur les hachages, le lien suivant peut être utile: https://www.tutorialspoint.com/perl/perl_hashes.htm les chansons. Pour cette raison, le trackID est une clé idéale pour les hachages. Par conséquent, nous pouvons configurer 4 hachages pour le titre, l'artiste, la note et l'emplacement de la chanson. Une fois ceux-ci établis, nous pouvons parcourir le fichier et remplir notre base de données de hachage à l'aide de quelques expressions régulières simples, qui seront affichées ensuite.

Étape 5: Une (très) brève leçon sur les expressions régulières

Afin de récupérer nos entrées de hachage dans le fichier XML, et aussi de gagner un peu de temps dans la recherche, nous allons faire appel à l'une des fonctionnalités les plus puissantes de Perl: l'expression régulière. Je vais faire une très brève leçon sur les expressions régulières, mais pour ceux d'entre vous qui veulent des explications plus détaillées, il y a beaucoup de bons tutoriels d'expressions régulières en ligne. Consultez https://perldoc.perl.org/perlretut.html pour un bon didacticiel sur les expressions régulières. En bref, les expressions régulières nous fournissent un ensemble d'outils pour parcourir les chaînes, remplacer une chaîne par une autre ou enregistrer des parties de une chaîne pour une utilisation ultérieure. Les expressions régulières fournissent 2 fonctions, les opérateurs de correspondance (m//) et de remplacement (s//), qui vont être utilisés pour ce projet. Pour utiliser l'une ou l'autre de ces fonctions dans un contexte d'affectation, nous utiliserons l'opérateur de liaison de Perl (=~), qui est utilisé pour lier un motif à une variable de chaîne de choix. Exemples:

$comment =~ /Purduecer/; #renvoie vrai si la chaîne $comment contient la phrase "Purduecer"s/[a-z]/[A-Z]/; #prendre toutes les lettres minuscules dans la chaîne et les mettre en majuscule dans la chaîne $_Une deuxième caractéristique utile des expressions régulières est celle des variables mémoire. Dans les expressions régulières, vous pouvez placer certains éléments entre parenthèses, puis utiliser les variables de mémoire de correspondance de modèle spéciales $1, $2, etc. pour accéder ultérieurement aux parties des chaînes qui correspondent à ces parties. Exemples

/(Instructables) Robot/; #Match n'importe quelle ligne avec l'expression "Instructables Robot"$website = $1; #Enregistrer le résultat de la correspondance de modèle réussie contenue dans le premier ensemble de parenthèses #(dans ce cas, la variable $1 contient "Instructables")Enfin, dans les expressions régulières, certains caractères ont une fonction particulière. Ce sont des échappements antislash (qui devraient tous être familiers aux programmeurs C), des classes de caractères et des métacaractères. Par exemple, pour faire correspondre n'importe quelle lettre qui a un onglet de chaque côté, nous pourrions dire

/\t[a-zA-Z]\t/Ces crochets sont utilisés dans les expressions régulières pour définir une classe de caractères. Supposons, cependant, que nous voulions trouver du texte entre crochets dans la ligne. Nous ne pouvions pas simplement l'écrire tel quel, comme indiqué ci-dessous

/

/

Étape 6: Application d'expressions régulières au script ITunes

Application d'expressions régulières au script ITunes
Application d'expressions régulières au script ITunes

Maintenant que nous espérons avoir une idée des concepts de base sous-jacents aux expressions régulières, il est temps de les appliquer au script iTunes. Lors de la lecture du code XML, certains caractères, tels que la barre oblique, sont assez fréquents. Par conséquent, nous allons profiter du fait que l'opérateur m// vous permet de choisir les délimiteurs que vous voulez dans le code (nous utiliserons des crochets, bien que d'autres délimiteurs fonctionneront certainement) Tout d'abord, nous n'avons besoin de lire qu'une partie de le fichier XML iTunes complet. Les parties du fichier contenant des informations telles que des listes de lecture, etc. ne sont pas nécessaires. La première ligne de la section des listes de lecture, qui vient après les informations sur la chanson, ressemble à ce qui suit: Listes de lecture Par conséquent, dans une boucle while, nous pouvons ajouter une instruction qui saute à la fin de la lecture du fichier si cette ligne est rencontrée.

while() { #loop_instructions_here last if($_ =~ m[Playlists])}Ensuite, pour créer les identifiants de hachage, nous pouvons utiliser un arbre if-elsif pour créer nos hachages de base de données, en utilisant les variables de correspondance de mémoire que nous avons apprises à l'étape précédente pour enregistrer les valeurs dans les hachages

if($_ =~ m[(d+)]) { $id = $1; } elsif($_ =~ m[Rating(d+)]) { $rate_hash{$id} = $1; } elsif($_ =~ m[Nom(.+)]) { $name_hash{$id} = $1; } elsif($_ =~ m[Artiste(.+)]) { $art_hash{$id} = $1; } elsif($_ =~ m[Locationfile://localhost(.*)]) { $loc_hash{$id} = $1; }Maintenant que nous avons construit la base de notre base de données de hachage, nous allons couvrir la localisation et la suppression des fichiers 1-Star, donc passez à l'étape suivante !

Étape 7: Localisation et suppression de ces pistes 1 étoile

Localisation et suppression de ces pistes 1 étoile
Localisation et suppression de ces pistes 1 étoile

Maintenant que notre base de données a été configurée, il est temps de rechercher les pistes 1 étoile afin de pouvoir les supprimer. Perl fournit une construction de boucle utile appelée boucle foreach qui peut être utilisée pour parcourir toutes les clés de nos hachages. Il convient de noter que toutes les pistes de votre bibliothèque iTunes n'auront pas une entrée dans le hachage des notes. C'est parce que les chansons qui n'ont pas de note ne reçoivent pas de ligne de note de piste dans le fichier XML iTunes. Par conséquent, en parcourant les hachages, nous voudrons utiliser la construction suivante:

foreach $id (clés de tri %rate_hash) { #…insérez le code en boucle ici}Après cela, c'est aussi simple que d'utiliser la déclaration suivante

dissocier $loc_hash{$id} si $rate_hash{$id} == 20;La fonction de dissociation utilisée dans l'exemple de code ci-dessus est la manière de Perl de supprimer des fichiers. Vous pouvez être tenté d'utiliser un appel système à la fonction de suppression de votre système d'exploitation, mais pour des raisons de portabilité, le code que j'ai écrit n'utilise pas l'appel système. Nous avons maintenant la structure de base de notre code. Dans les étapes suivantes, nous allons apporter quelques améliorations au code afin que vous puissiez avoir un script fonctionnel complet pour vous débarrasser de ces embêtants 1 étoiles.

Étape 8: URI Escapes et comment les contourner

Si vous essayez d'exécuter le script tel quel, vous rencontrerez de nombreuses erreurs de votre système d'exploitation, et si vous regardez les chemins de fichiers que vous essayez de supprimer, vous pouvez trouver des caractères inhabituels intégrés dans les chemins qui ne sont pas souhaitables. Il y a de fortes chances que ces chemins contiennent des caractères d'échappement d'URI. Que sont les échappements d'URI ? En HTML et XML, les caractères d'échappement d'URI (également appelés échappements d'URI) sont des métacaractères spéciaux utilisés pour rechercher des instances littérales de ce caractère. Par exemple, vous ne verrez jamais un simple espace blanc dans une chaîne de caractères XML. Vous verrez cependant la représentation XML d'un simple espace blanc, %20. (Vous les avez sûrement vus dans la barre d'URL de votre navigateur et vous vous êtes demandé ce qu'ils étaient. Eh bien, maintenant vous le savez) Un échappement d'URI se compose d'un signe % suivi d'un code hexadécimal à 2 chiffres représentant la valeur ASCII du caractère. point, vous pouvez écrire tout un tas d'instructions de remplacement sur le hachage d'emplacement pour remplacer chaque métacaractère possible que vous rencontrez (c'est-à-dire $loc_hash{$id} =~ s/%20/ /; et ainsi de suite). Heureusement, cependant, Perl fournit un meilleur moyen de s'occuper de ces choses. Perl est fourni avec un module appelé URI::Escape, qui a une fonction intégrée, uri_unescape, qui fera le travail d'éliminer les échappements d'URI pour nous. Pour utiliser le module, ajoutez simplement la ligne suivante en haut de votre code:

utiliser URI::Escape;Maintenant, après avoir affecté le tableau $loc_hash{$id} dans la boucle de fichier XML, nous pouvons ajouter la ligne suivante par la suite

uri_unescape($loc_hash{$id});La ligne ci-dessus élimine automatiquement tous les caractères d'échappement d'URI. En prime, il traduit également certains caractères internationaux. J'ai exécuté le script avec quelques chemins de fichiers contenant du konji japonais, et la fonction uri_unescape a traduit les formats XML de ces caractères en leurs caractères d'origine afin que la dissociation puisse supprimer le fichier avec succès. Avant de continuer, une étape supplémentaire doit être franchie. Pour des raisons que je ne comprends pas parfaitement, iTunes encode le symbole esperluette (&) comme & dans ses chaînes. Si quelqu'un sait pourquoi, merci de me le faire savoir. En attendant, nous éliminons ce problème en ajoutant la ligne suivante sous la ligne uri_unescape

$loc_hash{$id} =~ s/&#/&/;Désormais, le script aura des chemins de fichiers exempts de caractères étranges et la fonction de dissociation pourra trouver les fichiers à leur emplacement approprié pour les supprimer. Eh bien, ce sera le cas si vous utilisez Mac OSX (et probablement aussi la plupart des autres systèmes d'exploitation basés sur Unix). Lisez la suite pour rendre le script compatible sur d'autres systèmes d'exploitation (à savoir, Windows).

Étape 9: Ajout de la compatibilité des scripts à Windows

Ajout de la compatibilité des scripts à Windows
Ajout de la compatibilité des scripts à Windows

Le script, tel qu'il a été écrit jusqu'à présent, supprime efficacement les pistes sur les systèmes d'exploitation basés sur Unix. Pour le faire fonctionner sous Windows, un ajout mineur est nécessaire. Contrairement à Mac et aux autres systèmes d'exploitation basés sur Unix, Windows ne prend pas en charge le concept d'un seul répertoire racine. Par conséquent, tous les noms de chemin commencent par un volume (C: ou E: ou toute autre lettre à laquelle vous pouvez penser, d'ailleurs) par opposition au répertoire racine (/). Heureusement pour nous, Perl a une variable spéciale, $O (c'est un o majuscule, pas un zéro), qui nous dit quel système d'exploitation nous utilisons actuellement. Donc, si la valeur stockée dans cette variable contient "Win", nous allons vouloir supprimer la barre oblique de début sur notre chemin de fichier d'emplacement XML. Cela peut être fait avec la ligne de code suivante (ajoutée après avoir analysé avec succès l'emplacement d'une piste à partir du fichier XML):

$loc_hash{$id} = substr($loc_hash{$id}, 1) si $^O =~ /Win/i;Désormais, le script fonctionnera, qu'il soit exécuté sur OS X ou Windows.

Étape 10: Le script terminé

Le script terminé
Le script terminé

Vous trouverez ci-joint ma version du script de suppression automatique iTunes terminé, pour ceux d'entre vous qui voulaient juste le produit final et non l'explication de son fonctionnement.

Pour utiliser le script, vous devrez enregistrer le fichier en tant que fichier perl (extension.pl), puis le rendre exécutable (chmod 751 sous Unix, je ne sais pas ce que c'est pour les systèmes Windows).

Conseillé: