Spisu treści:

Usuń te niechciane utwory iTunes z komputera: 10 kroków
Usuń te niechciane utwory iTunes z komputera: 10 kroków

Wideo: Usuń te niechciane utwory iTunes z komputera: 10 kroków

Wideo: Usuń te niechciane utwory iTunes z komputera: 10 kroków
Wideo: Jak nagrać wokal? Ustawienie czułości 2024, Lipiec
Anonim
Usuń te niechciane utwory iTunes z komputera
Usuń te niechciane utwory iTunes z komputera

Cześć, panie i panowie, to moja pierwsza instrukcja kodowania, więc proszę, komentując, zostawcie broń w domu (noże są jednak dopuszczalne). Wraz z pojawieniem się odtwarzaczy mp3 stało się możliwe noszenie bezprecedensowych ilości muzyki z nimi w kieszeniach. Nierzadko słyszy się o ludziach posiadających kolekcje 5, 10, a nawet 15 tysięcy piosenek (a niektórzy nawet więcej). Spośród odtwarzaczy mp3 żaden nie jest bardziej popularny niż iPod firmy Apple i oprogramowanie, które go obsługuje, iTunes. Jednak przy tak dużych bibliotekach muzycznych może być nieco nużące pozbycie się utworów, które po prostu nie brzmią dobrze lub nie są dla nich atrakcyjne. Ty już. Może minąć wieki, aby przejść utwór po utworze przez kolekcję muzyki w iTunes i pozbyć się piosenek, których nie lubisz. Właśnie tam pojawia się ta instrukcja. W tej instrukcji pokażę ci sposób na automatyczne pozbycie się piosenek które są po prostu okropne, z pewną pomocą mojego dobrego przyjaciela, Perla. Dobra podstawowa znajomość Perla jest niezwykle pomocna przy próbie powtórzenia tej instrukcji, choć nie jest to wymagane (z pewnością możesz po prostu wziąć gotowy kod i skopiować/wkleić to i będzie działać dobrze). Osobom zainteresowanym Perlem gorąco polecam książkę "Learning Perl" od O'Reilly, jest to dobra lektura i jedna z najlepiej napisanych książek o Perlu, jakie miałem okazję przeczytać. WAŻNE: Chociaż przedstawione tutaj metody będą działać jeśli zrobisz to poprawnie, nie mogę i po prostu nie przyjmę żadnej odpowiedzialności, jeśli zrobisz coś głupiego i usuniesz swoje cenne piosenki. Rozważ utworzenie kopii zapasowej plików muzycznych przed próbą napisania lub wykonania skryptu takiego jak poniższy. Po prostu zachowuj ostrożność, abyśmy nie zranili nas, jeśli tego nie zrobisz, dzięki. Przeczytałeś ostrzeżenie? (Tak, nawet ty, osoba, która nie przeczytała ostrzeżenia) Świetnie! Zacznijmy:-)Aktualizacja: Wygląda na to, że niektórzy autorzy skryptów perla ciężko pracowali nad pisaniem skryptów iTunes. Aby zapoznać się z różnymi skryptami związanymi z iTunes, sprawdź Skrypty Teridon.

Krok 1: Pierwsze kroki

Pierwsze kroki
Pierwsze kroki

Podobnie jak w przypadku wszystkich innych rzeczy, przed uruchomieniem tego skryptu należy wykonać pewne przygotowania. A więc rzeczy, których będziesz potrzebować, aby automatycznie usunąć utwory z iTunes: 1) Komputer (tak)2) iTunes (podwójnie)3) Perl (trudno uruchomić skrypt Perla bez Perla, prawda?)4) Twój ulubiony edytor (sam jestem zwolennikiem vi i vim, ale każdy edytor tekstu powinien załatwić sprawę)5) iPod (nie obowiązkowy, ale fajnie go mieć z powodów, które wkrótce wyjaśnię) Pobieranie Perla: Postępuj zgodnie z Instrukcje tutaj powinny być dość proste: https://www.perl.com/download.cspPo pobraniu, zainstalowaniu i przygotowaniu Perla, będziemy potrzebować dodatkowych informacji na temat tego, co robimy. Należy zauważyć, że skrypt został pierwotnie opracowany dla systemu Mac OS X, chociaż te same metody powinny działać na systemach operacyjnych innych niż Unix, takich jak Windows. Czas na nudną, hm, „edukacyjną” część Instructable.

Krok 2: Podstawowy pomysł na skrypt

iTunes zawiera pięciogwiazdkowy system oceny, który umożliwia użytkownikom ocenianie utworów. Utwory z oceną 5 gwiazdek są uważane za najlepsze utwory, podczas gdy utwory z oceną 1 gwiazdki są uważane za jedne z najgorszych. Dla naszych celów założymy, że każdy utwór, który nie ma oceny (tzw. 0 gwiazdek), to taki, którego użytkownik nie miał jeszcze okazji ocenić. Osobiście, oceniając utwory, jeśli utwór ma 1 gwiazdkę, ja okazało się, że jest to prawdopodobnie wystarczająco złe, że nie zasługuje na cenne miejsce na dysku twardym, które zajmuje piosenka. Dlatego skrypt Perla, który przedstawię w tej instrukcji, przeanalizuje bibliotekę iTunes i usunie każdy utwór, któremu przypisano ocenę 1 gwiazdki. Jako dodatkowy bonus, utwory można oceniać, gdy użytkownik jest w podróży za pomocą iPoda. W ten sposób możesz wybrać utwory do usunięcia w podróży, po prostu oceniając je, a zostaną one automatycznie usunięte podczas późniejszej synchronizacji iPoda z komputerem (jeśli automatycznie zsynchronizujesz iPoda z komputerem). Teraz wiemy, co co robimy, zobaczmy, jak zamierzamy pobrać informacje o utworach z iTunes dla skryptu Perl.

Krok 3: Biblioteka XML: Goto Guy ITunes

Biblioteka XML: Goto Guy ITunes
Biblioteka XML: Goto Guy ITunes

Aby usunąć utwór z komputera na podstawie jego oceny, potrzebujemy 2 informacji: ocena utworu i lokalizacja utworu. Na szczęście dla nas istnieje przydatny plik, z którego możemy uzyskać wszystkie informacje, jakie kiedykolwiek chcieliśmy o iTunes: plik XML biblioteki muzycznej iTunes. Plik XML nazywa się „iTunes Music Library.xml” i powinien znajdować się w katalogu Muzyka na głównym dysku twardym.

O pliku XML: Plik iTunes xml to rodzaj bazy danych obsługiwanej przez iTunes i zawsze aktualizowanej. Po dokonaniu modyfikacji w programie iTunes odpowiednia część pliku XML programu iTunes jest modyfikowana w celu odnotowania tej zmiany. Przykładowy wpis z mojego pliku XML iTunes jest podany poniżej: 1218Track ID1218NameTake On MeArtistA-HaGenre80'sKindMPEG audio fileSize3682382Całkowity czas230138Data modyfikacji2007-09-24T02:11:30ZData dodania2008-05-28T05:00:24ZPrzepływność128Liczba próbkowania-0618DataodtworzeniaUTC200817682 25T01:26:58ZRating40Ocena albumu40Ocena albumu ComputedPersistent ID9AC5DB9713240B44Typ ścieżkiFileLocationfile://localhost/Volumes/HD1/iTunes%20Music/A-Ha/Unknown%20Album/Take%20On%20Me.mp3Folder pliku można wyświetlić z powyższego wpisu w bibliotece plik XML składa się z wartości otoczonych znacznikami w stylu HTML. Na potrzeby skryptu będziemy zainteresowani informacjami o identyfikatorze utworu, nazwie, wykonawcy, ocenie i lokalizacji. Jeśli patrzysz na plik XML, możesz zauważyć z góry, że ta piosenka ma „ocenę” 40. iTunes przypisuje każdej piosence liczbę całkowitą z zakresu od 0 do 100, a każde 20 punktów jest dodatkową gwiazdką w ocenie. Tak więc ocena 20 odpowiada ocenie 1 gwiazdki, ocena 40 to ocena 2 gwiazdek i tak dalej, przy czym 100 oznacza ocenę 5 gwiazdek. Skoro już wiemy o pliku XML, zacznijmy pisać skrypty

Krok 4: Twój znajomy hasz (nawet jeśli nie jesteś w Amsterdamie)

Your Friend the Hash (nawet jeśli nie jesteś w Amsterdamie)
Your Friend the Hash (nawet jeśli nie jesteś w Amsterdamie)

Zanim będziemy mogli wyeliminować pliki, potrzebujemy działającej bazy danych, która łączy ze sobą wszystkie informacje o utworach. Chociaż można użyć bardziej wyrafinowanych struktur danych, takich jak tablica hashów lub hash of hashów, ten skrypt jest na tyle prosty, że zasługuje na użycie prostej listy hashów. Dla niewtajemniczonych hash to nic innego jak tablica, która jest indeksowana przez łańcuchy lub pomieszaną masę par klucz/wartość. Można myśleć o haszu jako o dużej beczce z rzeczami (wartościami) w środku, a wszystko w metaforycznej beczce ma przyczepioną etykietę (klucze). Możesz wyciągnąć dowolny przedmiot z beczki, po prostu odnajdując jego etykietę. Aby uzyskać więcej informacji na temat skrótów, przydatny może być poniższy link: https://www.tutorialspoint.com/perl/perl_hashes.htmMożemy wykorzystać informację, że każda piosenka w pliku XML iTunes ma przypisany unikalny identyfikator ścieżki, aby śledzić piosenki. Z tego powodu trackID jest idealnym kluczem do skrótów. Dlatego możemy ustawić 4 skróty dla tytułu utworu, wykonawcy, oceny i lokalizacji. Po ich ustaleniu możemy przeskanować plik i wypełnić naszą bazę danych skrótów za pomocą prostych wyrażeń regularnych, które zostaną pokazane dalej.

Krok 5: (bardzo) krótka lekcja na temat wyrażeń regularnych

Aby pobrać nasze wpisy skrótu z pliku XML, a także zaoszczędzić trochę czasu na szukaniu, będziemy chcieli skorzystać z jednej z potężniejszych funkcji Perla: wyrażenia regularnego. Zrobię bardzo krótką lekcję na temat wyrażeń regularnych, ale dla tych z Was, którzy potrzebują bardziej szczegółowych wyjaśnień, istnieje wiele dobrych samouczków dotyczących wyrażeń regularnych online. Sprawdź https://perldoc.perl.org/perlretut.html dobry samouczek dotyczący wyrażeń regularnych. Krótko mówiąc, wyrażenia regularne zapewniają nam zestaw narzędzi do przeglądania ciągów, zastępowania jednego ciągu innym ciągiem lub zapisywania części ciąg do późniejszego wykorzystania. Wyrażenia regularne zapewniają 2 funkcje, operatory dopasowania (m//) i zastępowania (s//), które zostaną użyte w tym projekcie. Aby użyć którejkolwiek z tych funkcji w kontekście przypisania, użyjemy operatora wiązania Perla (=~), który służy do wiązania wzorca z wybraną zmienną łańcuchową. Przykłady:

$komentarz =~ /Producent/; #zwraca prawdę, jeśli łańcuch $comment zawiera frazę "Purduecer"s/[a-z]/[A-Z]/; #weź wszystkie małe litery w łańcuchu i zamień je na wielkie w $_ stringDrugą przydatną cechą wyrażeń regularnych są zmienne pamięci. W wyrażeniach regularnych można umieścić pewne elementy w nawiasach, a następnie użyć specjalnych zmiennych pamięci dopasowywania wzorców $1, $2 itd., aby uzyskać dostęp do części łańcuchów, które później pasują do tych części. Przykłady

/(Instrukcje) Robot/; #Dopasuj dowolną linię do wyrażenia "Instructables Robot"$website = $1; #Zapisz wynik pomyślnego dopasowania wzorca zawarty w pierwszym zestawie nawiasów #(w tym przypadku zmienna $1 zawiera „Instrukcje”)Wreszcie, w wyrażeniach regularnych istnieją pewne znaki, które służą specjalnemu celowi. Są to znaki ucieczki odwrotnym ukośnikiem (wszystkie powinny wyglądać znajomo programistom C), klasy znaków i metaznaki. Na przykład, aby dopasować dowolną literę, która ma zakładkę po obu stronach, możemy powiedzieć

/\t[a-zA-Z]\t/Te nawiasy kwadratowe są używane w wyrażeniach regularnych do definiowania klasy znaków. Załóżmy jednak, że chcemy znaleźć w wierszu tekst ujęty w nawiasy kwadratowe. Nie moglibyśmy po prostu napisać tego tak, jak jest, jak pokazano poniżej

/

/

Krok 6: Stosowanie wyrażeń regularnych w skrypcie iTunes

Stosowanie wyrażeń regularnych w skrypcie iTunes
Stosowanie wyrażeń regularnych w skrypcie iTunes

Teraz, gdy mamy nadzieję, że mamy już pewne pojęcie o podstawowych pojęciach leżących u podstaw wyrażeń regularnych, nadszedł czas, aby zastosować je w skrypcie iTunes. Podczas czytania kodu XML niektóre znaki, takie jak ukośnik, są dość często spotykane. W związku z tym skorzystamy z faktu, że operator m// pozwala wybrać dowolne ograniczniki w kodzie (będziemy używać nawiasów kwadratowych, chociaż inne ograniczniki na pewno się sprawdzą). pełny plik XML iTunes. Części pliku zawierające informacje, takie jak listy odtwarzania itp., nie są konieczne. Pierwszy wiersz sekcji list odtwarzania, który znajduje się po informacjach o utworze, wygląda następująco: Listy odtwarzania Dlatego w pętli while możemy dodać instrukcję, która przeskakuje na koniec odczytu pliku, jeśli napotkamy ten wiersz.

while() { #loop_instructions_tutaj last if($_ =~ m[Playlists])}Następnie, aby zbudować identyfikatory skrótów, możemy użyć drzewa if-elsif do zbudowania skrótów naszej bazy danych, używając zmiennych dopasowania pamięci, o których nauczyliśmy się w poprzednim kroku, aby zapisać wartości w hashach

if($_ =~ m[(d+)]) { $id = $1; } elsif($_ =~ m[Ocena(d+)]) { $rate_hash{$id} = $1; } elsif($_ =~ m[Nazwa(.+)]) { $name_hash{$id} = $1; } elsif($_ =~ m[Wykonawca(.+)]) { $art_hash{$id} = $1; } elsif($_ =~ m[Plik_lokalizacji://localhost(.*)]) { $loc_hash{$id} = $1; }Teraz, gdy stworzyliśmy podstawę naszej bazy danych hash, zajmiemy się lokalizowaniem i usuwaniem plików 1-gwiazdkowych, więc przejdźmy do następnego kroku!

Krok 7: Lokalizowanie i usuwanie tych jednogwiazdkowych utworów

Znajdowanie i usuwanie tych jednogwiazdkowych utworów
Znajdowanie i usuwanie tych jednogwiazdkowych utworów

Teraz, gdy mamy skonfigurowaną bazę danych, nadszedł czas, aby zapolować na 1-gwiazdkowe utwory, abyśmy mogli je usunąć. Perl zapewnia użyteczną konstrukcję pętli zwaną pętlą foreach, której można użyć do iteracji po wszystkich kluczach naszych skrótów. Należy zauważyć, że nie każda ścieżka w bibliotece iTunes będzie miała wpis w hashu ocen. Dzieje się tak, ponieważ utwory, które nie mają oceny, nie otrzymują wiersza oceny utworu w pliku XML iTunes. Dlatego podczas przechodzenia przez skróty będziemy chcieli użyć następującej konstrukcji:

foreach $id (sortuj klucze %rate_hash) { #…wstaw tutaj kod pętli}Po tym jest to tak proste, jak użycie następującego oświadczenia

odłącz $loc_hash{$id} if $rate_hash{$id} == 20;Funkcja unlink użyta w powyższym przykładowym kodzie jest sposobem Perla na usuwanie plików. Możesz ulec pokusie użycia wywołania systemowego do funkcji usuwania systemu operacyjnego, ale ze względu na przenośność kod, który napisałem, nie korzysta z wywołania systemowego. Mamy teraz podstawową strukturę naszego kodu. W kolejnych krokach wprowadzimy kilka poprawek w kodzie, dzięki czemu będziesz mieć w pełni funkcjonalny, funkcjonalny skrypt, który pozwoli pozbyć się tych nieznośnych 1-gwiazdkowych gwiazdek.

Krok 8: URI Escapes i jak je obejść

Jeśli spróbujesz uruchomić skrypt w takim stanie, w jakim jest, natkniesz się na wiele błędów systemu operacyjnego, a jeśli spojrzysz na ścieżki plików, które próbujesz usunąć, możesz znaleźć nietypowe znaki osadzone w ścieżkach, które są niepożądane. Istnieje spora szansa, że te ścieżki zawierają znaki ucieczki URI. Czym są kody ucieczki URI? W HTML i XML znaki ucieczki URI (znane również jako kody ucieczki URI) są specjalnymi metaznakami używanymi do wyszukiwania dosłownych wystąpień tego znaku. Na przykład nigdy nie zobaczysz prostego odstępu w ciągu znaków XML. Zobaczysz jednak reprezentację XML prostego odstępu, %20. (Na pewno widziałeś je na pasku adresu w przeglądarce i zastanawiałeś się, co to takiego. Cóż, teraz już wiesz) Escape URI składa się ze znaku %, po którym następuje dwucyfrowy kod szesnastkowy reprezentujący wartość ASCII znaku. punktu, możesz napisać całą masę instrukcji replace w hashu lokalizacji, aby zastąpić każdy możliwy metaznak, który napotkasz (np. $loc_hash{$id} =~ s/%20/ /; i tak dalej). Na szczęście Perl zapewnia lepszy sposób na załatwienie tych spraw. Perl jest dostarczany w pakiecie z modułem o nazwie URI::Escape, który ma wbudowaną funkcję uri_unescape, która zajmie się eliminacją kodów ucieczki URI za nas. Aby skorzystać z modułu, po prostu dodaj następujący wiersz na górze kodu:

użyj URI::Escape;Teraz, po przypisaniu tablicy $loc_hash{$id} w pętli pliku XML, możemy później dodać następujący wiersz

uri_unescape($loc_hash{$id});Powyższy wiersz automatycznie eliminuje wszelkie znaki ucieczki URI. Jako dodatkowy bonus tłumaczy również niektóre znaki międzynarodowe. Uruchomiłem skrypt z kilkoma ścieżkami plików, które zawierały japońskie konji, a funkcja uri_unescape przetłumaczyła formaty XML tych znaków na ich oryginalne znaki, aby odłączenie mogło pomyślnie usunąć plik. Zanim przejdziemy dalej, należy wykonać jeden dodatkowy krok. Z powodów, których w pełni nie rozumiem, iTunes koduje symbol ampersand(&) jako & w swoich ciągach. Jeśli ktoś wie, dlaczego tak jest, daj mi znać. W międzyczasie eliminujemy ten problem, dodając następujący wiersz pod wierszem uri_unescape

$loc_hash{$id} =~ s/&#/&/;Teraz skrypt będzie miał ścieżki plików wolne od dziwnych znaków, a funkcja unlink będzie mogła znaleźć pliki w ich odpowiednich lokalizacjach, aby je usunąć. Cóż, będzie, jeśli używasz Mac OSX (i prawdopodobnie również większości innych systemów operacyjnych opartych na Uniksie). Czytaj dalej, aby uczynić skrypt kompatybilnym z innymi systemami operacyjnymi (mianowicie Windows).

Krok 9: Dodawanie zgodności skryptów do systemu Windows

Dodawanie zgodności skryptów do systemu Windows
Dodawanie zgodności skryptów do systemu Windows

Skrypt, tak jak napisano do tej pory, skutecznie usuwa ślady w systemach operacyjnych opartych na systemie Unix. Aby działał w systemie Windows, potrzebny jest jeden drobny dodatek. W przeciwieństwie do komputerów Mac i innych systemów operacyjnych opartych na systemie Unix, system Windows nie obsługuje koncepcji pojedynczego katalogu głównego. Dlatego wszystkie ścieżki zaczynają się od woluminu (C: lub E: lub dowolnej innej litery, jaką możesz sobie wyobrazić), w przeciwieństwie do katalogu głównego (/). Na szczęście dla nas Perl ma specjalną zmienną $O (to wielkie o, a nie zero), to mówi nam, jakiego systemu operacyjnego aktualnie używamy. Tak więc, jeśli wartość przechowywana w tej zmiennej zawiera „Win”, będziemy chcieli usunąć wiodący ukośnik ze ścieżki pliku lokalizacji XML. Można to zrobić za pomocą następującego wiersza kodu (dodanego po pomyślnym przeanalizowaniu lokalizacji ścieżki z pliku XML):

$loc_hash{$id} = substr($loc_hash{$id}, 1) if $^O =~ /Win/i;Teraz skrypt będzie działał niezależnie od tego, czy jest uruchomiony w systemie OS X czy Windows.

Krok 10: Ukończony skrypt

Ukończony skrypt
Ukończony skrypt

W załączniku znajduje się moja wersja ukończonego skryptu automatycznego usuwania iTunes, dla tych z was, którzy chcieli tylko produktu końcowego, a nie wyjaśnienia, jak to działa.

Aby użyć skryptu, będziesz chciał zapisać plik jako plik perl (rozszerzenie.pl), a następnie uczynić go wykonywalnym (chmod 751 w systemie Unix, nie wiesz, co to jest dla systemów Windows).

Zalecana: