Talaan ng mga Nilalaman:

Tanggalin ang Mga Hindi Ginustong Mga Kanta ITunes Mula sa Iyong Computer: 10 Hakbang
Tanggalin ang Mga Hindi Ginustong Mga Kanta ITunes Mula sa Iyong Computer: 10 Hakbang

Video: Tanggalin ang Mga Hindi Ginustong Mga Kanta ITunes Mula sa Iyong Computer: 10 Hakbang

Video: Tanggalin ang Mga Hindi Ginustong Mga Kanta ITunes Mula sa Iyong Computer: 10 Hakbang
Video: ComfyUI Tutorial - How to Install ComfyUI on Windows, RunPod & Google Colab | Stable Diffusion SDXL 2024, Nobyembre
Anonim
Tanggalin ang Mga Hindi Ginustong Mga Kanta ITunes Mula sa Iyong Computer
Tanggalin ang Mga Hindi Ginustong Mga Kanta ITunes Mula sa Iyong Computer

Hoy mga kababaihan at ginoo, ito ang aking unang pagtuturo sa pag-coding, kaya't mangyaring, kapag nagkomento, iwanan ang iyong mga baril sa bahay (gayunpaman, katanggap-tanggap ang mga kutsilyo). Sa pagkakaroon ng mga mp3 player, ginawang posible para sa mga tao na magdala ng walang uliran na halaga ng musika sa paligid kasama nila ang kanilang mga bulsa. Hindi bihirang marinig ang mga tao na mayroong mga koleksyon na 5, 10, kahit 15 libong mga kanta (at ilang mga tao, mas marami pa). Sa mga manlalaro ng mp3, walang sinuman ang mas tanyag kaysa sa iPod's Apple at ang software na nagpapatakbo nito, iTunes. Sa gayong malalaking aklatan ng musika, gayunpaman, maaari itong maging medyo nakakapagod upang mapupuksa ang mga kanta na hindi maganda ang tunog o nakakaakit ikaw na Maaari itong tumagal ng ilang edad upang subaybayan ang iyong mga koleksyon ng musika sa iTunes at mapupuksa ang mga kanta na hindi mo gusto. Dito pumapasok ang itinuturo na ito. Sa itinuturo na ito, ipapakita ko sa iyo ang isang paraan upang awtomatikong mapupuksa ang mga kanta iyon ay simpleng kakila-kilabot lamang, na may ilang tulong mula sa aking mabuting kaibigan, Perl. Ang isang mahusay na pangunahing kaalaman sa Perl ay lubos na kapaki-pakinabang kapag sinusubukang ulitin ang itinuturo na ito, kahit na hindi kinakailangan (tiyak na maaari mo lamang kunin ang natapos na produkto ng code at kopyahin / i-paste ito at ito ay gagana nang maayos). Para sa mga interesado sa Perl, inirerekumenda ko ang librong "Pag-aaral ng Perl" mula sa O'Reilly, magandang basahin ito at isa sa mga pinakamahusay na nakasulat na libro tungkol sa Perl na nagkaroon ako ng pagkakataong basahin. MAHALAGA: Habang gagana ang mga pamamaraang ipinakita dito kung nagawa nang tama, hindi ko at hindi simpleng tatanggap ng anumang responsibilidad kung gumawa ka ng isang hangal at tatanggalin ang iyong mahahalagang kanta. Mangyaring masidhing pag-isipan ang pag-back up ng iyong mga file ng musika bago subukang magsulat o magpatupad ng isang script tulad ng sumusunod. Magkamali lamang sa pag-iingat upang wala kaming nasaktan na damdamin kung hindi, salamat. Basahin ang babala? (Oo, kahit ikaw, taong hindi nabasa ang babala) Mahusay! Magsimula tayo:-) Update: Tila ang ilang mga perl scripter ay mahirap na gumana sa pagsusulat ng mga script sa iTunes. Para sa iba't ibang mga script na nauugnay sa iTunes, tingnan ang Mga Script ni Teridon.

Hakbang 1: Pagsisimula

Nagsisimula
Nagsisimula

Tulad ng lahat ng mga bagay, mayroong kaunting paghahanda na kailangang gawin bago natin mapatakbo ang script na ito. Kaya, mga bagay na kakailanganin mong awtomatikong tanggalin ang mga kanta mula sa iTunes: 1) Isang computer (duh) 2) iTunes (doble duh) 3) Perl (mahirap patakbuhin ang isang script ng Perl nang walang Perl, hindi mo sasabihin?) 4) Iyong paboritong editor (Ako ay tagapagtaguyod ng vi at vim aking sarili, ngunit ang anumang text editor ay dapat gawin ang bilis ng kamay) 5) Isang iPod (hindi sapilitan, ngunit magandang magkaroon ng mga kadahilanang malilinaw kaagad) Pagkuha ng Perl: Sundin ang mga tagubilin dito, dapat ay sapat na simple: https://www.perl.com/download.cspKapag na-download mo, na-install, at handa nang pumunta sa Perl, gugustuhin namin ang ilang impormasyon sa background sa kung ano ang ginagawa namin. Dapat pansinin na ang script ay orihinal na binuo para sa Mac OS X, bagaman ang parehong pamamaraan ay dapat na gumana sa mga hindi batay sa Unix na OS tulad ng Windows. Oras para sa pagbubutas, er, "pang-edukasyon" na bahagi ng Instructable.

Hakbang 2: Ang Pangunahing Idea ng Script

Kasama sa iTunes ang isang 5-star system system upang payagan ang mga gumagamit na mag-rate ng mga kanta. Ang mga kanta na may 5-star rating ay itinuturing na pinakamahusay na mga kanta habang ang mga kanta na may 1-star rating ay ipinapalagay na ilan sa mga pinakapangit na kanta. Para sa aming mga hangarin, ipalagay namin na ang anumang kanta na walang rating (aka 0 na mga bituin) ay isa na wala pang pagkakataong mai-rate ang gumagamit. Personal, kapag nag-rate ng mga kanta, kung ang isang kanta ay may 1-star rating, I hanapin ito ay marahil sapat na masama na hindi ito karapat-dapat sa mahalagang puwang ng hard drive na kinukuha ng kanta. Samakatuwid, ang Perl Script na ipapakita ko sa iyo sa Instructable na ito ay mai-parse sa pamamagitan ng iTunes Library at tatanggalin ang anumang track na naitalaga ng isang 1-star rating. Bilang isang idinagdag na bonus, ang mga kanta ay maaaring ma-rate habang ang gumagamit ay on the go gamit ang isang iPod. Sa ganitong paraan, maaari kang pumili ng mga kanta para sa pagtanggal habang on the go sa pamamagitan lamang ng pag-rate sa kanila, at awtomatiko silang matatanggal kapag na-sync mo ang iyong iPod sa iyong computer sa ibang pagkakataon (kung awtomatiko mong nai-sync ang iyong iPod sa iyong computer). Ngayon alam na natin kung ano ginagawa namin, tingnan natin kung paano namin kukuha ang impormasyon ng kanta mula sa iTunes para sa Perl Script.

Hakbang 3: Ang XML Library: Gandang Guy ng ITunes

Ang XML Library: Gandang Guy ng ITunes
Ang XML Library: Gandang Guy ng ITunes

Upang matanggal ang isang kanta mula sa computer batay sa rating nito, nangangailangan kami ng 2 piraso ng impormasyon: ang rating ng kanta at ang lokasyon ng kanta. Sa kasamaang palad para sa amin mayroong isang madaling gamiting file na maaari naming makuha ang lahat ng impormasyong nais namin tungkol sa iTunes mula sa: ang iTunes Music Library XML file. Ang XML file ay tinawag na "iTunes Music Library.xml" at dapat na matatagpuan sa iyong direktoryo ng Musika sa iyong pangunahing Hard Drive.

Tungkol sa XML file: Ang iTunes xml file ay isang uri ng database na pinapanatili ng iTunes, at laging pinapanatiling napapanahon. Kapag ang isang pagbabago ay ginawa sa iTunes, ang kaukulang bahagi ng iTunes XML file ay binago upang tandaan ang pagbabagong ito. Ang isang sample na entry mula sa aking file na iTunes XML ay ibinibigay sa ibaba: 1218Track ID1218NameTake On MeArtistA-HaGenre80'sKindMPEG audio fileSize3682382Total Time230138Date Modified2007-09-24T02: 11: 30ZDate Add2008-05-28T05: 00: 24ZBit Rate128Pagbigay ng Petsa21023297Pagbago ng Petsa21023297 25T01: 26: 58ZRating40Album Rating40Album Rating ComputePersistent ID9AC5DB9713240B44Track TypeFileLocationfile: //localhost/Volumes/HD1/iTunes%20Music/A-Ha/Unknown%20Album/Take%20On%20Me.mp3File Folder Count4Ang Libre na Folder na makikita sa itaas ang XML file ay binubuo ng mga halagang napapaligiran ng mga tag na istilong HTML. Para sa mga layunin ng script, magiging interesado kami sa Track ID, Pangalan, Artist, Rating, at Lokasyon na mga piraso ng impormasyon. Kung tinitingnan mo ang XML file, maaari mong mapansin mula sa itaas na ang kantang ito ay may "rating" na 40. Itinalaga ng iTunes ang bawat kanta ng isang integer, mula 0 hanggang 100, na bawat 20 puntos ay isang karagdagang bituin para sa rating. Kaya, ang isang rating ng 20 ay tumutugma sa isang 1 bituin na rating, ang isang rating na 40 ay isang 2-star na rating, at iba pa, na may 100 na isang 5-star na rating. Kaya ngayon na alam natin ang tungkol sa XML file, simulan natin ang pag-script

Hakbang 4: Ang Kaibigan Mo ang Hash (kahit na Wala Ka sa Amsterdam)

Ang Kaibigan mo ng Hash (kahit na Wala ka sa Amsterdam)
Ang Kaibigan mo ng Hash (kahit na Wala ka sa Amsterdam)

Bago namin matanggal ang mga file, kailangan namin ng isang gumaganang database na magkaugnay ng lahat ng impormasyon ng kanta. Habang ang mas sopistikadong mga istraktura ng data, tulad ng isang hanay ng mga hash o hash ng mga hash, ay maaaring magamit, ang script na ito ay sapat na simple upang karapat-dapat ang paggamit ng isang simpleng listahan ng mga hash. Para sa hindi napaalam, ang isang hash ay hindi hihigit sa isang array na kung saan ay na-index ng mga string, o isang jumbled na masa ng mga pares ng key / halaga. Maaaring isipin ng isang tao ang isang hash bilang isang malaking bariles na may mga bagay (ang mga halaga) sa loob nito, at lahat ng nasa talinghagang talinghaga ay mayroong isang tag (mga susi) na nakakabit. Maaari mong hilahin ang anumang item sa bariles sa pamamagitan lamang ng paghahanap ng tag nito. Para sa karagdagang impormasyon sa mga hash, maaaring maging kapaki-pakinabang ang sumusunod na link: https://www.tutorialspoint.com/perl/perl_hashes.htmMaaari naming magamit ang impormasyon na ang bawat kanta sa iTunes XML file ay nakatalaga ng isang natatanging track ID upang subaybayan ang mga kanta. Dahil dito, gumagawa ang trackID ng isang perpektong susi para sa mga hash. Samakatuwid, maaari naming i-set up ang 4 na mga hash para sa pamagat ng kanta, artist, rating, at lokasyon. Kapag natatag na ang mga ito, maaari kaming mag-scan sa pamamagitan ng file at punan ang aming hash database gamit ang ilang simpleng regular na expression, na ipapakita sa susunod.

Hakbang 5: Isang (napaka) Maikling Aralin sa Mga Regular na Pagpapahayag

Upang makuha ang aming mga entry sa hash mula sa XML file, at makatipid din ng kaunting oras sa paghahanap, gugustuhin naming tumawag sa tulong ng isa sa mas malakas na tampok ni Perl: ang regular na pagpapahayag. Gagawa ako ng isang napaka-maikling aralin sa mga regular na expression, ngunit para sa iyo na nais ng mas detalyadong mga paliwanag, maraming mga mahusay na regular na tutorial sa pagpapahayag sa online. Suriin ang https://perldoc.perl.org/perlretut.html para sa isang mahusay na regular na expression sa pagpapahayag. Sa madaling sabi, ang regular na mga expression ay nagbibigay sa amin ng isang hanay ng mga tool upang dumaan sa mga string, palitan ang isang string ng isa pang string, o pag-save ng mga bahagi ng isang string para magamit sa ibang pagkakataon. Ang mga regular na expression ay nagbibigay ng 2 pagpapaandar, ang pagtutugma (m //) at kapalit (s //) na mga operator, na gagamitin para sa proyektong ito. Upang magamit ang alinman sa mga pagpapaandar na ito sa isang konteksto ng pagtatalaga, gagamitin namin ang nagbubuklod na operator ng Perl (= ~), na ginagamit upang magbigkis ng isang pattern sa isang variable ng pagpipilian ng string. Mga halimbawa:

$ comment = ~ / Purduecer /; #returns true kung ang string ng $ comment ay naglalaman ng pariralang "Purduecer" s / [a-z] / [A-Z] /; # kunin ang lahat ng mga maliit na titik sa string at i-capitalize ang mga ito sa $ _ stringAng pangalawang kapaki-pakinabang na tampok ng mga regular na expression ay ang mga variable ng memorya. Sa mga regular na expression, maaari kang maglagay ng ilang mga item sa panaklong, at pagkatapos ay gamitin ang mga espesyal na pattern ng mga variable ng memorya ng $ 1, $ 2, atbp upang ma-access ang mga bahagi ng mga string na tumugma sa mga bahaging ito sa paglaon.

/ (Mga Tagubilin) Robot /; #Match ang anumang linya sa pariralang "Instructables Robot" $ website = $ 1; #Nag-save ng resulta ng matagumpay na pagtutugma ng pattern na nilalaman sa unang hanay ng mga parens # (sa kasong ito, ang variable na $ 1 ay naglalaman ng "Mga Tagubilin")Panghuli, sa mga regular na expression, may ilang mga character na nagsisilbi ng isang espesyal na layunin. Ito ang mga backslash escape (lahat na dapat ay pamilyar sa mga programmer ng C), mga klase ng character at metacharacter. Halimbawa, upang tumugma sa anumang solong titik na may isang tab sa magkabilang panig, maaari naming sabihin

/ / t [a-zA-Z] t /Ang mga square bracket na iyon ay ginagamit sa mga regular na expression upang tukuyin ang isang klase ng character. Ipagpalagay, gayunpaman, nais naming maghanap ng teksto na nakapaloob sa mga square bracket sa linya. Hindi namin simpleng maisulat ito tulad ng, tulad ng ipinakita sa ibaba

/

/

Hakbang 6: Paglalapat ng Mga Regular na expression sa ITunes Script

Paglalapat ng Mga Regular na expression sa ITunes Script
Paglalapat ng Mga Regular na expression sa ITunes Script

Ngayon na inaasahan naming magkaroon ng ilang pag-uusap sa pangunahing batayan ng mga konsepto na nagpapatakbo ng regular na mga expression, oras na upang ilapat ang mga ito sa script ng iTunes. Kapag ang pagbabasa ng xml code, ang ilang mga character, tulad ng forward slash, ay madalas na nakatagpo. Samakatuwid, sasamantalahin namin ang katotohanan na ang m // operator ay magpapili sa iyo ng anumang mga delimiter na gusto mo sa code (gagamitin namin ang mga square bracket, kahit na ang iba pang mga delimiter ay tiyak na gagana) Una, kailangan lamang naming basahin ang isang bahagi ng ang buong file ng iTunes XML. Ang mga bahagi ng file na naglalaman ng impormasyon tulad ng mga playlist, atbp ay hindi kinakailangan. Ang unang linya ng seksyon ng mga playlist, na pagkatapos ng impormasyon ng kanta, ay katulad ng mga sumusunod: Mga Playlist Samakatuwid, sa isang habang loop, maaari naming idagdag sa isang pahayag na tumatalon sa dulo ng pagbabasa ng file kung ang linya na nakatagpo.

habang () {#loop_instructions_here huling kung ($ _ = ~ m [Mga Playlist])}Susunod, upang mabuo ang mga hash ID, maaari kaming gumamit ng isang if-elsif tree upang mabuo ang aming mga hash sa database, gamit ang mga variable ng pagtutugma ng memorya na natutunan namin sa nakaraang hakbang upang mai-save ang mga halaga sa mga hash

kung ($ _ = ~ m [( d +)]) {$ id = $ 1; } elsif ($ _ = ~ m [Rating ( d +)]) {$ rate_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Pangalan (. +)]) {$ name_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Artist (. +)]) {$ art_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Locationfile: // localhost (. *)]) {$ loc_hash {$ id} = $ 1; }Ngayon na binuo namin ang batayan ng aming hash database, sasakupin namin ang paghahanap at pag-alis ng mga file na 1-Star, kaya't pasulong sa susunod na hakbang!

Hakbang 7: Paghahanap at Pagtanggal sa Mga 1-Star Tracks

Ang Paghahanap at Pagtanggal ng Mga 1-Star Tracks
Ang Paghahanap at Pagtanggal ng Mga 1-Star Tracks

Ngayon na mayroon na kaming naka-set up na database, oras na upang manghuli para sa mga 1-star track, upang matanggal namin ang mga ito. Nagbibigay ang Perl ng isang kapaki-pakinabang na looping konstruksyon na tinatawag na isang frontach loop na maaaring magamit upang umulit sa lahat ng mga susi ng aming mga hash. Dapat pansinin na hindi bawat track sa iyong iTunes library ay magkakaroon ng isang entry sa hash ng mga rating. Ito ay dahil ang mga kanta na walang rating ay hindi binibigyan ng isang linya ng rating ng track sa iTunes XML file. Samakatuwid, kapag umikot sa mga hash, nais naming gamitin ang sumusunod na konstruksyon:

i-advance ang $ id (uri-uriin ang mga key% rate_hash) {#… ipasok ang looping code dito}Pagkatapos nito, ito ay kasing simple ng paggamit ng sumusunod na pahayag

i-unlink ang $ loc_hash {$ id} kung $ rate_hash {$ id} == 20;Ang pagpapaandar na pag-unlink na ginamit sa sample code sa itaas ay paraan ng Perl ng pagtanggal ng mga file. Maaari kang matukso na gumamit ng isang tawag sa system sa pag-andar ng iyong operating system, ngunit para sa mga kadahilanan na maaaring ilipat ang code na aking isinulat ay hindi gumagamit ng tawag sa system. Mayroon na kaming pangunahing istraktura para sa aming code. Sa mga sumusunod na hakbang, gagawa kami ng ilang mga pagpipino sa code upang magkaroon ka ng isang buong tampok na, script na gumagana upang mapupuksa ang mga pesky na 1-star.

Hakbang 8: Mga Escape ng URI at Paano Paikutan ang mga Ito

Kung susubukan mong patakbuhin ang script tulad ng dati, mahahanap mo ang maraming mga error mula sa iyong operating system, at kung titingnan mo ang mga file path na sinusubukan mong tanggalin, maaari kang makahanap ng mga hindi pangkaraniwang character na naka-embed sa mga pathway na hindi kanais-nais. Mayroong isang magandang pagkakataon na ang mga landas na ito ay naglalaman ng mga character na makatakas sa URI. Ano ang mga pagtakas sa URI? Sa HTML at XML, ang mga character na makatakas sa URI (aka ang pagtakas sa URI) ay mga espesyal na metachar character na ginamit upang maghanap ng mga literal na pagkakataon ng character na iyon. Halimbawa, hindi ka makakakita ng isang simpleng whitespace sa isang XML character string. Gayunpaman, makikita mo ang representasyon ng XML ng isang simpleng whitespace,% 20. (Tiyak na nakita mo ang mga ito sa URL bar sa iyong browser at nagtaka kung ano ito. Buweno, alam mo na) Ang isang pagtakas sa URI ay binubuo ng isang% sign na sinusundan ng isang 2-digit na hexadecimal code na kumakatawan sa halaga ng ASCII ng character. Dito point, maaari kang sumulat ng isang buong bungkos ng mga pagpapalit ng pahayag sa hash ng lokasyon upang mapalitan ang bawat posibleng metacharacter na nakasalubong mo (ie $ loc_hash {$ id} = ~ s /% 20 / /; at iba pa). Gayunpaman, sa kabutihang palad, si Perl ay nagbibigay ng isang mas mahusay na paraan upang mapangalagaan ang mga bagay na ito. Ang Perl ay kasama ng isang module na tinatawag na URI:: Escape, na may built-in na function, uri_unescape, na gagawa ng trabaho na alisin ang URI na makatakas para sa amin. Upang magamit ang module, idagdag lamang ang sumusunod na linya sa tuktok ng iyong code:

gumamit ng URI:: Escape;Ngayon, pagkatapos naming italaga ang $ loc_hash na {$ id} array sa XML file loop, maaari naming idagdag ang sumusunod na linya pagkatapos

uri_unescape ($ loc_hash {$ id});Ang linya sa itaas ay awtomatikong tinatanggal ang anumang mga character na makatakas sa URI. Bilang isang idinagdag na bonus, isinasalin din nito ang ilang mga international character din. Pinatakbo ko ang script gamit ang ilang mga filepaths na mayroong konji sa kanila, at isinalin ng pagpapaandar ng uri_unescape ang mga XML na format ng mga character na iyon sa kanilang orihinal na mga character upang matagumpay na matanggal ang pag-unlink ng file. Bago kami magpatuloy, isang karagdagang hakbang ang dapat gawin. Para sa mga kadahilanang hindi ko lubos na nauunawaan, nai-encode ng iTunes ang simbolo ng ampersand (&) bilang & sa mga string nito. Kung may nakakaalam kung bakit ito, mangyaring ipaalam sa akin. Pansamantala, inaalis namin ang isyung ito sa pamamagitan ng pagdaragdag ng sumusunod na linya sa ilalim ng linya ng uri_unescape

$ loc_hash {$ id} = ~ s / &#/ & /;Ngayon ang script ay magkakaroon ng mga filepath na malinaw sa mga kakatwang character, at ang pag-andar ng unlink ay makakahanap ng mga file sa kanilang mga tamang lokasyon upang matanggal ang mga ito. Kaya, gagawin nito kung gumagamit ka ng Mac OSX (at marahil karamihan sa iba pang mga OS na batay sa Unix din). Basahin ang para sa paggawa ng script na katugma sa iba pang mga operating system (lalo na, Windows).

Hakbang 9: Pagdaragdag ng Pagkatugma sa Script sa Windows

Pagdaragdag ng pagiging tugma ng Script sa Windows
Pagdaragdag ng pagiging tugma ng Script sa Windows

Ang script, tulad ng nakasulat sa ngayon, ay mabisang tinanggal ang mga track sa mga operating system na nakabatay sa Unix. Upang mapagana ito sa Windows, kailangan ng isang menor de edad na karagdagan. Hindi tulad ng Mac at iba pang mga OS na nakabatay sa Unix, hindi sinusuportahan ng Windows ang konsepto ng isang solong direktoryo ng ugat. Samakatuwid, ang lahat ng mga pathname ay nagsisimula sa isang dami (C: o E: o anumang iba pang liham na maaari mong maiisip, para sa bagay na iyon) na taliwas sa direktoryo ng ugat (/). Sa kabutihang palad sa amin, ang Perl ay may isang espesyal na variable, $O (iyon ang kapital o, hindi isang zero), na nagsasabi sa amin kung anong operating system ang kasalukuyang ginagamit namin. Kaya, kung ang halagang nakaimbak sa variable na iyon ay naglalaman ng "Manalo", gugustuhin naming alisin ang nangungunang slash sa aming XML na lokasyon ng filepath. Magagawa ito sa sumusunod na linya ng code (naidagdag pagkatapos naming matagumpay na mai-parse ang lokasyon ng isang track mula sa XML file):

$ loc_hash {$ id} = substr ($ loc_hash {$ id}, 1) kung $ ^ O = ~ / Win / i;Ngayon, gagana ang iskrip kung tatakbo ito sa OS X o Windows.

Hakbang 10: Ang Kumpletong Script

Ang Kumpletong Script
Ang Kumpletong Script

Nakalakip ang aking bersyon ng nakumpletong iTunes autodeletion script, para sa iyo na nais lamang ang end na produkto at hindi ang paliwanag sa kung paano ito gumagana.

Upang magamit ang script nais mong i-save ang file bilang isang perl file (.pl extension) at pagkatapos ay gawin itong maisagawa (chmod 751 sa Unix, hindi sigurado kung ano ito para sa mga Windows system).

Inirerekumendang: