Isi kandungan:

Padamkan Lagu ITunes yang Tidak Diingini Dari Komputer Anda: 10 Langkah
Padamkan Lagu ITunes yang Tidak Diingini Dari Komputer Anda: 10 Langkah

Video: Padamkan Lagu ITunes yang Tidak Diingini Dari Komputer Anda: 10 Langkah

Video: Padamkan Lagu ITunes yang Tidak Diingini Dari Komputer Anda: 10 Langkah
Video: Cara mengatasi iphone stuck di logo apple / itunes / recovery | TERBARU 2021 2024, November
Anonim
Padamkan Lagu-lagu ITunes yang Tidak Diingini Dari Komputer Anda
Padamkan Lagu-lagu ITunes yang Tidak Diingini Dari Komputer Anda

Hai, tuan-tuan dan puan-puan, ini adalah arahan pengkodan pertama saya, jadi tolong, semasa memberi komen, tinggalkan senjata anda di rumah (pisau boleh diterima, bagaimanapun). Dengan kedatangan pemain mp3, telah memungkinkan orang membawa jumlah yang belum pernah terjadi sebelumnya muzik dengan mereka di dalam poket mereka. Tidak jarang mendengar orang mempunyai koleksi 5, 10, bahkan 15 ribu lagu (dan beberapa orang, bahkan lebih). Dari pemain mp3, tidak ada yang lebih popular daripada iPod Apple dan perisian yang menjalankannya, iTunes. Namun, dengan perpustakaan muzik yang besar, ia boleh menjadi agak membosankan untuk menyingkirkan lagu-lagu yang tidak terdengar bagus atau menarik. awak lagi. Mungkin memerlukan masa yang lama untuk melacak demi melintasi koleksi muzik anda di iTunes dan menyingkirkan lagu-lagu yang tidak anda sukai. Di sinilah arahan ini masuk. Dalam arahan ini, saya akan menunjukkan kepada anda cara untuk menyingkirkan lagu secara automatik yang cukup mengerikan, dengan sedikit bantuan dari rakan baik saya, Perl. Pengetahuan asas yang baik tentang Perl sangat membantu ketika mencuba mengulangi arahan ini, walaupun tidak diperlukan (anda pasti boleh mengambil produk kod yang sudah selesai dan salin / tampal ia dan ia akan berfungsi dengan baik). Bagi mereka yang berminat dengan Perl, saya sangat mengesyorkan buku "Learning Perl" dari O'Reilly, ia adalah bacaan yang baik dan salah satu buku bertulis terbaik mengenai Perl yang saya ada peluang untuk membaca. PENTING: Walaupun kaedah yang disajikan di sini akan berfungsi jika dilakukan dengan betul, saya tidak boleh dan tidak akan bertanggungjawab sekiranya anda melakukan sesuatu yang bodoh dan memadamkan lagu-lagu berharga anda. Pertimbangkan untuk membuat sandaran fail muzik anda sebelum cuba menulis atau melaksanakan skrip seperti yang berikut. Hanya berhati-hati agar kita tidak merasa terluka jika tidak, terima kasih. Baca amaran? (Ya, bahkan anda, orang yang tidak membaca peringatan) Hebat! Mari mulakan:-) Kemas kini: Nampaknya beberapa skrip perl telah berusaha keras untuk menulis skrip iTunes. Untuk pelbagai skrip yang berkaitan dengan iTunes, lihat Skrip Teridon.

Langkah 1: Bermula

Bermula
Bermula

Seperti semua perkara, ada sedikit persiapan yang perlu dilakukan sebelum kita dapat menjalankan skrip ini. Jadi, perkara yang anda perlukan untuk memadam lagu dari iTunes secara automatik: 1) Komputer (duh) 2) iTunes (duh ganda) 3) Perl (sukar untuk menjalankan skrip Perl tanpa Perl, bukan?) 4) Anda editor kegemaran (saya adalah penyokong vi dan vim sendiri, tetapi mana-mana penyunting teks harus melakukan muslihat) 5) iPod (tidak wajib, tetapi bagus untuk mempunyai sebab-sebab yang akan dijelaskan dengan segera) Mendapat Perl: Ikuti arahan di sini, harus cukup mudah: https://www.perl.com/download.csp Setelah Perl memuat turun, dipasang, dan siap digunakan, kami akan memerlukan beberapa maklumat latar belakang mengenai apa yang sedang kami lakukan. Harus diingat bahawa skrip pada awalnya dikembangkan untuk Mac OS X, walaupun kaedah yang sama harus digunakan pada OS bukan Unix seperti Windows. Masa untuk bahagian yang membosankan, "pendidikan" dari Instructable.

Langkah 2: Idea Skrip Asas

iTunes merangkumi sistem penilaian 5 bintang untuk membolehkan pengguna menilai lagu. Lagu dengan rating 5 bintang dianggap lagu terbaik manakala lagu dengan rating 1 bintang dianggap sebagai lagu terburuk. Untuk tujuan kami, kami akan menganggap bahawa lagu yang tidak mempunyai penilaian (aka 0 bintang) adalah lagu yang belum berpeluang untuk dinilai oleh pengguna. Secara peribadi, semasa menilai lagu, jika lagu mempunyai penilaian 1 bintang, saya mendapati ia mungkin cukup buruk sehingga tidak memerlukan ruang cakera keras yang berharga yang diambil oleh lagu. Oleh itu, Skrip Perl yang akan saya sampaikan kepada anda dalam Instructable ini akan menghuraikan Perpustakaan iTunes dan menghapus trek yang telah diberi penarafan 1 bintang. Sebagai bonus tambahan, lagu-lagu dapat dinilai semasa pengguna dalam perjalanan menggunakan iPod. Dengan cara ini, anda boleh memilih lagu untuk dihapus semasa dalam perjalanan hanya dengan memberi penilaian, dan lagu tersebut akan dipadamkan secara automatik apabila anda menyegerakkan iPod anda ke komputer anda nanti (jika anda menyegerakkan iPod anda ke komputer anda secara automatik). Sekarang kita tahu apa kita lakukan, mari kita lihat bagaimana kita akan menarik maklumat lagu dari iTunes untuk Perl Skrip.

Langkah 3: Perpustakaan XML: ITunes 'Goto Guy

Perpustakaan XML: ITunes 'Goto Guy
Perpustakaan XML: ITunes 'Goto Guy

Untuk menghapus lagu dari komputer berdasarkan penilaiannya, kami memerlukan 2 maklumat: penilaian lagu dan lokasi lagu. Nasib baik bagi kami terdapat fail berguna yang dapat kami dapatkan semua maklumat yang kami mahukan mengenai iTunes dari: fail XML Perpustakaan Muzik iTunes. Fail XML disebut "iTunes Music Library.xml" dan harus terletak di direktori Muzik anda di Hard Drive utama anda.

Mengenai fail XML: Fail iTunes xml adalah sejenis pangkalan data yang dikendalikan oleh iTunes, dan selalu dikemas kini. Apabila pengubahsuaian dilakukan di iTunes, bahagian yang sesuai dari fail iTunes XML diubah untuk memperhatikan perubahan ini. Contoh entri dari fail iTunes XML saya diberikan di bawah: 1218Track ID1218NameTake On MeArtistA-HaGenre80'sKindMPEG file audioSize3682382Total Time230138Tarikh Diubahsuai2007-09-24T02: 11: 30ZTarikh Ditambah2008-05-28T05: 00: 24ZBit RatePeringkat128Peringkat 200Peringkat 200Peringkat8Peringkat8258 25T01: 26: 58ZRating40Album Rating40Album Rating ComputedPersistent ID9AC5DB9713240B44Track TypeFileLocationfile: //localhost/Volumes/HD1/iTunes%20Music/A-Ha/Unknown%20Album/Take%20On%20Me.mp3File Folder Count di atas Folder fail XML terdiri daripada nilai yang dikelilingi oleh tag gaya HTML. Untuk tujuan skrip, kami akan berminat dengan maklumat Track ID, Nama, Artis, Rating, dan Lokasi. Sekiranya anda melihat fail XML, anda mungkin melihat dari atas bahawa lagu ini mempunyai "rating" 40. iTunes menetapkan setiap lagu sebagai bilangan bulat, antara 0 hingga 100, dengan setiap 20 mata menjadi bintang tambahan untuk penilaian tersebut. Jadi, penarafan 20 sepadan dengan penarafan 1 bintang, penarafan 40 adalah penarafan 2 bintang, dan seterusnya, dengan 100 penarafan 5 bintang. Oleh itu, setelah kita mengetahui tentang fail XML, mari kita mulakan skrip

Langkah 4: Rakan Anda Hash (walaupun anda tidak berada di Amsterdam)

Rakan Anda Hash (walaupun anda tidak berada di Amsterdam)
Rakan Anda Hash (walaupun anda tidak berada di Amsterdam)

Sebelum kita dapat menghapuskan fail, kita memerlukan pangkalan data yang berfungsi yang menghubungkan semua maklumat lagu bersama-sama. Walaupun struktur data yang lebih canggih, seperti susunan hash atau hash hash, dapat digunakan, skrip ini cukup mudah untuk menggunakan daftar hash yang sederhana. Bagi yang belum tahu, hash tidak lebih dari array yang diindeks oleh rentetan, atau jisim pasangan kunci / nilai yang digabungkan. Seseorang boleh menganggap hash sebagai tong besar dengan barang (nilai-nilai) di dalamnya, dan semua yang ada dalam tong kiasan mempunyai tanda (kunci) yang terpasang. Anda boleh mengeluarkan barang dari tong hanya dengan mencari tanda nama. Untuk maklumat lebih lanjut mengenai hash, pautan berikut mungkin berguna: https://www.tutorialspoint.com/perl/perl_hashes.htmKita dapat menggunakan maklumat bahawa setiap lagu dalam fail iTunes XML diberi ID trek unik untuk dilacak lagu. Oleh kerana itu, trackID menjadikan kunci yang sesuai untuk pencucian. Oleh itu, kami dapat menetapkan 4 hash untuk tajuk lagu, artis, penilaian, dan lokasi. Setelah semuanya dibuat, kami dapat mengimbas fail dan mengisi pangkalan data hash kami menggunakan beberapa ungkapan biasa yang ringkas, yang akan ditunjukkan seterusnya.

Langkah 5: Pelajaran Ringkas (Sangat) mengenai Ungkapan Biasa

Untuk mendapatkan entri hash kami dari fail XML, dan juga menjimatkan sedikit masa mencari, kami ingin meminta bantuan salah satu ciri Perl yang lebih kuat: ungkapan biasa. Saya akan melakukan pelajaran yang sangat ringkas mengenai ungkapan biasa, tetapi bagi anda yang mahukan penjelasan yang lebih terperinci, terdapat banyak tutorial ungkapan biasa yang dalam talian. Lihat https://perldoc.perl.org/perlretut.html untuk tutorial ekspresi biasa yang baik. Ringkasnya, ungkapan biasa memberi kami sekumpulan alat untuk melalui rentetan, menggantikan satu rentetan dengan rentetan yang lain, atau menyimpan bahagian tali untuk kegunaan kemudian. Ungkapan biasa menyediakan 2 fungsi, operator pencocokan (m //) dan pengganti (s //), yang akan digunakan untuk projek ini. Untuk menggunakan salah satu fungsi ini dalam konteks penugasan, kami akan menggunakan operator pengikat Perl (= ~), yang digunakan untuk mengikat pola ke rentetan pemboleh ubah pilihan. Contoh:

$ komen = ~ / Purduecer /; #returns true jika string komen $ mengandungi frasa "Purduecer" s / [a-z] / [A-Z] /; #keluarkan semua huruf kecil dalam rentetan dan huruf besarnya dalam rentetan $ _Ciri berguna kedua dari ungkapan biasa ialah pemboleh ubah memori. Dalam ungkapan biasa, anda boleh meletakkan item tertentu dalam kurungan, dan kemudian menggunakan pemboleh ubah memori padanan corak khas $ 1, $ 2, dan lain-lain untuk mengakses bahagian rentetan yang sesuai dengan bahagian ini kemudian.

/ (Instructables) Robot /; #Padankan sebarang baris dengan frasa "Instructables Robot" $ website = $ 1; #Simpan hasil pertandingan pola yang berjaya yang terdapat dalam kumpulan pertama # (dalam kes ini, pemboleh ubah $ 1 mengandungi "Instructables")Akhirnya, dalam ungkapan biasa, terdapat watak-watak tertentu yang melayani tujuan khas. Ini adalah pelarian garis miring terbalik (yang semestinya kelihatan biasa bagi pengaturcara C), kelas watak dan watak metakarakter. Sebagai contoh, untuk mencocokkan mana-mana huruf yang mempunyai tab di kedua sisi, kita boleh katakan

/ / t [a-zA-Z] t /Tanda kurung persegi digunakan dalam ungkapan biasa untuk menentukan kelas watak. Namun, anggaplah bahawa kita mahu mencari teks yang dilampirkan dalam tanda kurung persegi di baris. Kita tidak boleh menulisnya sebagaimana adanya, seperti yang ditunjukkan di bawah

/

/

Langkah 6: Menerapkan Ekspresi Biasa pada Skrip ITunes

Menerapkan Ekspresi Biasa pada Skrip ITunes
Menerapkan Ekspresi Biasa pada Skrip ITunes

Sekarang kita mudah-mudahan mempunyai beberapa konsep asas yang mendasari kekuatan ungkapan biasa, sudah tiba masanya untuk menerapkannya pada skrip iTunes. Semasa membaca kod xml, watak-watak tertentu, seperti garis miring ke depan, sering ditemui. Oleh itu, kami akan memanfaatkan hakikat bahawa pengendali m // membolehkan anda memilih pembatas apa sahaja yang anda mahukan dalam kod (kami akan menggunakan tanda kurung persegi, walaupun pembatas lain tentu akan berfungsi) Pertama, kami hanya perlu membaca sebahagian daripada fail iTunes XML penuh. Bahagian fail yang mengandungi maklumat seperti senarai main, dan lain-lain tidak diperlukan. Baris pertama bahagian senarai main, yang muncul selepas maklumat lagu, kelihatan seperti berikut: Senarai Main Oleh itu, dalam beberapa saat, kita dapat menambahkan pernyataan yang melompat ke akhir pembacaan fail jika baris itu ditemui.

sementara () {#loop_instructions_di sini terakhir jika ($ _ = ~ m [Senarai Main])}}Selanjutnya, untuk membina ID hash, kita dapat menggunakan pohon if-elsif untuk membangun hash pangkalan data kita, menggunakan pemboleh ubah padanan memori yang kita pelajari pada langkah sebelumnya untuk menyimpan nilai ke dalam hash

jika ($ _ = ~ m [(d +)]) {$ id = $ 1; } elsif ($ _ = ~ m [Rating (d +)]) {$ rate_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Nama (. +)]) {$ name_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Artis (. +)]) {$ art_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Locationfile: // localhost (. *)]) {$ loc_hash {$ id} = $ 1; }Sekarang kita telah membina asas pangkalan data hash kita, kita akan meliputi mencari dan membuang fail 1-Bintang, seterusnya ke langkah seterusnya!

Langkah 7: Mencari dan Menghapus Trek 1-Bintang tersebut

Mencari dan Memadam Trek 1-Bintang tersebut
Mencari dan Memadam Trek 1-Bintang tersebut

Sekarang kita telah menyediakan pangkalan data, sudah waktunya untuk mencari trek 1 bintang, sehingga kita dapat menghapusnya. Perl menyediakan konstruk perulangan yang berguna yang disebut gelung foreach yang dapat digunakan untuk melakukan lelang pada semua kunci hash kami. Harus diingat bahawa tidak setiap trek di perpustakaan iTunes anda akan mempunyai entri dalam hash penilaian. Ini kerana lagu yang tidak mempunyai peringkat tidak diberi garis penilaian trek dalam fail iTunes XML. Oleh itu, semasa melingkar melalui hash, kami ingin menggunakan konstruk berikut:

foreach $ id (kunci jenis% rate_hash) {# … masukkan kod gelung di sini}Selepas itu, semudah menggunakan pernyataan berikut

nyahpaut $ loc_hash {$ id} jika $ rate_hash {$ id} == 20;Fungsi unlink yang digunakan dalam contoh kod di atas adalah cara Perl untuk menghapus fail. Anda mungkin tergoda untuk menggunakan panggilan sistem ke fungsi hapus sistem operasi anda, tetapi atas sebab mudah alih, kod yang saya tulis tidak menggunakan panggilan sistem. Sekarang kami mempunyai struktur asas untuk kod kami. Dalam langkah-langkah berikut, kami akan membuat beberapa penyempurnaan pada kod tersebut sehingga anda dapat memiliki skrip berfungsi penuh dan lengkap untuk menyingkirkan bintang 1 yang menjengkelkan itu.

Langkah 8: Larian URI dan Cara Mengelilinginya

Sekiranya anda cuba menjalankan skrip seperti itu, anda akan mengalami banyak kesalahan dari sistem operasi anda, dan jika anda melihat jalan fail yang anda cuba hapuskan, anda mungkin akan menemui watak-watak yang tidak biasa yang terselit di jalur yang tidak diingini. Terdapat peluang yang cukup baik bahawa jalan ini mengandungi watak pelarian URI. Apa itu pelarian URI? Dalam HTML dan XML, watak pelarian URI (alias pelarian URI) adalah watak khas yang digunakan untuk mencari contoh watak tersebut. Contohnya, anda tidak akan pernah melihat ruang kosong sederhana dalam rentetan aksara XML. Akan tetapi, anda akan melihat perwakilan XML ruang kosong sederhana,% 20. (Pasti anda telah melihatnya di bar URL di penyemak imbas anda dan tertanya-tanya apa itu. Nah, sekarang anda tahu) Pelarian URI terdiri daripada tanda% diikuti oleh kod heksadesimal 2 digit yang mewakili nilai ASCII watak. Pada ini intinya, anda boleh menulis sejumlah besar pernyataan ganti pada hash lokasi untuk menggantikan setiap kemungkinan metakarakter yang anda hadapi (iaitu $ loc_hash {$ id} = ~ s /% 20 / /; dan sebagainya). Nasib baik, Perl menyediakan cara yang lebih baik untuk mengurus perkara-perkara ini. Pererl dilengkapi dengan modul yang disebut URI:: Escape, yang mempunyai fungsi terbina dalam, uri_unescape, yang akan melakukan tugas untuk menghilangkan URI pelarian untuk kita. Untuk menggunakan modul, cukup tambahkan baris berikut di bahagian atas kod anda:

gunakan URI:: Escape;Sekarang, setelah kita menetapkan susunan $ loc_hash {$ id} dalam gelung fail XML, kita dapat menambahkan baris berikut selepas itu

uri_unescape ($ loc_hash {$ id});Garis di atas secara automatik menghilangkan sebarang watak pelarian URI. Sebagai bonus tambahan, ia menerjemahkan beberapa watak antarabangsa juga. Saya menjalankan skrip dengan beberapa filepath yang mempunyai konji Jepun di dalamnya, dan fungsi uri_unescape menerjemahkan format XML watak-watak tersebut ke watak asalnya sehingga penyahpautan dapat berjaya menghapus fail tersebut. Sebelum kita meneruskan, satu langkah tambahan mesti diambil. Atas sebab-sebab yang saya tidak faham sepenuhnya, iTunes menyandikan simbol ampersand (&) seperti & dalam rentetan itu. Sekiranya ada yang tahu mengapa ini berlaku, sila beritahu saya. Sementara itu, kami mengatasi masalah ini dengan menambahkan baris berikut di bawah garis uri_unescape

$ loc_hash {$ id} = ~ s / &#/ & /;Sekarang skrip akan mempunyai filepath yang jelas dari watak aneh, dan fungsi unlink akan dapat mencari fail di lokasi yang tepat untuk menghapusnya. Baiklah, jika anda menggunakan Mac OSX (dan mungkin juga kebanyakan OS berasaskan Unix yang lain). Teruskan membaca untuk menjadikan skrip serasi pada sistem operasi lain (iaitu Windows).

Langkah 9: Menambah Keserasian Skrip ke Windows

Menambah Keserasian Skrip ke Windows
Menambah Keserasian Skrip ke Windows

Skrip, seperti yang ditulis sejauh ini, secara berkesan menghilangkan trek pada sistem operasi berasaskan Unix. Untuk menjadikannya berfungsi pada Windows, diperlukan satu tambahan kecil. Tidak seperti Mac dan OS berasaskan Unix yang lain, Windows tidak menyokong konsep direktori root tunggal. Oleh itu, semua nama jalan bermula dengan jilid (C: atau E: atau huruf lain yang dapat anda fikirkan, dalam hal ini) berbanding dengan direktori root (/). Nasib baik bagi kami, Perl mempunyai pemboleh ubah khas, $O (itu adalah modal o, bukan nol), yang memberitahu kita sistem operasi apa yang sedang kita gunakan. Oleh itu, jika nilai yang tersimpan dalam pemboleh ubah tersebut mengandungi "Win", kita akan mahu membuang garis miring utama pada jalur fail lokasi XML kita. Ini dapat dilakukan dengan baris kod berikut (ditambahkan setelah kami berjaya menguraikan lokasi trek dari fail XML):

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

Langkah 10: Skrip Selesai

Skrip Selesai
Skrip Selesai

Terlampir adalah versi saya dari skrip autodeletion iTunes yang lengkap, bagi anda yang hanya mahukan produk akhir dan bukan penjelasan mengenai cara ia berfungsi.

Untuk menggunakan skrip anda ingin menyimpan fail tersebut sebagai file perl (ekstensi.pl) dan kemudian membuatnya dapat dilaksanakan (chmod 751 di Unix, tidak pasti apa itu untuk sistem Windows).

Disyorkan: