Mundarija:

ITunes -ning keraksiz qo'shiqlarini kompyuteringizdan o'chiring: 10 qadam
ITunes -ning keraksiz qo'shiqlarini kompyuteringizdan o'chiring: 10 qadam

Video: ITunes -ning keraksiz qo'shiqlarini kompyuteringizdan o'chiring: 10 qadam

Video: ITunes -ning keraksiz qo'shiqlarini kompyuteringizdan o'chiring: 10 qadam
Video: SHOXRUX - AYRILIQ 2024, Iyul
Anonim
ITunes -ning keraksiz qo'shiqlarini kompyuteringizdan o'chirib tashlang
ITunes -ning keraksiz qo'shiqlarini kompyuteringizdan o'chirib tashlang

Assalomu alaykum, xonimlar va janoblar, bu mening birinchi kodlashni o'rgatadi, shuning uchun sharh berayotganda qurolingizni uyda qoldiring (pichoqlar qabul qilinadi, lekin). Mp3 pleerlarning paydo bo'lishi bilan odamlarga misli ko'rilmagan miqdorda yuk tashish imkoniyati yaratildi. ular bilan cho'ntaklarida musiqa. Odamlarning 5, 10, hatto 15 ming qo'shiqlari (va ba'zi odamlar, bundan ham ko'proq) borligini eshitish odatiy hol emas. Mp3 pleerlardan hech biri Apple -ning iPod va uni boshqaradigan dasturiy ta'minot iTunes -dan ko'ra mashhur emas, lekin bunday katta musiqa kutubxonalari bilan, lekin unchalik yaxshi bo'lmagan yoki yoqmaydigan qo'shiqlardan qutulish biroz zerikarli bo'lib qolishi mumkin. sen endi. ITunes -dagi musiqiy kollektsiyangizni kuzatib borish va sizga yoqmagan qo'shiqlardan xalos bo'lish uchun ko'p yillar kerak bo'ladi. Aynan mana shu yo'riqnomada men sizga qo'shiqlardan avtomatik tarzda qutulish yo'lini ko'rsataman. Perlning yaxshi yordami, bu ko'rsatmalarni takrorlashga urinishda juda foydali bo'ladi, lekin kerak bo'lmasa ham (siz faqat tayyor kodli mahsulotni olib, nusxa ko'chirishingiz mumkin) va u juda yaxshi ishlaydi). Perlga qiziquvchilar uchun men O'Reillydan "Perlni o'rganish" kitobini tavsiya qilaman, bu yaxshi o'qilgan va Perl haqida o'qish imkoniga ega bo'lgan eng yaxshi yozilgan kitoblardan biri. MUHIM: Bu erda keltirilgan usullar ishlaydi Agar to'g'ri bajarilgan bo'lsa, men ahmoqona ish qilsang va qimmatbaho qo'shiqlaringni o'chirib tashlasang, men hech qanday javobgarlikni o'z zimmamga olmayman. Iltimos, quyidagi kabi skriptni yozishdan yoki bajarishdan oldin musiqa fayllarining zaxira nusxasini yaratishni o'ylab ko'ring. Ehtiyotkorlik bilan xato qiling, shunda bizni xafa qilmasligingiz uchun, rahmat. Ogohlantirishni o'qing? (Ha, hatto siz ham, ogohlantirishni o'qimagan odam) Ajoyib! Keling, boshlaylik:-) Yangilash: Ba'zi perl skriptchilari iTunes skriptlarini yozishda juda qiyin bo'lganga o'xshaydi. ITunes bilan bog'liq turli xil skriptlar uchun Teridon skriptlarini ko'rib chiqing.

1 -qadam: Ishga kirishish

Ishni boshlash
Ishni boshlash

Hamma narsada bo'lgani kabi, biz ham bu skriptni ishga tushirishimiz uchun ozgina tayyorgarlik ko'rishimiz kerak. Shunday qilib, siz iTunes -dan qo'shiqlarni avtomatik ravishda o'chirishingiz kerak bo'lgan narsalar: 1) Kompyuter (duh) 2) iTunes (duh duh) 3) Perl (Perlsiz Perl skriptini ishga tushirish qiyin emasmi?) 4) Sizning sevimli muharrir (men o'zim vi va vimning tarafdoriman, lekin har qanday matn muharriri hiyla ishlatishi kerak) 5) iPod (majburiy emas, lekin tez orada aniq bo'ladigan sabablarga ko'ra yaxshi) Perlni olish: Bu erdagi ko'rsatmalar etarlicha sodda bo'lishi kerak: https://www.perl.com/download.csp Perl -ni yuklagan, o'rnatgan va ishga tayyor bo'lganingizdan so'ng, biz nima qilayotganimiz haqida ma'lumotga ega bo'lamiz. Shuni ta'kidlash kerakki, skript dastlab Mac OS X uchun ishlab chiqilgan, garchi xuddi shu usullar Windows kabi Unix bo'lmagan OSlarda ishlashi kerak. Ko'rsatmalarning zerikarli, "tarbiyaviy" qismi uchun vaqt.

2 -qadam: Asosiy skript g'oyasi

ITunes-da foydalanuvchilarga qo'shiqlarga baho berish uchun 5 yulduzli reyting tizimi mavjud. 5 yulduzli reytingli qo'shiqlar eng yaxshi qo'shiqlar, 1 yulduzli qo'shiqlar esa eng yomon qo'shiqlar deb hisoblanadi. Bizning maqsadimiz uchun, reytingga ega bo'lmagan har qanday qo'shiq (aka 0 yulduz) foydalanuvchiga hali baho berish imkoniga ega bo'lmagan, deb hisoblaymiz. toping, bu qo'shiq egallaydigan qimmatbaho qattiq disk maydoniga loyiq emas. Shuning uchun, men sizga ko'rsatma beradigan Perl skriptini iTunes kutubxonasi orqali tahlil qilib, 1 yulduzli reytingga ega bo'lgan barcha treklarni o'chirib tashlayman. Qo'shimcha bonus sifatida, foydalanuvchi ketayotgan paytda qo'shiqlarni baholash mumkin. iPod yordamida. Shunday qilib, siz qo'shiqlarni ketayotganda o'chirib tashlash uchun tanlab olishingiz mumkin va ularni iPod bilan sinxronlashtirgandan so'ng, ular avtomatik ravishda o'chiriladi (agar siz iPod -ni kompyuteringizga avtomatik sinxronlashtirsangiz). biz qilyapmiz, keling, iTunes -dan Perl skript uchun qo'shiq ma'lumotlarini qanday olishimizni ko'rib chiqaylik.

3 -qadam: XML kutubxonasi: ITunes Goto Guy

XML kutubxonasi: ITunes -dan Goto Guy
XML kutubxonasi: ITunes -dan Goto Guy

Kompyuterdan qo'shiqni reytingiga qarab o'chirish uchun bizga 2 ta ma'lumot kerak: qo'shiqning reytingi va qo'shiqning joylashuvi. Yaxshiyamki, biz uchun iTunes haqida xohlagan barcha ma'lumotlarni olish mumkin bo'lgan qulay fayl bor: iTunes Music Library XML fayli. XML fayli "iTunes Music Library.xml" deb nomlanadi va u asosiy qattiq diskdagi Musiqa katalogida bo'lishi kerak.

XML fayli haqida: iTunes xml fayli iTunes tomonidan saqlanadigan va har doim dolzarb bo'lgan ma'lumotlar bazasi. ITunes -da o'zgartirish kiritilganda, iTunes XML faylining tegishli qismi bu o'zgarishni qayd etish uchun o'zgartiriladi. Mening iTunes XML faylimdan namuna yozuvi quyida keltirilgan: 1218Track ID1218NameTake on MeArtistA-HaGenre80'sKindMPEG audio fileSize3682382Umumiy vaqt230138Sana O'zgartirilgan2007-09-24T02: 11: 30ZDate Qo'shilgan2008-05-28T08Play82 25T01: 26: 58ZRating40Album reytingi 40Album reytingi HisoblanganTo'xtovsiz ID9AC5DB9713240B44Track TypeFileLocationfile: //localhost/Volumes/HD1/iTunes%20Music/A-Ha/Unknown%20AlnFolderAlbum XML fayli HTML uslubidagi teglar bilan o'ralgan qiymatlardan iborat. Ssenariy uchun biz trek identifikatori, ism, ijrochi, reyting va joylashuv ma'lumotlari bilan qiziqamiz. Agar siz XML faylini ko'rib chiqayotgan bo'lsangiz, yuqoridan bu qo'shiqning 40 "reytingi" borligini sezishingiz mumkin. ITunes har bir qo'shiqqa 0 dan 100 gacha bo'lgan butun sonni belgilaydi va har 20 ball reyting uchun qo'shimcha yulduz bo'ladi. Shunday qilib, 20 reytingi 1 yulduzli reytingga to'g'ri keladi, 40 reytingi 2 yulduzli reyting va hokazo, 100 bilan 5 yulduzli reyting. XML fayli haqida bilganimizdan so'ng, skript yozishni boshlaymiz

4 -qadam: Sizning do'stingiz xash (agar siz Amsterdamda bo'lmasangiz ham)

Sizning do'stingiz xash (agar siz Amsterdamda bo'lmasangiz ham)
Sizning do'stingiz xash (agar siz Amsterdamda bo'lmasangiz ham)

Fayllarni yo'q qilishdan oldin, bizga qo'shiq haqidagi barcha ma'lumotlarni birlashtiradigan ishchi ma'lumotlar bazasi kerak. Ma'lumotlarning murakkab tuzilmalari, masalan, xeshlar to'plami yoki xesh -xeshlar, ishlatilishi mumkin bo'lsa -da, bu skript oddiy xeshlar ro'yxatidan foydalanishga loyiqdir. satrlar yoki kalit/qiymat juftlarining aralash massasi bilan indekslanadi. Hashni narsalar (qiymatlar) bo'lgan katta barrel sifatida tasavvur qilish mumkin, va metaforik bochkada hamma narsaga teg (kalitlar) biriktirilgan. Siz barreldagi har qanday buyumni tegini topib chiqarib olishingiz mumkin. Xeshlar haqida qo'shimcha ma'lumot olish uchun quyidagi havola foydali bo'lishi mumkin: https://www.tutorialspoint.com/perl/perl_hashes.htm Biz iTunes XML faylidagi har bir qo'shiqni kuzatib borish uchun o'ziga xos trek identifikatori tayinlangani haqidagi ma'lumotdan foydalanishimiz mumkin. qo'shiqlar. Shu sababli, trackID xeshlar uchun ideal kalitni yaratadi. Shuning uchun biz qo'shiq nomi, ijrochi, reyting va joylashuvi uchun 4 ta xeshni o'rnatishimiz mumkin. Bular o'rnatilgandan so'ng, biz faylni skanerlashimiz va xesh ma'lumotlar bazamizni oddiy oddiy iboralar yordamida to'ldirishimiz mumkin, ular keyingi ko'rsatiladi.

5 -qadam: Oddiy iboralar haqida (juda) qisqacha dars

XML -fayllardan xash yozuvlarini olish va qidiruvga ozgina vaqt ajratish uchun biz Perlning kuchli xususiyatlaridan birini - oddiy ifodani chaqirmoqchimiz. Men oddiy iboralar haqida juda qisqa dars o'tkazaman, lekin batafsilroq tushuntirishni istaganlar uchun Internetda juda yaxshi muntazam iboralar darslari mavjud. Oddiy iboralar bo'yicha yaxshi qo'llanma uchun https://perldoc.perl.org/perlretut.html ga qarang Qisqasi, oddiy iboralar bizni qatorlardan o'tish, bir satrni boshqasiga almashtirish yoki qismlarini saqlash uchun vositalar to'plamini beradi. keyinchalik foydalanish uchun mag'lubiyat. Oddiy iboralar ushbu loyiha uchun ishlatiladigan ikkita funktsiyani - mos keladigan (m //) va almashtirish (lar //) operatorlarini ta'minlaydi. Belgilangan kontekstda ushbu funktsiyalardan birini ishlatish uchun biz Perlning majburiy operatoridan foydalanamiz (= ~), u naqshni tanlangan mag'lubiyat o'zgaruvchisiga bog'lash uchun ishlatiladi.

$ comment = ~ /Purduecer /; Agar $ comment satrida "Purduecer" s/[a-z]/[A-Z]/iborasi bo'lsa, #qaytariladi. #barcha kichik harflarni mag'lubiyatga yozib oling va ularni $ _ string bilan bosh harf bilan yozingOddiy iboralarning ikkinchi foydali xususiyati xotira o'zgaruvchilaridir. Oddiy iboralarda siz ba'zi elementlarni qavs ichida joylashtirishingiz mumkin, keyin esa $ 1, $ 2, va hokazo xotira o'zgaruvchilarini ishlatib, keyinchalik bu qismlarga mos keladigan satr qismlariga kirishingiz mumkin.

/(Ko'rsatmalar) Robot/; #Har qanday qatorni "Instructables Robot" iborasi bilan moslang $ website = $ 1; #Parenlarning birinchi to'plamida mavjud bo'lgan muvaffaqiyatli naqsh mosligini saqlash natijasi #(bu holda $ 1 o'zgaruvchisida "Instructables" mavjud)Nihoyat, muntazam iboralarda alohida maqsadga xizmat qiladigan ba'zi belgilar mavjud. Bu teskari chiziqdan qochish (bularning barchasi C dasturchilariga tanish bo'lishi kerak), belgilar sinflari va metakarakterlar. Masalan, har ikki tomonida yorlig'i bo'lgan har qanday bitta harfga mos kelish uchun, deyishimiz mumkin

/\ t [a-zA-Z] t/Bu kvadrat qavslar belgilar sinfini aniqlash uchun muntazam ifodalarda ishlatiladi. Aytaylik, biz satrda kvadrat qavs ichida yozilgan matnni topishni xohladik. Biz uni quyida ko'rsatilgandek yozib bo'lmaydi

/

/

6 -qadam: ITunes skriptiga oddiy iboralarni qo'llash

ITunes skriptiga oddiy iboralarni qo'llash
ITunes skriptiga oddiy iboralarni qo'llash

Endi biz umid qilamizki, oddiy iboralarni qo'llab -quvvatlaydigan asosiy tushunchalarni tushunishimiz mumkin, ularni iTunes skriptiga qo'llash vaqti keldi, xml kodini o'qiyotganda, oldinga chiziq kabi ba'zi belgilar tez -tez uchrab turadi. Shuning uchun, biz m // operatori sizga kodda xohlagan chegarachini tanlab olish imkoniyatidan foydalanamiz (biz kvadrat qavsdan foydalanamiz, lekin boshqa ajratuvchilar albatta ishlaydi) Birinchidan, biz faqat bir qismini o'qishimiz kerak. to'liq iTunes XML fayli. Faylning ijro ro'yxatlari va boshqalar kabi ma'lumotlarni o'z ichiga olgan qismlari shart emas. Qo'shiq ma'lumotidan keyin keladigan pleylistlar bo'limining birinchi qatori quyidagicha ko'rinadi: Ijro ro'yxatlariShuning uchun, bir muncha vaqt o'tgach, biz bu satrga duch kelsak, fayl o'qish oxiriga o'tadigan bayonot qo'shishimiz mumkin.

while () {#loop_instructions_here last if ($ _ = ~ m [Pleylistlar])}Keyingi, xesh identifikatorlarini yaratish uchun biz qiymatlarni xeshlarga saqlash uchun oldingi qadamda bilib olgan xotira mos keladigan o'zgaruvchilaridan foydalanib, ma'lumotlar bazasi xeshlarini yaratish uchun if-elsif daraxtidan foydalanishimiz mumkin.

agar ($ _ = ~ m [( d+)]) {$ id = $ 1; } elsif ($ _ = ~ m [Baholash ( d+)]) {$ rate_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Ism (.+)]) {$ name_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Ijrochi (.+)]) {$ art_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Joylashuv fayli: // localhost (.*)]) {$ loc_hash {$ id} = $ 1; }Endi biz xesh ma'lumotlar bazasining asosini yaratganimizdan so'ng, biz 1 yulduzli fayllarni topish va o'chirishni o'z ichiga olamiz, shuning uchun keyingi bosqichga o'tamiz!

7-qadam: 1 yulduzli treklarni topish va o'chirish

1 yulduzli treklarni topish va o'chirish
1 yulduzli treklarni topish va o'chirish

Ma'lumotlar bazasi o'rnatilgandan so'ng, biz ularni o'chirish uchun 1 yulduzli treklarni qidirish vaqti keldi. Perl bizning xeshlarimizning barcha tugmalarini takrorlash uchun ishlatilishi mumkin bo'lgan foreach loop deb nomlangan foydali konstruktsiyani taqdim etadi, shuni ta'kidlash kerakki, iTunes kutubxonangizdagi har bir trekda reyting xeshida yozuv bo'lmaydi. Buning sababi shundaki, reytingga ega bo'lmagan qo'shiqlarga iTunes XML faylida trek reyting chizig'i berilmagan. Shuning uchun, xeshlarni aylantirganda, biz quyidagi konstruktsiyadan foydalanmoqchimiz:

foreach $ id (saralash kalitlari %rate_hash) { #… pastadir kodini shu erga qo'shing}Shundan so'ng, bu quyidagi iborani ishlatish kabi oddiy

$ loc_hash {$ id} ni uzing, agar $ rate_hash {$ id} == 20;Yuqoridagi namuna kodida ishlatilgan ajratish funktsiyasi Perlning fayllarni o'chirish usuli hisoblanadi. Siz operatsion tizimingizning o'chirish funktsiyasiga tizimli qo'ng'iroqni ishlatishni xohlashingiz mumkin, lekin ko'chirish sabablari tufayli men yozgan kod tizim qo'ng'irog'idan foydalanmaydi. Endi bizda kodning asosiy tuzilishi mavjud. Keyingi bosqichlarda, biz kodni biroz takomillashtiramiz, shunda siz 1-yulduzlardan qutulish uchun to'liq funktsional skriptga ega bo'lasiz.

8 -qadam: URI qochib ketadi va ularni qanday qilib aylanib o'tish mumkin

Agar siz skriptni avvalgidek ishlatishga harakat qilsangiz, siz operatsion tizimingizda ko'plab xatolarga duch kelasiz va agar siz o'chirmoqchi bo'lgan fayl yo'llarini ko'rib chiqsangiz, yo'llarda noan'anaviy belgilar o'rnatilgan bo'lishi mumkin. Bu yo'llar URI qochish belgilarini o'z ichiga olishi uchun juda yaxshi imkoniyat bor. HTML va XML -da, URI -dan qochish belgilar (aka URI -dan qochish) - bu belgining so'zma -so'z misollarini qidirish uchun ishlatiladigan maxsus meta -belgilar. Masalan, siz XML belgilar qatorida hech qachon oddiy bo'sh joyni ko'rmaysiz. Siz oddiy bo'shliqning %20 xml tasvirini ko'rasiz. (Siz, albatta, bularni brauzeringizdagi URL satrida ko'rdingiz va ular nima ekanligi bilan qiziqdingiz. Xo'sh, endi bilasiz) URI qochishi % belgisidan iborat bo'lib, belgining ASCII qiymatini ifodalovchi 2 xonali o'n oltilik koddan iborat. Shuni ta'kidlash kerakki, siz uchrashadigan har qanday metaxarakterni almashtirish uchun joylashuv xeshiga bir nechta almashtirish so'zlarini yozishingiz mumkin (ya'ni $ loc_hash {$ id} = ~ s/%20//va boshqalar). Yaxshiyamki, Perl bu narsalarga g'amxo'rlik qilishning eng yaxshi usulini taqdim etadi. Perl URI:: Escape deb nomlangan modul bilan ta'minlangan bo'lib, u uri_unescape o'rnatilgan funktsiyasiga ega bo'lib, URI qochishlarini yo'q qiladi.. Moduldan foydalanish uchun kodning yuqori qismiga quyidagi qatorni qo'shing:

URI:: Escape -dan foydalaning;Endi $ loc_hash {$ id} qatorini XML fayl tsikliga tayinlaganimizdan so'ng, biz keyingi qatorni keyinchalik qo'shishimiz mumkin.

uri_unescape ($ loc_hash {$ id});Yuqoridagi satr URI qochish belgilarini avtomatik ravishda yo'q qiladi. Qo'shimcha bonus sifatida u ba'zi xalqaro belgilarni ham tarjima qiladi. Men skriptni yapon konjisi bo'lgan bir nechta filepathlar bilan ishga tushirdim va uri_unescape funktsiyasi ushbu belgilarning XML formatlarini asl belgilariga tarjima qildi, shunda ajratish faylni muvaffaqiyatli o'chirib yuborishi mumkin edi.. Men tushunmagan sabablarga ko'ra, iTunes ampersand (&) belgisini o'z qatorlarida kodlaydi. Agar kimdir buning sababini bilsa, menga xabar bering. Bu orada biz uri_unescape qatoriga quyidagi qatorni qo'shib, bu muammoni hal qilamiz

$ loc_hash {$ id} = ~ s/&#/&/;Endi skriptda g'aroyib belgilar o'chirilgan fayl yo'llari bo'ladi va ularni o'chirish funktsiyasi kerakli joydan fayllarni topa oladi. Xo'sh, agar siz Mac OSX dan foydalanayotgan bo'lsangiz (va, ehtimol, Unix-ga asoslangan boshqa OS-lar ham). Skriptni boshqa operatsion tizimlarga moslashtirish uchun o'qing (ya'ni Windows).

9 -qadam: Windows -ga skript mosligini qo'shish

Windows -ga skript mosligini qo'shish
Windows -ga skript mosligini qo'shish

Ssenariy, hozirgacha yozilganidek, Unix-ga asoslangan operatsion tizimlaridagi izlarni samarali o'chiradi. Windows-da ishlash uchun bitta kichik qo'shimcha kerak, Mac va Unix-ga asoslangan boshqa OS-lardan farqli o'laroq, Windows bitta ildiz katalog kontseptsiyasini qo'llab-quvvatlamaydi. Shuning uchun, barcha yo'l nomlari ildiz katalogidan farqli o'laroq (/: E) yoki hajmidan (C: yoki E: yoki siz o'ylaydigan boshqa harfdan) boshlanadi.O (bu katta emas, balki nol), bu bizga hozirda qaysi operatsion tizimdan foydalanayotganimizni bildiradi. Shunday qilib, agar bu o'zgaruvchida saqlangan qiymat "Win" ni o'z ichiga olsa, biz XML joylashuv fayl yo'lining etakchi chizig'ini olib tashlamoqchimiz. Buni quyidagi kod qatori yordamida amalga oshirish mumkin (biz XML faylidan trekning joylashishini muvaffaqiyatli tahlil qilganimizdan so'ng qo'shiladi):

$ loc_hash {$ id} = substr ($ loc_hash {$ id}, 1), agar $^O = ~ /Win /i;Endi skript OS X yoki Windowsda ishlasa ham ishlaydi.

10 -qadam: tugallangan skript

Tugallangan skript
Tugallangan skript

Bitirilgan iTunes avtodeletsion skriptining mening versiyasi ilova qilingan, siz uchun bu qanday ishlashini tushuntirish emas, balki oxirgi mahsulotni xohlaganlar uchun.

Skriptni ishlatish uchun siz faylni perl fayli (.pl kengaytmasi) sifatida saqlamoqchisiz va keyin uni bajariladigan qilib qo'yishingiz kerak bo'ladi (Unix -da chmod 751, bu Windows tizimlari uchun nima ekanligini aniq bilmaydi).

Tavsiya: