İçindekiler:

İstenmeyen ITunes Şarkılarını Bilgisayarınızdan Silin: 10 Adım
İstenmeyen ITunes Şarkılarını Bilgisayarınızdan Silin: 10 Adım

Video: İstenmeyen ITunes Şarkılarını Bilgisayarınızdan Silin: 10 Adım

Video: İstenmeyen ITunes Şarkılarını Bilgisayarınızdan Silin: 10 Adım
Video: Silinemeyen Dosya ya da Klasör Silme - Programsız 2024, Temmuz
Anonim
İstenmeyen ITunes Şarkılarını Bilgisayarınızdan Silin
İstenmeyen ITunes Şarkılarını Bilgisayarınızdan Silin

Merhaba bayanlar baylar, bu benim ilk kodlama talimatım, bu yüzden lütfen yorum yaparken silahlarınızı evde bırakın (bıçaklar kabul edilebilir ancak). MP3 çalarların ortaya çıkmasıyla, insanların benzeri görülmemiş miktarda taşıması mümkün hale geldi. ceplerinde onlarla birlikte müzik. 5, 10, hatta 15 bin şarkılık (ve bazı insanlar, hatta daha fazla) koleksiyona sahip insanları duymak nadir değildir. MP3 çalarlar arasında hiçbiri Apple'ın iPod'u ve onu çalıştıran yazılım iTunes'dan daha popüler değildir. Ancak, bu kadar büyük müzik kitaplıklarında kulağa hoş gelmeyen veya çekici gelmeyen şarkılardan kurtulmak biraz sıkıcı olabilir. sen artık. iTunes'daki müzik koleksiyonunuzda parça parça gitmek ve sevmediğiniz şarkılardan kurtulmak uzun zaman alabilir. Bu talimat burada devreye girer. Bu talimatta size şarkılardan otomatik olarak kurtulmanın bir yolunu göstereceğim Bu, iyi arkadaşım Perl'den biraz yardım alarak, sadece çok kötü. o ve sadece iyi çalışacak). Perl ile ilgilenenler için, O'Reilly'nin "Learning Perl" kitabını şiddetle tavsiye ediyorum, iyi bir okuma ve Perl hakkında okuma fırsatı bulduğum en iyi yazılmış kitaplardan biri. ÖNEMLİ: Burada sunulan yöntemler işe yarayacak olsa da doğru yapılırsa, aptalca bir şey yapıp değerli şarkılarınızı silerseniz hiçbir sorumluluk kabul edemem ve etmeyeceğim. Aşağıdaki gibi bir komut dosyası yazmaya veya çalıştırmaya çalışmadan önce lütfen müzik dosyalarınızı yedeklemeyi kesinlikle düşünün. Sadece dikkatli olun ki, yapmazsanız hiçbir duygumuz incinmesin, teşekkürler. Uyarıyı okudunuz mu? (Evet, siz bile, uyarıyı okumayan kişi) Harika! Hadi başlayalım:-)Güncelleme: Görünüşe göre bazı Perl betik yazarları iTunes betiklerini yazmak için çok uğraşmışlar. iTunes ile ilgili çeşitli komut dosyaları için Teridon'un Komut Dosyalarına göz atın.

1. Adım: Başlarken

Başlarken
Başlarken

Her şeyde olduğu gibi, bu betiği çalıştırmadan önce yapılması gereken küçük bir hazırlık var. Yani, şarkıları iTunes'dan otomatik olarak silmek için ihtiyacınız olacak şeyler:1) Bir bilgisayar (hah)2) iTunes (double duh)3) Perl (Perl olmadan bir Perl betiği çalıştırmak zor, öyle değil mi?)4) Sizin favori editör (ben de vi ve vim savunucusuyum, ancak herhangi bir metin editörü bu işi yapmalıdır)5) Bir iPod (zorunlu değil, ancak yakında açıklığa kavuşturulacak nedenlerden dolayı olması güzel) Perl'i Alma: Aşağıdakileri takip edin buradaki talimatlar yeterince basit olmalıdır:https://www.perl.com/download.cspPerl'i indirdikten, kurduktan ve kullanıma hazır hale getirdikten sonra, yaptığımız şey hakkında bazı arka plan bilgileri isteyeceğiz. Komut dosyasının orijinal olarak Mac OS X için geliştirildiğine dikkat edilmelidir, ancak aynı yöntemler Windows gibi Unix tabanlı olmayan işletim sistemlerinde de çalışmalıdır. Eğitilebilirliğin sıkıcı, er, "eğitimsel" kısmı için zaman.

2. Adım: Temel Komut Dosyası Fikri

iTunes, kullanıcıların şarkıları derecelendirmesine izin vermek için 5 yıldızlı bir derecelendirme sistemi içerir. 5 yıldızlı şarkılar en iyi şarkılar olarak kabul edilirken 1 yıldızlı şarkılar en kötü şarkılar olarak kabul edilir. Amaçlarımız için, derecelendirmesi olmayan (diğer bir deyişle 0 yıldız) herhangi bir şarkının, kullanıcının henüz derecelendirme şansına sahip olmadığı bir şarkı olduğunu varsayacağız. Şahsen, şarkıları derecelendirirken, bir şarkının 1 yıldızlı derecelendirmesi varsa, ben şarkının kapladığı değerli sabit disk alanını hak etmemesi muhtemelen yeterince kötü. Bu nedenle, bu Eğitilebilir Kitapta size sunacağım Perl Komut Dosyası, iTunes Kitaplığı aracılığıyla ayrıştırılacak ve 1 yıldızlı derecelendirmeye sahip tüm parçaları silecektir. Ek bir bonus olarak, şarkılar kullanıcı hareket halindeyken derecelendirilebilir. iPod kullanarak. Bu şekilde, hareket halindeyken sadece derecelendirerek silinecek şarkıları seçebilirsiniz ve daha sonra iPod'unuzu bilgisayarınızla senkronize ettiğinizde (iPod'unuzu bilgisayarınızla otomatik olarak senkronize ederseniz) bunlar otomatik olarak silinecektir. Artık ne olduğunu biliyoruz. yapıyoruz, bakalım Perl Script için iTunes'dan şarkı bilgilerini nasıl çekeceğiz.

3. Adım: XML Kitaplığı: ITunes' Goto Guy

XML Kitaplığı: ITunes' Goto Guy
XML Kitaplığı: ITunes' Goto Guy

Derecelendirmesine göre bir şarkıyı bilgisayardan silmek için 2 parça bilgiye ihtiyacımız var: şarkının derecelendirmesi ve şarkının yeri. Neyse ki bizim için iTunes hakkında istediğimiz tüm bilgileri alabileceğimiz kullanışlı bir dosya var: iTunes Music Library XML dosyası. XML dosyası "iTunes Music Library.xml" olarak adlandırılır ve ana Sabit Sürücünüzdeki Müzik dizininizde bulunmalıdır.

XML dosyası hakkında: iTunes xml dosyası, iTunes tarafından sağlanan ve her zaman güncel tutulan bir tür veritabanıdır. iTunes'da bir değişiklik yapıldığında, iTunes XML dosyasının ilgili kısmı bu değişikliği not edecek şekilde değiştirilir. iTunes XML dosyamdan örnek bir giriş aşağıda verilmiştir: 1218Track ID1218NameTake On MeArtistA-HaGenre80'sKindMPEG audio fileSize3682382Toplam Zaman230138Tarih Değiştirme2007-09-24T02:11:30ZEklenme Tarihi2008-05-28T05:00:24ZBit Rate128DateSample Rate244100Play Count 25T01:26:58ZRating40Albüm Değerlendirmesi40Albüm Değerlendirmesi HesaplandıKalıcı ID9AC5DB9713240B44Parça TürüDosyaKonum dosyası://localhost/Volumes/HD1/iTunes%20Music/A-Ha/Unknown%20Album/Take%20On%20Me.mp3File KlasörüÜstteki Klasörden Görüldüğü gibi1 Klasör Sayılamaz4 XML dosyası, HTML stili etiketlerle çevrelenmiş değerlerden oluşur. Komut dosyasının amaçları doğrultusunda, Parça Kimliği, Ad, Sanatçı, Derecelendirme ve Konum bilgi parçalarıyla ilgileneceğiz. XML dosyasına bakıyorsanız, yukarıdan bu şarkının "derecelendirmesi" olduğunu fark edebilirsiniz. iTunes, her şarkıya 0 ile 100 arasında bir tam sayı atar ve her 20 puan, derecelendirme için ek bir yıldızdır. Dolayısıyla, 20 puan 1 yıldız puana karşılık gelir, 40 puan 2 yıldız puandır ve bu şekilde devam eder, 100 puan 5 yıldızdır. Artık XML dosyasını bildiğimize göre, komut dosyası oluşturmaya başlayalım

Adım 4: Arkadaşınız Hash (Amsterdam'da olmasanız bile)

Arkadaşınız Hash (Amsterdam'da olmasanız bile)
Arkadaşınız Hash (Amsterdam'da olmasanız bile)

Dosyaları ortadan kaldırmadan önce, tüm şarkı bilgilerini birbiriyle ilişkilendiren çalışan bir veritabanına ihtiyacımız var. Karma dizisi veya karma karma gibi daha karmaşık veri yapıları kullanılabilirken, bu komut dosyası basit bir karma listesinin kullanımını hak edecek kadar basittir. diziler veya karmakarışık bir anahtar/değer çiftleri kütlesi tarafından indekslenir. Bir hash, içinde şeyler (değerler) olan büyük bir varil olarak düşünülebilir ve metaforik varildeki her şeyin iliştirilmiş bir etiketi (anahtarları) vardır. Namludaki herhangi bir öğeyi sadece etiketini bularak dışarı çekebilirsiniz. Karmalar hakkında daha fazla bilgi için aşağıdaki bağlantı yararlı olabilir: https://www.tutorialspoint.com/perl/perl_hashes.htm iTunes XML dosyasındaki her şarkıya benzersiz bir parça kimliği atandığı bilgisini kullanabiliriz. şarkılar. Bu nedenle trackID, karmalar için ideal bir anahtar oluşturur. Bu nedenle şarkı adı, sanatçı, derecelendirme ve konum için 4 karma ayarlayabiliriz. Bunlar oluşturulduktan sonra, dosyayı tarayabilir ve daha sonra gösterilecek olan bazı basit düzenli ifadeleri kullanarak karma veritabanımızı doldurabiliriz.

Adım 5: Normal İfadeler Üzerine (çok) Kısa Bir Ders

XML dosyasından hash girdilerimizi almak ve ayrıca arama yapmaktan biraz zaman kazanmak için, Perl'in daha güçlü özelliklerinden birinin yardımına başvurmak isteyeceğiz: normal ifade. Düzenli ifadeler hakkında çok kısa bir ders vereceğim, ancak daha ayrıntılı açıklamalar isteyenler için çevrimiçi olarak çok sayıda iyi düzenli ifade öğreticisi var. İyi bir düzenli ifade öğreticisi için https://perldoc.perl.org/perlretut.html'ye göz atın. Kısacası, düzenli ifadeler bize dizeler arasında gezinmek, bir dizeyi başka bir dizeyle değiştirmek veya bölümlerini kaydetmek için bir dizi araç sağlar. daha sonra kullanmak için bir dize. Normal ifadeler, bu proje için kullanılacak eşleştirme (m//) ve değiştirme (s//) operatörleri olmak üzere 2 işlev sağlar. Bu işlevlerden herhangi birini bir atama bağlamında kullanmak için, bir deseni seçilen bir dize değişkenine bağlamak için kullanılan Perl'in bağlama operatörünü (=~) kullanacağız. Örnekler:

$yorum =~ /Purduecer/; $comment dizesi "Purduecer"s/[a-z]/[A-Z]/ ifadesini içeriyorsa #doğru döndürür; #dizedeki tüm küçük harfleri al ve $_ dizesinde büyük harf yapDüzenli ifadelerin ikinci bir kullanışlı özelliği, bellek değişkenleridir. Normal ifadelerde, belirli öğeleri parantez içine yerleştirebilir ve daha sonra bu parçalarla eşleşen dize bölümlerine erişmek için $1, $2, vb. özel kalıp eşleştirme bellek değişkenlerini kullanabilirsiniz. Örnekler

/(Öğreticiler) Robot/; #Herhangi bir satırı "Instructables Robot" ifadesiyle eşleştirin$web sitesi = $1; #İlk paren kümesinde bulunan başarılı kalıp eşleşmesinin sonucunu kaydedin #(bu durumda, $1 değişkeni "Instructables" içerir)Son olarak, düzenli ifadelerde özel bir amaca hizmet eden belirli karakterler vardır. Bunlar ters eğik çizgi kaçışlarıdır (hepsi C programcılarına tanıdık gelmelidir), karakter sınıfları ve meta karakterlerdir. Örneğin, her iki tarafında bir sekme bulunan herhangi bir harfi eşleştirmek için şunu söyleyebiliriz:

/\t[a-zA-Z]\t/Bu köşeli parantezler, bir karakter sınıfını tanımlamak için normal ifadelerde kullanılır. Bununla birlikte, satırda köşeli parantez içine alınmış metni bulmak istediğimizi varsayalım. Aşağıda gösterildiği gibi, olduğu gibi yazamadık

/

/

Adım 6: ITunes Komut Dosyasına Normal İfadeler Uygulama

ITunes Komut Dosyasına Normal İfadeler Uygulamak
ITunes Komut Dosyasına Normal İfadeler Uygulamak

Artık normal ifadeleri destekleyen temel kavramlar hakkında biraz fikir sahibi olduğumuzu umduğumuza göre, bunları iTunes komut dosyasına uygulama zamanı geldi. xml kodunu okurken, eğik çizgi gibi belirli karakterlerle oldukça sık karşılaşılır. Bu nedenle, m// operatörünün kodda istediğiniz sınırlayıcıları seçmenize izin verdiği gerçeğinden yararlanacağız (diğer sınırlayıcılar kesinlikle işe yarayacak olsa da köşeli parantez kullanacağız) Öncelikle, sadece bir kısmını okumamız gerekiyor. tam iTunes XML dosyası. Dosyanın çalma listeleri vb. gibi bilgiler içeren bölümleri gerekli değildir. Şarkı bilgilerinden sonra gelen çalma listeleri bölümünün ilk satırı aşağıdaki gibi görünür: Çalma Listeleri Bu nedenle bir süre döngüsünde o satırla karşılaşılırsa dosya okumasının sonuna atlayan bir ifade ekleyebiliriz.

while() { #loop_instructions_here son if($_ =~ m[Oynatma Listeleri])}Ardından, karma kimliklerini oluşturmak için, değerleri karmalara kaydetmek için önceki adımda öğrendiğimiz bellek eşleşme değişkenlerini kullanarak veritabanı karmalarımızı oluşturmak için bir if-elsif ağacı kullanabiliriz.

if($_ =~ m[(d+)]) { $id = $1; } elsif($_ =~ m[Derecelendirme(d+)]) { $rate_hash{$id} = $1; } elsif($_ =~ m[Ad(.+)]) { $isim_hash{$id} = $1; } elsif($_ =~ m[Sanatçı(.+)]) { $art_hash{$id} = $1; } elsif($_ =~ m[Locationfile://localhost(.*)]) { $loc_hash{$id} = $1; }Karma veritabanımızın temelini oluşturduğumuza göre, 1-Yıldızlı dosyaların bulunmasını ve kaldırılmasını ele alacağız, dolayısıyla bir sonraki adıma geçeceğiz!

7. Adım: Bu 1 Yıldızlı Parkurları Bulma ve Silme

Bu 1 Yıldızlı Parkurları Bulma ve Silme
Bu 1 Yıldızlı Parkurları Bulma ve Silme

Artık veritabanımızı kurduğumuza göre, onları silebilmemiz için 1 yıldızlı parçaları aramanın zamanı geldi. Perl, karmalarımızın tüm anahtarları üzerinde yineleme yapmak için kullanılabilen foreach döngüsü adı verilen yararlı bir döngü yapısı sağlar. iTunes arşivinizdeki her parçanın derecelendirme karmasında bir girişi olmayacağına dikkat edilmelidir. Bunun nedeni, derecelendirmesi olmayan şarkılara iTunes XML dosyasında bir parça derecelendirme satırı verilmemesidir. Bu nedenle, karmalar arasında döngü yaparken aşağıdaki yapıyı kullanmak isteyeceğiz:

foreach $id (sıralama anahtarları %rate_hash) { #…buraya döngü kodunu ekleyin}Bundan sonra, aşağıdaki ifadeyi kullanmak kadar basit

$rate_hash{$id} == 20 ise $loc_hash{$id} bağlantısını kaldırın;Yukarıdaki örnek kodda kullanılan unlink işlevi, Perl'in dosyaları silme yöntemidir. İşletim sisteminizin silme işlevine bir sistem çağrısı kullanmak isteyebilirsiniz, ancak taşınabilirlik nedenleriyle yazdığım kod sistem çağrısını kullanmıyor. Artık kodumuzun temel yapısına sahibiz. Aşağıdaki adımlarda, bu sinir bozucu 1 yıldızdan kurtulmak için tam özellikli, işlevsel bir komut dosyasına sahip olabilmeniz için kodda bazı iyileştirmeler yapacağız.

Adım 8: URI Kaçıyor ve Bunların Etrafında Nasıl Dolaşılır

Komut dosyasını olduğu gibi çalıştırmayı denerseniz, işletim sisteminizden çok sayıda hatayla karşılaşırsınız ve silmeye çalıştığınız dosya yollarına bakarsanız, yollara gömülü, istenmeyen karakterler bulabilirsiniz. Bu yolların URI çıkış karakterlerini içerme olasılığı oldukça yüksektir. URI çıkışları nelerdir? HTML ve XML'de, URI kaçış karakterleri (diğer adıyla URI kaçışları), o karakterin değişmez örneklerini aramak için kullanılan özel meta karakterlerdir. Örneğin, bir XML karakter dizesinde asla basit bir boşluk görmeyeceksiniz. Bununla birlikte, basit bir boşluk olan %20'nin XML temsilini göreceksiniz. (Tabii bunları tarayıcınızın URL çubuğunda görmüş ve ne olduklarını merak etmişsinizdir. Eh, şimdi biliyorsunuz) Bir URI kaçışı, % işaretinin ardından karakterin ASCII değerini temsil eden 2 basamaklı bir onaltılık koddan oluşur. nokta, karşılaştığınız her olası meta karakteri değiştirmek için konum karmasına bir sürü değiştirme ifadesi yazabilirsiniz (örneğin, $loc_hash{$id} =~ s/%20/ /; vb.). Neyse ki, yine de, Perl bu şeylerle ilgilenmek için daha iyi bir yol sağlar. Perl, URI kaçışlarını ortadan kaldırma işini yapacak yerleşik bir işlevi olan uri_unescape olan URI::Escape adlı bir modülle birlikte gelir.. Modülü kullanmak için kodunuzun en üstüne aşağıdaki satırı eklemeniz yeterlidir:

URI::Escape'i kullanın;Şimdi XML dosya döngüsünde $loc_hash{$id} dizisini atadıktan sonra aşağıdaki satırı ekleyebiliriz.

uri_unescape($loc_hash{$id});Yukarıdaki satır, herhangi bir URI kaçış karakterini otomatik olarak ortadan kaldırır. Ek bir bonus olarak, bazı uluslararası karakterleri de çevirir. Komut dosyasını, içinde Japonca konji olan birkaç dosya yolu ile çalıştırdım ve uri_unescape işlevi, bu karakterlerin XML biçimlerini orijinal karakterlerine çevirdi, böylece bağlantının kaldırılması dosyayı başarıyla silebilir. Devam etmeden önce, ek bir adım daha atılmalıdır.. Tam olarak anlamadığım nedenlerden dolayı iTunes, ve işareti(&) sembolünü dizelerinde & olarak kodlar. Bunun neden olduğunu bilen biri varsa, lütfen bana bildirin. Bu arada uri_unescape satırının altına aşağıdaki satırı ekleyerek bu sorunu ortadan kaldırıyoruz.

$loc_hash{$id} =~ s/&#/&/;Artık betik, garip karakterlerden arındırılmış dosya yollarına sahip olacak ve unlink işlevi, dosyaları silmek için uygun konumlarında bulabilecek. Eh, Mac OSX kullanıyorsanız (ve muhtemelen diğer Unix tabanlı işletim sistemlerinin çoğu da) olacaktır. Komut dosyasını diğer işletim sistemlerinde (yani Windows) uyumlu hale getirmek için okumaya devam edin.

9. Adım: Windows'a Komut Dosyası Uyumluluğu Ekleme

Windows'a Komut Dosyası Uyumluluğu Ekleme
Windows'a Komut Dosyası Uyumluluğu Ekleme

Betik, şimdiye kadar yazıldığı gibi, Unix tabanlı işletim sistemlerinde izleri etkin bir şekilde kaldırır. Windows üzerinde çalışması için küçük bir ekleme gereklidir. Mac ve diğer Unix tabanlı işletim sistemlerinden farklı olarak Windows, tek bir kök dizin kavramını desteklemez. Bu nedenle, tüm yol adları kök dizinin (/) aksine bir birim (C: veya E: veya bu konuda aklınıza gelebilecek herhangi bir başka harf) ile başlar. Neyse ki bizim için Perl'in özel bir değişkeni var, $O (bu bir büyük o, sıfır değil), bu bize şu anda hangi işletim sistemini kullandığımızı söyler. Bu nedenle, bu değişkende depolanan değer "Win" içeriyorsa, XML konumu dosya yolumuzda baştaki eğik çizgiyi kaldırmak isteyeceğiz. Bu, aşağıdaki kod satırıyla yapılabilir (XML dosyasındaki bir parçanın konumunu başarıyla ayrıştırdıktan sonra eklenir):

$loc_hash{$id} = substr($loc_hash{$id}, 1) eğer $^O =~ /Win/i;Artık komut dosyası, OS X veya Windows üzerinde çalışsa da çalışacaktır.

Adım 10: Tamamlanmış Komut Dosyası

Tamamlanmış Senaryo
Tamamlanmış Senaryo

Ekte, nasıl çalıştığına dair açıklama değil de son ürünü isteyenler için tamamlanmış iTunes otomatik silme komut dosyasının benim sürümüm var.

Komut dosyasını kullanmak için dosyayı bir Perl dosyası (.pl uzantılı) olarak kaydetmek ve ardından yürütülebilir hale getirmek isteyeceksiniz (Unix'te chmod 751, Windows sistemleri için ne olduğundan emin değilsiniz).

Önerilen: