Inhoudsopgave:
- Stap 1: Aan de slag
- Stap 2: Het basisscriptidee
- Stap 3: De XML-bibliotheek: Goto Guy van iTunes
- Stap 4: Je vriend de hasj (zelfs als je niet in Amsterdam bent)
- Stap 5: Een (zeer) korte les over reguliere expressies
- Stap 6: Reguliere expressies toepassen op het ITunes-script
- Stap 7: Die 1-stertracks lokaliseren en verwijderen
- Stap 8: URI-ontsnappingen en hoe u ze kunt omzeilen
- Stap 9: Scriptcompatibiliteit toevoegen aan Windows
- Stap 10: Het voltooide script
Video: Verwijder die ongewenste iTunes-nummers van uw computer: 10 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:19
Hallo dames en heren, dit is mijn eerste programmeerbare codering, dus laat alsjeblieft je wapens thuis als je commentaar geeft (messen zijn echter acceptabel). Met de komst van mp3-spelers is het voor mensen mogelijk gemaakt om ongekende hoeveelheden te dragen van muziek rond met hen in hun zakken. Het is niet ongewoon om te horen dat mensen verzamelingen hebben van 5, 10, zelfs 15 duizend nummers (en sommige mensen, zelfs meer). Van de mp3-spelers is er geen populairder dan de iPod van Apple en de software die erop draait, iTunes. Met zulke grote muziekbibliotheken kan het echter een beetje vervelend worden om de nummers die gewoon niet goed of aantrekkelijk klinken te verwijderen. jij niet meer. Het kan eeuwen duren om track voor track door je muziekcollectie in iTunes te gaan en de nummers te verwijderen die je niet leuk vindt. Dat is waar deze instructable van pas komt. In deze instructable laat ik je een manier zien om automatisch van nummers af te komen die gewoon verschrikkelijk zijn, met wat hulp van mijn goede vriend, Perl. Een goede basiskennis van Perl is uiterst nuttig bij het herhalen van dit instructable, hoewel niet vereist (je zou zeker gewoon het afgewerkte codeproduct kunnen nemen en kopiëren/plakken het en het zal prima werken). Voor diegenen die geïnteresseerd zijn in Perl, raad ik het boek "Perl leren" van O'Reilly ten zeerste aan, het is een goed boek en een van de best geschreven boeken over Perl die ik heb mogen lezen. BELANGRIJK: hoewel de hier gepresenteerde methoden zullen werken als het correct wordt gedaan, kan en wil ik gewoon geen enkele verantwoordelijkheid aanvaarden als je iets doms doet en je dierbare nummers verwijdert. Overweeg ten zeerste een back-up van uw muziekbestanden te maken voordat u probeert een script zoals het volgende te schrijven of uit te voeren. Wees voorzichtig, zodat we geen gekwetste gevoelens hebben als je dat niet doet, bedankt. Lees de waarschuwing? (Ja, zelfs jij, persoon die de waarschuwing niet heeft gelezen) Geweldig! Laten we beginnen:-) Update: het lijkt erop dat sommige perl-scripters hard aan het werk zijn geweest met het schrijven van iTunes-scripts. Voor een verscheidenheid aan iTunes-gerelateerde scripts, bekijk Teridon's Scripts.
Stap 1: Aan de slag
Zoals met alle dingen, is er een kleine voorbereiding die moet worden gedaan voordat we dit script kunnen uitvoeren. Dus dingen die je nodig hebt om automatisch nummers uit iTunes te verwijderen:1) Een computer (duh)2) iTunes (double duh)3) Perl (moeilijk om een Perl-script uit te voeren zonder Perl, zou je niet zeggen?)4) Je favoriete editor (ik ben zelf een voorstander van vi en vim, maar elke teksteditor zou het moeten doen)5) Een iPod (niet verplicht, maar leuk om te hebben om redenen die snel genoeg duidelijk zullen worden) Perl verkrijgen: volg de instructies hier, zouden eenvoudig genoeg moeten zijn: https://www.perl.com/download.cspAls je Perl eenmaal hebt gedownload, geïnstalleerd en klaar voor gebruik, willen we wat achtergrondinformatie over wat we aan het doen zijn. Opgemerkt moet worden dat het script oorspronkelijk is ontwikkeld voor Mac OS X, hoewel dezelfde methoden zouden moeten werken op niet-Unix-gebaseerde besturingssystemen zoals Windows. Tijd voor het saaie, eh, "educatieve" deel van de Instructable.
Stap 2: Het basisscriptidee
iTunes bevat een 5-sterrenbeoordelingssysteem waarmee gebruikers nummers kunnen beoordelen. Nummers met een beoordeling van 5 sterren worden beschouwd als de beste nummers, terwijl nummers met een beoordeling van 1 ster als enkele van de slechtste nummers worden beschouwd. Voor onze doeleinden gaan we ervan uit dat elk nummer dat geen beoordeling heeft (ook wel 0 sterren genoemd) er een is die de gebruiker nog niet heeft kunnen beoordelen. vind het waarschijnlijk al erg genoeg dat het de kostbare ruimte op de harde schijf die het nummer in beslag neemt niet verdient. Daarom zal het Perl-script dat ik u in deze Instructable zal presenteren, door de iTunes-bibliotheek bladeren en elk nummer verwijderen dat een beoordeling van 1 ster heeft gekregen. Als een toegevoegde bonus kunnen de nummers worden beoordeeld terwijl de gebruiker onderweg is met behulp van een iPod. Op deze manier kunt u nummers selecteren om onderweg te verwijderen door ze simpelweg te beoordelen, en ze worden automatisch verwijderd wanneer u uw iPod later met uw computer synchroniseert (als u uw iPod automatisch met uw computer synchroniseert). Nu we weten wat waarmee we bezig zijn, laten we eens kijken hoe we informatie over nummers uit iTunes gaan halen voor het Perl-script.
Stap 3: De XML-bibliotheek: Goto Guy van iTunes
Om een nummer van de computer te verwijderen op basis van de classificatie, hebben we twee gegevens nodig: de classificatie van het nummer en de locatie van het nummer. Gelukkig voor ons is er een handig bestand waaruit we alle informatie kunnen halen die we ooit over iTunes wilden hebben: het iTunes Music Library XML-bestand. Het XML-bestand heet "iTunes Music Library.xml" en zou zich in uw muziekmap op uw harde schijf moeten bevinden.
Over het XML-bestand: Het iTunes XML-bestand is een soort database die door iTunes wordt onderhouden en altijd up-to-date wordt gehouden. Wanneer een wijziging wordt aangebracht in iTunes, wordt het overeenkomstige gedeelte van het iTunes XML-bestand gewijzigd om deze wijziging te noteren. Hieronder vindt u een voorbeelditem van mijn iTunes XML-bestand: 1218Track ID1218NameTake On MeArtiestA-HaGenre80'sKindMPEG-audiobestandSize3682382Totale tijd230138Datum gewijzigd2007-09-24T02:11:30ZDatum toegevoegd2008-05-28T05:00:24ZBit Rate128Sample Rate-4432100TCPlay Count18Play Date 25T01:26:58ZRating40Album Rating40Album Rating ComputedPersistent ID9AC5DB9713240B44Track TypeFileLocationfile://localhost/Volumes/HD1/iTunes%20Music/A-Ha/Unknown%20Album/Take%20On%20Me.mp3File Folder Count4Zoals kan worden gezien van Count1 hierboven, kan worden gezien in Count1 het XML-bestand bestaat uit waarden omgeven door tags in HTML-stijl. Voor de doeleinden van het script zijn we geïnteresseerd in de informatie over de track-ID, naam, artiest, beoordeling en locatie. Als je naar het XML-bestand kijkt, kun je van bovenaf zien dat dit nummer een "rating" van 40 heeft. iTunes kent elk nummer een geheel getal toe, variërend van 0 tot 100, waarbij elke 20 punten een extra ster is voor de beoordeling. Een beoordeling van 20 komt dus overeen met een beoordeling van 1 ster, een beoordeling van 40 is een beoordeling van 2 sterren, enzovoort, waarbij 100 een beoordeling van 5 sterren is. Dus nu we weten over het XML-bestand, laten we beginnen met scripten
Stap 4: Je vriend de hasj (zelfs als je niet in Amsterdam bent)
Voordat we bestanden kunnen verwijderen, hebben we een werkende database nodig die alle informatie over het nummer aan elkaar relateert. Hoewel meer geavanceerde datastructuren, zoals een array van hashes of hash van hashes, kunnen worden gebruikt, is dit script eenvoudig genoeg om het gebruik van een eenvoudige lijst met hashes te verdienen. Voor niet-ingewijden is een hash niets meer dan een array die wordt geïndexeerd door strings, of een warboel van sleutel/waarde-paren. Je kunt een hasj zien als een groot vat met spullen (de waarden) erin, en aan alles in het metaforische vat is een label (de sleutels) bevestigd. Je kunt elk item in het vat eruit trekken door simpelweg het label te vinden. Voor meer informatie over hashes kan de volgende link nuttig zijn: https://www.tutorialspoint.com/perl/perl_hashes.htm We kunnen de informatie gebruiken dat elk nummer in het iTunes XML-bestand een unieke track-ID heeft gekregen om bij te houden de liedjes. Hierdoor is de trackID een ideale sleutel voor de hashes. Daarom kunnen we 4 hashes instellen voor de titel van het nummer, de artiest, de beoordeling en de locatie. Zodra deze zijn vastgesteld, kunnen we door het bestand bladeren en onze hash-database vullen met behulp van enkele eenvoudige reguliere expressies, die hierna worden getoond.
Stap 5: Een (zeer) korte les over reguliere expressies
Om onze hash-items uit het XML-bestand te halen en ook wat tijd te besparen bij het zoeken, willen we de hulp inroepen van een van Perl's krachtigere functies: de reguliere expressie. Ik zal een heel korte les geven over reguliere expressies, maar voor degenen onder jullie die meer gedetailleerde uitleg willen, zijn er veel goede tutorials voor reguliere expressies online. Kijk op https://perldoc.perl.org/perlretut.html voor een goede tutorial over reguliere expressies. Kortom, reguliere expressies bieden ons een set hulpmiddelen om door strings te gaan, de ene string te vervangen door een andere string, of delen van een string voor later gebruik. Reguliere expressies bieden 2 functies, de overeenkomende (m//) en vervangende (s//) operators, die voor dit project zullen worden gebruikt. Om een van deze functies in een toewijzingscontext te gebruiken, gebruiken we Perl's bindingsoperator (=~), die wordt gebruikt om een patroon te binden aan een stringvariabele naar keuze. Voorbeelden:
$commentaar =~ /Purduecer/; #retourneert true als $comment string de zin "Purduecer"s/[a-z]/[A-Z]/ bevat; #neem alle kleine letters in string en gebruik ze als hoofdletter in $_ stringEen tweede handige eigenschap van reguliere expressies is die van geheugenvariabelen. In reguliere expressies kunt u bepaalde items tussen haakjes plaatsen en vervolgens de speciale geheugenvariabelen $1, $2, enz. gebruiken om later toegang te krijgen tot de delen van de strings die met deze delen overeenkwamen. Voorbeelden
/(Instructables) Robot/; #Overeenkomen met een regel met de zin "Instructables Robot"$website = $1; #Sla het resultaat van een succesvolle patroonovereenkomst op in de eerste set haakjes #(in dit geval bevat variabele $1 "Instructables")Ten slotte zijn er in reguliere expressies bepaalde tekens die een speciaal doel dienen. Dit zijn backslash-escapes (die allemaal bekend moeten voorkomen bij C-programmeurs), tekenklassen en metatekens. Als we bijvoorbeeld een enkele letter willen matchen die aan weerszijden een tab heeft, kunnen we zeggen:
/\t[a-zA-Z]\t/Die vierkante haken worden in reguliere expressies gebruikt om een tekenklasse te definiëren. Stel echter dat we tekst tussen vierkante haken in de regel willen vinden. We kunnen het niet gewoon schrijven zoals het is, zoals hieronder wordt weergegeven:
/
/
Stap 6: Reguliere expressies toepassen op het ITunes-script
Nu we hopelijk een idee hebben van de basisconcepten die aan de basis liggen van reguliere expressies, is het tijd om deze toe te passen op het iTunes-script. Bij het lezen van XML-code komen bepaalde tekens, zoals de schuine streep, vrij vaak voor. Daarom zullen we profiteren van het feit dat u met de operator m// de begrenzers kunt kiezen die u in de code wilt gebruiken (we zullen vierkante haken gebruiken, hoewel andere scheidingstekens zeker zullen werken). het volledige iTunes XML-bestand. Delen van het bestand met informatie zoals afspeellijsten, enz. zijn niet nodig. De eerste regel van de sectie afspeellijsten, die na de informatie over het nummer komt, ziet er als volgt uit: Afspeellijsten Daarom kunnen we in een while-lus een instructie toevoegen die naar het einde van het lezen van het bestand springt als die regel wordt aangetroffen.
while() { #loop_instructions_here last if($_ =~ m[Playlists])}Om vervolgens de hash-ID's te bouwen, kunnen we een if-elsif-boom gebruiken om onze database-hashes te bouwen, met behulp van de geheugenovereenkomstvariabelen waarover we in de vorige stap hebben geleerd om waarden in de hashes op te slaan
if($_ =~ m[(d+)]) { $id = $1; } elsif($_ =~ m[Beoordeling(d+)]) { $rate_hash{$id} = $1; } elsif($_ =~ m[Naam(.+)]) { $name_hash{$id} = $1; } elsif($_ =~ m[Artiest(.+)]) { $art_hash{$id} = $1; } elsif($_ =~ m[Locatiebestand://localhost(.*)]) { $loc_hash{$id} = $1; }Nu we de basis van onze hash-database hebben opgebouwd, gaan we in op het lokaliseren en verwijderen van 1-Star-bestanden, dus verder naar de volgende stap!
Stap 7: Die 1-stertracks lokaliseren en verwijderen
Nu we onze database hebben opgezet, is het tijd om op zoek te gaan naar de 1-ster-tracks, zodat we ze kunnen verwijderen. Perl biedt een handige looping-constructie, een foreach-lus genaamd, die kan worden gebruikt om alle sleutels van onze hashes te herhalen. Opgemerkt moet worden dat niet elk nummer in uw iTunes-bibliotheek een vermelding heeft in de classificatiehash. Dit komt omdat nummers die geen classificatie hebben geen trackclassificatieregel krijgen in het iTunes XML-bestand. Daarom willen we bij het doorlopen van de hashes de volgende constructie gebruiken:
foreach $id (sorteersleutels %rate_hash) { #…voeg hier de luscode in}Daarna is het zo simpel als het gebruik van de volgende verklaring:
ontkoppel $loc_hash{$id} als $rate_hash{$id} == 20;De ontkoppelingsfunctie die in de voorbeeldcode hierboven wordt gebruikt, is Perl's manier om bestanden te verwijderen. Je komt misschien in de verleiding om een systeemaanroep te gebruiken voor de verwijderfunctie van je besturingssysteem, maar om redenen van draagbaarheid gebruikt de code die ik heb geschreven de systeemaanroep niet. We hebben nu de basisstructuur voor onze code. In de volgende stappen zullen we enkele verfijningen in de code aanbrengen, zodat u een volledig functioneel script kunt hebben om van die vervelende 1-sterren af te komen.
Stap 8: URI-ontsnappingen en hoe u ze kunt omzeilen
Als u het script probeert uit te voeren zoals het is, zult u talloze fouten in uw besturingssysteem tegenkomen, en als u kijkt naar de bestandspaden die u probeert te verwijderen, kunt u ongebruikelijke tekens in de paden aantreffen die ongewenst zijn. De kans is vrij groot dat deze paden URI-escape-tekens bevatten. Wat zijn URI-escapes? In HTML en XML zijn URI-escapetekens (ook bekend als URI-escapes) speciale metatekens die worden gebruikt om te zoeken naar letterlijke instanties van dat teken. U zult bijvoorbeeld nooit een eenvoudige witruimte zien in een XML-tekenreeks. U ziet echter de XML-weergave van een eenvoudige witruimte, %20. (Je hebt deze vast wel eens in de URL-balk in je browser gezien en je vroeg je af wat ze waren. Nou, nu weet je het) Een URI-escape bestaat uit een %-teken gevolgd door een 2-cijferige hexadecimale code die de ASCII-waarde van het teken vertegenwoordigt. punt, je zou een hele reeks vervang-instructies op de locatie-hash kunnen schrijven om elk mogelijk metateken dat je tegenkomt te vervangen (dwz $loc_hash{$id} =~ s/%20/ /; enzovoort). Gelukkig biedt Perl een betere manier om voor deze dingen te zorgen. Perl wordt geleverd met een module genaamd URI::Escape, die een ingebouwde functie heeft, uri_unescape, die het werk zal doen om de URI-escapes voor ons te elimineren. Om de module te gebruiken, voegt u eenvoudig de volgende regel toe bovenaan uw code:
gebruik URI::Escape;Nadat we de array $loc_hash{$id} in de XML-bestandslus hebben toegewezen, kunnen we daarna de volgende regel toevoegen
uri_unescape($loc_hash{$id});De bovenstaande regel elimineert automatisch alle URI-escapetekens. Als een toegevoegde bonus vertaalt het ook enkele internationale karakters. Ik heb het script uitgevoerd met een paar bestandspaden met Japanse konji erin, en de functie uri_unescape vertaalde de XML-indelingen van die tekens naar hun originele tekens, zodat ontkoppelen het bestand met succes kon verwijderen. Voordat we verder gaan, moet nog een extra stap worden genomen. Om redenen die ik niet helemaal begrijp, codeert iTunes het ampersand(&)-symbool als & in zijn strings. Als iemand weet waarom dit is, laat het me weten. In de tussentijd elimineren we dit probleem door de volgende regel toe te voegen onder de regel uri_unescape:
$loc_hash{$id} =~ s//&/;Nu heeft het script bestandspaden die vrij zijn van vreemde tekens, en de ontkoppelingsfunctie kan bestanden op hun juiste locaties vinden om ze te verwijderen. Welnu, als je Mac OSX gebruikt (en vermoedelijk ook de meeste andere Unix-gebaseerde besturingssystemen). Lees verder om het script compatibel te maken met andere besturingssystemen (namelijk Windows).
Stap 9: Scriptcompatibiliteit toevoegen aan Windows
Het script, zoals tot nu toe geschreven, verwijdert effectief sporen op Unix-gebaseerde besturingssystemen. Om het op Windows te laten werken, is een kleine toevoeging nodig. In tegenstelling tot Mac en andere op Unix gebaseerde besturingssystemen, ondersteunt Windows het concept van een enkele hoofdmap niet. Daarom beginnen alle padnamen met een volume (C: of E: of een andere letter die je maar kunt bedenken) in tegenstelling tot de hoofdmap (/). Gelukkig voor ons heeft Perl een speciale variabele, $O (dat is een hoofdletter o, geen nul), die ons vertelt welk besturingssysteem we momenteel gebruiken. Dus als de waarde die in die variabele is opgeslagen "Win" bevat, willen we de slash op ons XML-locatiebestandspad verwijderen. Dit kan met de volgende regel code (toegevoegd nadat we met succes de locatie van een track uit het XML-bestand hebben geparseerd):
$loc_hash{$id} = substr($loc_hash{$id}, 1) als $^O =~ /Win/i;Nu zal het script werken, of het nu op OS X of Windows wordt uitgevoerd.
Stap 10: Het voltooide script
Bijgevoegd is mijn versie van het voltooide iTunes-script voor automatische verwijdering, voor degenen onder u die alleen het eindproduct wilden en niet de uitleg over hoe het werkt.
Om het script te gebruiken, moet je het bestand opslaan als een perl-bestand (.pl-extensie) en het vervolgens uitvoerbaar maken (chmod 751 in Unix, niet zeker wat het is voor Windows-systemen).
Aanbevolen:
Verwijder Windows 10-upgrademeldingen !!: 10 stappen
Weg met upgrademeldingen voor Windows 10 !!: Ben je het zat om steeds te worden gevraagd om te upgraden naar Windows 10? Maak je geen zorgen, je kunt deze vervelende meldingen voorgoed kwijtraken, ik zal je laten zien hoe Abonneer je op mijn kanaal Bedankt
Crack iTunes Protected Music (verwijder DRM-beveiliging): 5 stappen (met afbeeldingen)
Crack Itunes Protected Music (verwijder DRM-beveiliging): Muziek was in het verleden een groot deel van de samenleving, maar met technologie is het groter dan ooit! De snelste en gemakkelijkste manier om tegenwoordig aan muziek te komen is via internet ("Internet is een communicatiemiddel dat over de hele wereld wordt gebruikt en waar mensen elkaar kunnen ontmoeten
Verwijder ze verwijderde bestanden, zeer eenvoudig en gebruiksvriendelijk: 7 stappen
Verwijder ze verwijderde bestanden, zeer eenvoudig en gebruiksvriendelijk.: Ooit een bestand verwijderd van uw vrije harde schijf, uw camera, mp3 of zelfs uw prullenbak geleegd en toen besefte u dat u dat bestand nog steeds wilde hebben? Dit is een eenvoudige manier om die bestanden te herstellen. Dit instrucatable toegevoegd omdat ik elke aflevering van family g heb verwijderd
Verwijder geforceerde banners van webhosting: 6 stappen
Verwijder geforceerde banners van webhosting: Hier is een veilige manier om geforceerde banners op uw persoonlijke website te verwijderen. Gegarandeerd dat je niet wordt geschorst, want de banner is er nog steeds, hij is alleen niet zichtbaar. Dit is pas mijn eerste instructable en ik heb deze code alleen op 1 site getest, dus ……. Maar
Verwijder de "Prullenbak" Pictogram: 4 stappen
Verwijder de "Prullenbak" Pictogram: Windows-gebruikers die een schone desktop wilden, werden altijd tegengehouden door één ding: de prullenbak. Dat is het enige pictogram op het bureaublad dat je niet kunt verwijderen, althans dat is wat Microsoft bedoelde. Ik heb de methode van Robertwan geprobeerd om de r