Daftar Isi:

Hapus Lagu iTunes yang Tidak Diinginkan Dari Komputer Anda: 10 Langkah
Hapus Lagu iTunes yang Tidak Diinginkan Dari Komputer Anda: 10 Langkah

Video: Hapus Lagu iTunes yang Tidak Diinginkan Dari Komputer Anda: 10 Langkah

Video: Hapus Lagu iTunes yang Tidak Diinginkan Dari Komputer Anda: 10 Langkah
Video: Cara Transfer File Pakai iTunes dari iPhone dan PC (Musik, Video dan Format File Lain) - Part 2 2024, Juli
Anonim
Hapus Lagu iTunes yang Tidak Diinginkan Dari Komputer Anda
Hapus Lagu iTunes yang Tidak Diinginkan Dari Komputer Anda

Hai tuan-tuan dan nyonya-nyonya, ini adalah instruksi coding pertama saya, jadi tolong, ketika berkomentar, tinggalkan senjata Anda di rumah (namun pisau dapat diterima). Dengan munculnya pemutar mp3, dimungkinkan bagi orang untuk membawa jumlah yang belum pernah terjadi sebelumnya musik di sekitar dengan mereka di saku mereka. Tidak jarang kita mendengar orang memiliki koleksi 5, 10, bahkan 15 ribu lagu (bahkan beberapa orang bahkan lebih). Dari pemutar mp3, tidak ada yang lebih populer daripada iPod Apple dan perangkat lunak yang menjalankannya, iTunes. Namun, dengan perpustakaan musik yang begitu besar, membuang lagu-lagu yang terdengar tidak bagus atau tidak menarik dapat menjadi agak membosankan. Anda lagi. Perlu waktu lama untuk menelusuri trek demi trek melalui koleksi musik Anda di iTunes dan menyingkirkan lagu-lagu yang tidak Anda sukai. Di situlah instruksi ini masuk. Dalam instruksi ini, saya akan menunjukkan cara untuk secara otomatis menyingkirkan lagu yang benar-benar mengerikan, dengan bantuan dari teman baik saya, Perl. Pengetahuan dasar yang baik tentang Perl sangat membantu ketika mencoba mengulangi instruksi ini, meskipun tidak diperlukan (Anda tentu saja dapat mengambil produk kode yang sudah jadi dan menyalin/menempelkannya itu dan itu akan bekerja dengan baik). Bagi mereka yang tertarik dengan Perl, saya sangat merekomendasikan buku "Learning Perl" dari O'Reilly, ini adalah bacaan yang bagus dan salah satu buku tertulis terbaik tentang Perl yang pernah saya baca. PENTING: Sementara metode yang disajikan di sini akan berhasil jika dilakukan dengan benar, saya tidak dapat dan tidak akan menerima tanggung jawab apa pun jika Anda melakukan sesuatu yang bodoh dan menghapus lagu-lagu berharga Anda. Harap pertimbangkan untuk mencadangkan file musik Anda sebelum mencoba menulis atau menjalankan skrip seperti berikut ini. Hanya err di sisi hati-hati sehingga kami tidak memiliki perasaan terluka jika Anda tidak, terima kasih. Baca peringatannya? (Ya, bahkan kamu, orang yang tidak membaca peringatan itu) Hebat! Mari kita mulai:-) Pembaruan: Tampaknya beberapa skrip perl telah bekerja keras untuk menulis skrip iTunes. Untuk berbagai skrip terkait iTunes, lihat Teridon's Scripts.

Langkah 1: Memulai

Mulai
Mulai

Seperti semua hal, ada sedikit persiapan yang perlu dilakukan sebelum kita dapat menjalankan skrip ini. Jadi, hal-hal yang Anda perlukan untuk menghapus lagu secara otomatis dari iTunes:1) Komputer (duh)2) iTunes (double duh)3) Perl (sulit menjalankan skrip Perl tanpa Perl, bukan?)4) Anda editor favorit (saya sendiri pendukung vi dan vim, tetapi editor teks mana pun harus melakukannya)5) iPod (tidak wajib, tetapi bagus untuk dimiliki karena alasan yang akan segera dijelaskan)Mendapatkan Perl: Ikuti petunjuk di sini, seharusnya cukup sederhana: https://www.perl.com/download.csp Setelah Perl diunduh, diinstal, dan siap digunakan, kami akan menginginkan beberapa informasi latar belakang tentang apa yang sedang kami lakukan. Perlu dicatat bahwa skrip awalnya dikembangkan untuk Mac OS X, meskipun metode yang sama harus bekerja pada OS berbasis non-Unix seperti Windows. Saatnya untuk bagian "pendidikan" yang membosankan, eh, dari Instructable.

Langkah 2: Ide Skrip Dasar

iTunes menyertakan sistem peringkat bintang 5 untuk memungkinkan pengguna menilai lagu. Lagu dengan peringkat bintang 5 dianggap sebagai lagu terbaik sedangkan lagu dengan peringkat bintang 1 dianggap sebagai lagu terburuk. Untuk tujuan kami, kami akan menganggap bahwa lagu apa pun yang tidak memiliki peringkat (alias 0 bintang) adalah lagu yang belum sempat dinilai oleh pengguna. Secara pribadi, saat memberi peringkat lagu, jika sebuah lagu memiliki peringkat bintang 1, saya menemukan itu mungkin cukup buruk sehingga tidak layak mendapatkan ruang hard drive berharga yang digunakan lagu tersebut. Oleh karena itu, Skrip Perl yang akan saya sajikan kepada Anda dalam Instruksi ini akan diuraikan melalui Perpustakaan iTunes dan menghapus trek apa pun yang telah diberi peringkat bintang 1. Sebagai bonus tambahan, lagu dapat diberi peringkat saat pengguna sedang bepergian menggunakan iPod. Dengan cara ini, Anda dapat memilih lagu untuk dihapus saat bepergian hanya dengan memberi peringkat, dan lagu tersebut akan dihapus secara otomatis saat Anda menyelaraskan iPod ke komputer nanti (jika Anda secara otomatis menyelaraskan iPod ke komputer). Sekarang kita tahu apa kita lakukan, mari kita lihat bagaimana kita akan menarik informasi lagu dari iTunes untuk Perl Script.

Langkah 3: Perpustakaan XML: Goto Guy dari ITunes

Pustaka XML: Goto Guy dari ITunes
Pustaka XML: Goto Guy dari ITunes

Untuk menghapus lagu dari komputer berdasarkan peringkatnya, kami memerlukan 2 informasi: peringkat lagu dan lokasi lagu. Untungnya bagi kami ada file praktis yang dapat kami peroleh semua informasi yang kami inginkan tentang iTunes dari: file XML Perpustakaan Musik iTunes. File XML disebut "iTunes Music Library.xml" dan harus ditempatkan di direktori Musik Anda di Hard Drive utama Anda.

Tentang file XML: File xml iTunes adalah semacam database yang dikelola oleh iTunes, dan selalu diperbarui. Saat modifikasi dibuat di iTunes, bagian yang sesuai dari file XML iTunes dimodifikasi untuk mencatat perubahan ini. Contoh entri dari file XML iTunes saya diberikan di bawah ini: 1218Track ID1218NameTake On MeArtistA-HaGenre80'sKindMPEG file audioSize3682382Total Waktu230138Tanggal Dimodifikasi2007-09-24T02:11:30ZTanggal Ditambahkan2008-05-28T05:00:24ZRasio Bit128Rasio Sampel44100Tanggal Putar UTC68218 Tanggal Pemutaran 25T01:26:58ZRating40Peringkat Album40Peringkat Album yang DihitungPersistent ID9AC5DB9713240B44Jenis TrackFileLocationfile://localhost/Volumes/HD1/iTunes%20Music/A-Ha/Unknown%20Album/Take%20On%20Me.mp3File Folder Count4Library Folder Count1As dapat dilihat dari entri Folder Count1As file XML terdiri dari nilai-nilai yang dikelilingi oleh tag bergaya HTML. Untuk keperluan skrip, kami akan tertarik dengan bit informasi Track ID, Name, Artist, Rating, dan Location. Jika Anda melihat file XML, Anda mungkin melihat dari atas bahwa lagu ini memiliki "peringkat" 40. iTunes memberikan setiap lagu sebuah bilangan bulat, mulai dari 0 hingga 100, dengan setiap 20 poin menjadi bintang tambahan untuk peringkat tersebut. Jadi, peringkat 20 sesuai dengan peringkat bintang 1, peringkat 40 adalah peringkat bintang 2, dan seterusnya, dengan 100 menjadi peringkat bintang 5. Jadi sekarang kita tahu tentang file XML, mari kita mulai membuat skrip

Langkah 4: Teman Anda Hash (bahkan Jika Anda Tidak di Amsterdam)

Teman Anda Hash (bahkan Jika Anda Tidak di Amsterdam)
Teman Anda Hash (bahkan Jika Anda Tidak di Amsterdam)

Sebelum kita dapat menghilangkan file, kita memerlukan database yang berfungsi yang menghubungkan semua informasi lagu bersama-sama. Sementara struktur data yang lebih canggih, seperti array hash atau hash dari hash, dapat digunakan, skrip ini cukup sederhana untuk menggunakan daftar hash yang sederhana. Bagi yang belum tahu, hash tidak lebih dari sebuah array yang diindeks oleh string, atau kumpulan pasangan kunci/nilai yang campur aduk. Seseorang dapat menganggap hash sebagai tong besar dengan barang (nilai) di dalamnya, dan semua yang ada di tong metaforis memiliki tag (kunci) yang terpasang. Anda dapat menarik barang apa pun di dalam tong hanya dengan menemukan tagnya. Untuk informasi lebih lanjut tentang hash, tautan berikut mungkin berguna: https://www.tutorialspoint.com/perl/perl_hashes.htmKita dapat menggunakan informasi bahwa setiap lagu dalam file XML iTunes diberi ID trek unik untuk dilacak lagu-lagu. Karena itu, trackID membuat kunci yang ideal untuk hash. Oleh karena itu, kita dapat mengatur 4 hash untuk judul lagu, artis, peringkat, dan lokasi. Setelah ini ditetapkan, kita dapat memindai file dan mengisi basis data hash kita menggunakan beberapa ekspresi reguler sederhana, yang akan ditampilkan selanjutnya.

Langkah 5: Pelajaran Singkat (sangat) tentang Ekspresi Reguler

Untuk mengambil entri hash kami dari file XML, dan juga menghemat sedikit waktu pencarian, kami akan meminta bantuan salah satu fitur Perl yang lebih kuat: ekspresi reguler. Saya akan memberikan pelajaran yang sangat singkat tentang ekspresi reguler, tetapi bagi Anda yang menginginkan penjelasan lebih rinci, ada banyak tutorial ekspresi reguler yang bagus secara online. Lihat https://perldoc.perl.org/perlretut.html untuk tutorial ekspresi reguler yang baik. Singkatnya, ekspresi reguler memberi kita seperangkat alat untuk menelusuri string, mengganti satu string dengan string lain, atau menyimpan bagian dari string untuk digunakan nanti. Ekspresi reguler menyediakan 2 fungsi, operator pencocokan (m//) dan penggantian (s//), yang akan digunakan untuk proyek ini. Untuk menggunakan salah satu dari fungsi ini dalam konteks penugasan, kita akan menggunakan operator pengikat Perl (=~), yang digunakan untuk mengikat pola ke variabel string pilihan. Contoh:

$komentar =~ /Purduecer/; #returns true jika $comment string berisi frase "Purduecer"s/[a-z]/[A-Z]/; #ambil semua huruf kecil dalam string dan gunakan huruf besar dalam $_ stringFitur berguna kedua dari ekspresi reguler adalah variabel memori. Dalam ekspresi reguler, Anda dapat menempatkan item tertentu dalam tanda kurung, dan kemudian menggunakan variabel memori pencocokan pola khusus $1, $2, dll. untuk mengakses bagian string yang cocok dengan bagian ini nanti. Contoh

/(Dapat diinstruksikan) Robot/; #Cocokkan baris mana pun dengan frasa "Robot yang Dapat Diinstruksikan"$website = $1; #Simpan hasil kecocokan pola yang berhasil yang terkandung dalam set parens pertama #(dalam hal ini, variabel $1 berisi "Instructables")Akhirnya, dalam ekspresi reguler, ada karakter tertentu yang memiliki tujuan khusus. Ini adalah pelarian garis miring terbalik (semuanya akan terlihat familiar bagi programmer C), kelas karakter dan metakarakter. Misalnya, untuk mencocokkan satu huruf apa pun yang memiliki tab di kedua sisi, kita bisa mengatakan

/\t[a-zA-Z]\t/Tanda kurung siku tersebut digunakan dalam ekspresi reguler untuk mendefinisikan kelas karakter. Namun, misalkan kita ingin menemukan teks yang diapit tanda kurung siku di baris. Kami tidak bisa begitu saja menulisnya apa adanya, seperti yang ditunjukkan di bawah ini

/

/

Langkah 6: Menerapkan Ekspresi Reguler ke Skrip ITunes

Menerapkan Ekspresi Reguler ke Skrip ITunes
Menerapkan Ekspresi Reguler ke Skrip ITunes

Sekarang kita diharapkan memiliki beberapa firasat tentang konsep dasar yang mendasari ekspresi reguler, saatnya untuk menerapkannya ke skrip iTunes. Saat membaca kode xml, karakter tertentu, seperti garis miring, cukup sering ditemui. Oleh karena itu, kami akan mengambil keuntungan dari fakta bahwa operator m// memungkinkan Anda memilih pembatas apa pun yang Anda inginkan dalam kode (kita akan menggunakan tanda kurung siku, meskipun pembatas lain pasti akan berfungsi) Pertama, kita hanya perlu membaca sebagian dari file XML iTunes lengkap. Bagian dari file yang berisi informasi seperti daftar putar, dll. tidak diperlukan. Baris pertama dari bagian playlist, yang muncul setelah informasi lagu, terlihat seperti berikut ini: Playlists Oleh karena itu, dalam loop while, kita dapat menambahkan pernyataan yang melompat ke akhir pembacaan file jika baris tersebut ditemukan.

while() { #loop_instructions_di sini terakhir if($_ =~ m[Daftar Putar])}Selanjutnya, untuk membangun ID hash, kita dapat menggunakan pohon if-elsif untuk membangun hash database kita, menggunakan variabel pencocokan memori yang telah kita pelajari pada langkah sebelumnya untuk menyimpan nilai ke dalam hash

if($_ =~ m[(d+)]) { $id = $1; } elsif($_ =~ m[Rating(d+)]) { $rate_hash{$id} = $1; } elsif($_ =~ m[Nama(.+)]) { $nama_hash{$id} = $1; } elsif($_ =~ m[Artis(.+)]) { $art_hash{$id} = $1; } elsif($_ =~ m[Locationfile://localhost(.*)]) { $loc_hash{$id} = $1; }Sekarang kita telah membangun basis database hash kita, kita akan membahas mencari dan menghapus file Bintang 1, jadi lanjutkan ke langkah berikutnya!

Langkah 7: Menemukan dan Menghapus Trek Bintang 1 itu

Menemukan dan Menghapus Trek Bintang 1 itu
Menemukan dan Menghapus Trek Bintang 1 itu

Sekarang setelah kita memiliki database yang telah kita siapkan, saatnya untuk berburu trek bintang 1, sehingga kita dapat menghapusnya. Perl menyediakan konstruksi perulangan yang berguna yang disebut loop foreach yang dapat digunakan untuk mengulangi semua kunci hash kami. Perlu dicatat bahwa tidak setiap trek di perpustakaan iTunes Anda akan memiliki entri di hash peringkat. Ini karena lagu yang tidak memiliki peringkat tidak diberi baris peringkat trek di file XML iTunes. Oleh karena itu, ketika mengulang melalui hash, kita akan ingin menggunakan konstruksi berikut:

foreach $id (urutkan kunci %rate_hash) { #…masukkan kode perulangan di sini}Setelah itu, sesederhana menggunakan pernyataan berikut

batalkan tautan $loc_hash{$id} jika $rate_hash{$id} == 20;Fungsi unlink yang digunakan dalam contoh kode di atas adalah cara Perl menghapus file. Anda mungkin tergoda untuk menggunakan panggilan sistem ke fungsi hapus sistem operasi Anda, tetapi untuk alasan portabilitas kode yang saya tulis tidak menggunakan panggilan sistem. Kami sekarang memiliki struktur dasar untuk kode kami. Pada langkah-langkah berikut, kami akan membuat beberapa penyempurnaan pada kode sehingga Anda dapat memiliki skrip fungsional berfitur lengkap untuk menyingkirkan bintang 1 yang mengganggu itu.

Langkah 8: URI Escapes dan Cara Mengatasinya

Jika Anda mencoba menjalankan skrip apa adanya, Anda akan mengalami banyak kesalahan dari sistem operasi Anda, dan jika Anda melihat jalur file yang Anda coba hapus, Anda mungkin menemukan karakter tidak biasa yang tertanam di jalur yang tidak diinginkan. Ada kemungkinan besar bahwa jalur ini berisi karakter pelarian URI. Apa itu pelarian URI? Dalam HTML dan XML, karakter pelarian URI (alias pelarian URI) adalah metakarakter khusus yang digunakan untuk mencari contoh literal dari karakter tersebut. Misalnya, Anda tidak akan pernah melihat spasi putih sederhana dalam string karakter XML. Namun, Anda akan melihat representasi XML dari spasi putih sederhana, %20. (Tentunya Anda pernah melihat ini di bilah URL di browser Anda dan bertanya-tanya apa itu. Nah, sekarang Anda tahu) Pelarian URI terdiri dari tanda % diikuti oleh kode heksadesimal 2 digit yang mewakili nilai ASCII karakter. titik, Anda dapat menulis sejumlah pernyataan ganti pada hash lokasi untuk mengganti setiap kemungkinan metakarakter yang Anda temui (yaitu $loc_hash{$id} =~ s/%20/ /; dan seterusnya). Untungnya, Perl menyediakan cara yang lebih baik untuk menangani hal-hal ini. Perl dilengkapi dengan modul yang disebut URI::Escape, yang memiliki fungsi bawaan, uri_unescape, yang akan melakukan tugas menghilangkan lolosnya URI untuk kita. Untuk menggunakan modul, cukup tambahkan baris berikut di bagian atas kode Anda:

gunakan URI::Escape;Sekarang, setelah kita menetapkan array $loc_hash{$id} dalam loop file XML, kita dapat menambahkan baris berikut setelahnya

uri_unescape($loc_hash{$id});Baris di atas secara otomatis menghilangkan semua karakter escape URI. Sebagai bonus tambahan, itu menerjemahkan beberapa karakter internasional juga. Saya menjalankan skrip dengan beberapa filepath yang memiliki konji Jepang di dalamnya, dan fungsi uri_unescape menerjemahkan format XML karakter tersebut ke karakter aslinya sehingga unlink berhasil menghapus file. Sebelum kita melanjutkan, satu langkah tambahan harus diambil. Untuk alasan yang tidak sepenuhnya saya pahami, iTunes mengkodekan simbol ampersand(&) sebagai & di dalam string-nya. Jika ada yang tahu mengapa ini, tolong beri tahu saya. Sementara itu, kami menghilangkan masalah ini dengan menambahkan baris berikut di bawah baris uri_unescape

$loc_hash{$id} =~ s/&#/&/;Sekarang skrip akan memiliki jalur file yang bersih dari karakter aneh, dan fungsi unlink akan dapat menemukan file di lokasi yang tepat untuk menghapusnya. Yah, itu akan terjadi jika Anda menggunakan Mac OSX (dan mungkin sebagian besar OS berbasis Unix lainnya juga). Baca terus untuk membuat skrip kompatibel pada sistem operasi lain (yaitu, Windows).

Langkah 9: Menambahkan Kompatibilitas Skrip ke Windows

Menambahkan Kompatibilitas Skrip ke Windows
Menambahkan Kompatibilitas Skrip ke Windows

Script, seperti yang ditulis sejauh ini, secara efektif menghapus trek pada sistem operasi berbasis Unix. Untuk membuatnya bekerja pada Windows, satu tambahan kecil diperlukan. Tidak seperti Mac dan OS berbasis Unix lainnya, Windows tidak mendukung konsep direktori root tunggal. Oleh karena itu, semua nama path dimulai dengan volume (C: atau E: atau huruf lain yang dapat Anda pikirkan, dalam hal ini) sebagai lawan dari direktori root (/). Untungnya bagi kami, Perl memiliki variabel khusus, $O (itu huruf kapital o, bukan nol), yang memberitahu kita sistem operasi apa yang sedang kita gunakan. Jadi, jika nilai yang disimpan dalam variabel itu berisi "Menang", kita akan ingin menghapus garis miring di lokasi filepath XML kita. Ini dapat dilakukan dengan baris kode berikut (ditambahkan setelah kami berhasil mengurai lokasi trek dari file XML):

$loc_hash{$id} = substr($loc_hash{$id}, 1) jika $^O =~ /Menang/i;Sekarang, skrip akan berfungsi baik dijalankan di OS X atau Windows.

Langkah 10: Script Selesai

Script yang Selesai
Script yang Selesai

Terlampir adalah versi saya dari skrip penghapusan otomatis iTunes yang lengkap, bagi Anda yang hanya menginginkan produk akhir dan bukan penjelasan tentang cara kerjanya.

Untuk menggunakan skrip, Anda ingin menyimpan file sebagai file perl (ekstensi.pl) dan kemudian membuatnya dapat dieksekusi (chmod 751 di Unix, tidak yakin apa itu untuk sistem Windows).

Direkomendasikan: