Мазмуну:

Бул керексиз ITunes ырларын компьютериңизден өчүрүңүз: 10 кадам
Бул керексиз ITunes ырларын компьютериңизден өчүрүңүз: 10 кадам

Video: Бул керексиз ITunes ырларын компьютериңизден өчүрүңүз: 10 кадам

Video: Бул керексиз ITunes ырларын компьютериңизден өчүрүңүз: 10 кадам
Video: Нурлан Насип - Керексиң / Жаңы ыр 2022 2024, Ноябрь
Anonim
Бул керексиз ITunes ырларын компьютериңизден жок кылыңыз
Бул керексиз ITunes ырларын компьютериңизден жок кылыңыз

Саламатсыздарбы айымдар жана мырзалар, бул менин биринчи коддоо көрсөтмөм, андыктан сураныч, комментарий берип жатканда, тапанчаңызды үйүңүздө калтырыңыз (бычак, бирок, кабыл алынат). Mp3 ойноткучтардын пайда болушу менен, адамдар болуп көрбөгөндөй суммаларды көтөрө алышты. музыка алардын чөнтөгүндө. Адамдардын 5, 10, ал тургай 15 миң ырлар жыйнагы бар экенин угуу сейрек эмес (жана кээ бир адамдар, андан да көп). Mp3 ойноткучтардын ичинен эч ким Apple'дин iPod жана аны иштеткен программалык камсыздоо, iTunes сыяктуу популярдуу эмес. Мындай чоң музыкалык китепканалар менен, бирок жакшы угулбаган же жагымдуу болбогон ырлардан арылуу бир аз кызыксыз болуп калышы мүмкүн. сен эми Itunes'теги музыкалык коллекцияңызды көзөмөлдөө жана сизге жакпаган ырлардан арылуу үчүн кылымдар талап кылынышы мүмкүн. Мына ушул үйрөткүч келип түшөт. Бул жөн эле коркунучтуу, менин жакшы досум Perlдын жардамы менен. Perl жөнүндө жакшы негизги билим бул көрсөтмөнү кайталоого аракет кылганда абдан пайдалуу, бирок талап кылынбайт (сиз, албетте, даяр кодду алып, көчүрүп/чаптап алсаңыз болот) ал жакшы иштейт). Перлге кызыккандар үчүн, мен О'Рейлиден "Perl үйрөнүү" китебин сунуштайм, бул жакшы окуу жана Perl боюнча жазылган мыкты китептердин бири, мен окуу мүмкүнчүлүгүнө ээ болдум. эгерде туура аткарылган болсо, анда мен акылсыз бир нерсе кылып, кымбат ырларыңызды өчүрүп салсаңыз, мен эч кандай жоопкерчиликти албайм жана кабыл албайм. Сураныч, төмөндөгүдөй сценарий жазууга же аткарууга аракет кылардан мурун музыкалык файлдарыңыздын камдык көчүрмөсүн ойлонуп көрүңүз. Жөн гана этияттык менен ката кетирип коюңуз, антпесеңиз, эч кандай сезимибиз жабыркабайт, рахмат. (Ооба, сен да, эскертүүнү окубаган адам) Улуу! Келгиле, баштайлы:-) Жаңыртуу: Кээ бир perl сценарийлери iTunes сценарийлерин жазуу үчүн оор болгон окшойт. ITunes менен байланышкан ар кандай сценарийлер үчүн Теридондун скрипттерин карап көрүңүз.

1 -кадам: Баштоо

Баштоо
Баштоо

Бардык нерселердегидей эле, бул скриптти иштетүүдөн мурун бир аз даярдык көрүү керек. Ошентип, сиз iTunesтен ырларды автоматтык түрдө жок кылышыңыз керек болгон нерселер: 1) Компьютер (дух) 2) iTunes (кош дух) 3) Perl (Perl жок Perl скриптин иштетүү кыйын эмеспи?) 4) Сиздин сүйүктүү редактор (мен vi жана vimдин жактоочусумун, бирок ар кандай текст редактору трюкту кылышы керек) 5) iPod (милдеттүү эмес, бирок жакын арада түшүнүктүү болгон себептерден улам жакшы) Perl алуу: Бул жердеги көрсөтмөлөр жетишерлик жөнөкөй болушу керек: https://www.perl.com/download.cspPerl жүктөлүп, орнотулган жана даяр болгондон кийин, биз эмне кылып жатканыбыз тууралуу кээ бир маалыматка ээ болууну каалайбыз. Белгилей кетүүчү нерсе, скрипт башында Mac OS X үчүн иштелип чыккан, бирок ошол эле ыкмалар Windows сыяктуу Unixке негизделбеген ОСте иштеши керек. Instructableнын кызыксыз, эр, "тарбиялоочу" бөлүгү үчүн убакыт.

2 -кадам: Негизги скрипт идеясы

iTunes колдонуучуларга ырларды баалоого мүмкүнчүлүк берүү үчүн 5 жылдыздуу рейтинг системасын камтыйт. 5 жылдыздуу рейтингдеги ырлар эң жакшы деп эсептелет, ал эми 1 жылдыздуу рейтингдеги ырлар эң начар ырлардын катарына кирет. Биздин максаттар үчүн, рейтинги жок ырлар (ака 0 жылдыздар) колдонуучу азырынча баалоо мүмкүнчүлүгүнө ээ боло элек ырлар деп эсептейбиз. Ырды ээлеген баалуу катуу дискке татыктуу эмес экенин, балким, жаман деп табуу. Ошондуктан, мен Perl Script бул көрсөтмөдө сизге сунуштайм, iTunes китепканасы аркылуу талданат жана 1 жылдыздуу рейтингге ээ болгон тректерди жок кылат. iPod колдонуу. Мына ушундай жол менен, сиз жөн эле баалап, жолдо баратып жок кылуу үчүн ырларды тандай аласыз жана алар iPodду кийинчерээк компьютериңизге шайкештештиргенде автоматтык түрдө жок кылынат (эгер сиз iPodду автоматтык түрдө компьютериңизге синхрондоштурсаңыз). Эми биз билебиз биз кылып жатабыз, келгиле, Perl Script үчүн iTunesтен ыр маалыматын кантип аларыбызды карап көрөлү.

3 -кадам: XML китепканасы: ITunes Goto Guy

XML китепканасы: ITunesтун Goto Guy
XML китепканасы: ITunesтун Goto Guy

Ырды компьютерден анын рейтингине жараша жок кылуу үчүн бизге 2 маалымат керек: ырдын рейтинги жана ырдын жайгашкан жери. Бактыга жараша, бизде iTunes жөнүндө каалаган бардык маалыматты ала турган ыңгайлуу файл бар: iTunes Music Library XML файлы. XML файлы "iTunes Music Library.xml" деп аталат жана негизги Катуу дискиңиздеги Музыкалык каталогдо болушу керек.

XML файлы жөнүндө: Itunes xml файлы - бул Itunes тарабынан колдоого алынган жана дайыма жаңыртылып турган маалымат базасы. Itunes -те өзгөртүү киргизилгенде, iTunes XML файлынын тиешелүү бөлүгү бул өзгөрүүнү белгилөө үчүн өзгөртүлөт. Менин iTunes XML файлымдан үлгү жазуу төмөндө келтирилген: 1218Track ID1218NameTake On MeArtistA-HaGenre80'sKindMPEG аудио файлыSize3682382Жалпы убакыт230138Күн өзгөртүлгөн2007-09-24T02: 11: 30ZDate Added2008-05-28T05Play88P8P8888 25T0: 26: 58 XML файлы HTML стилиндеги тегдер менен курчалган баалуулуктардан турат. Сценарийдин максаттары үчүн Track ID, Аты -жөнү, Аткаруучусу, Рейтинги жана Жайгашкан жери тууралуу маалымат кызыктырат. Эгерде сиз XML файлын карап жатсаңыз, анда бул ырдын 40 "рейтинги" бар экенин байкасаңыз болот. ITunes ар бир ырга 0дөн 100гө чейин бүтүн санды дайындайт, ар бир 20 упай рейтинг үчүн кошумча жылдыз болот. Ошентип, 20 деген баа 1 жылдыздуу рейтингге туура келет, 40 деген баа 2 жылдыздуу рейтинг, ж.б.у.с., 5 жылдыздуу рейтинг. Эми XML файлы жөнүндө билгенибизден кийин, скрипт баштайлы

4 -кадам: Сиздин досуңуз Хаш (эгер сиз Амстердамда болбосоңуз дагы)

Сиздин досуңуз хэш (эгер сиз Амстердамда болбосоңуз дагы)
Сиздин досуңуз хэш (эгер сиз Амстердамда болбосоңуз дагы)

Файлдарды жок кылаардан мурун, бизге ырдын бардык маалыматын камтыган жумушчу базасы керек. Хэштердин массиви же таштанды сыяктуу татаал маалымат структуралары колдонулушу мүмкүн болсо да, бул скрипт хэштердин жөнөкөй тизмесин колдонууга татыктуу. саптар менен индекстелет, же ачкыч/маани жуптарынын аралаштырылган массасы. Хэшти чоң нерселер бар нерселер (баалуулуктар) катары элестетсе болот жана метафоралык баррелдин бардыгында тег (ачкычтар) бар. Сиз баррелдеги каалаган нерсени жөн эле анын тегин таап сууруп чыгара аласыз. Хэштер жөнүндө көбүрөөк маалымат алуу үчүн, төмөнкү шилтеме пайдалуу болушу мүмкүн: https://www.tutorialspoint.com/perl/perl_hashes.htm Биз iTunes XML файлындагы ар бир ырга көз салуу үчүн уникалдуу трек идентификатору берилген маалыматты колдоно алабыз. ырлар. Ушундан улам, trackID хэштер үчүн идеалдуу ачкыч түзөт. Ошондуктан, биз ырдын аталышы, аткаруучу, рейтинг жана жайгашкан жери үчүн 4 хэш орното алабыз. Булар түзүлгөндөн кийин, биз файлды сканерлеп, хэш базабызды толтура алабыз, бул жөнөкөй көрсөтмөлөрдү колдонуп, кийинкиде көрсөтүлөт.

5 -кадам: Туруктуу сөздөр жөнүндө кыскача сабак

Биздин хэш жазууларыбызды XML файлынан алуу үчүн, ошондой эле издөөгө бир аз убакытты үнөмдөө үчүн, биз Perlдин эң күчтүү өзгөчөлүктөрүнүн бирине: кадимки сөз айкашына кайрылууну каалайбыз. Мен үзгүлтүксүз сөз айкаштары боюнча өтө кыска сабак өтөм, бирок кененирээк түшүндүрмөлөрдү алгысы келгендер үчүн Интернетте үзгүлтүксүз экспозиция боюнча көптөгөн сабактар бар. Http://perldoc.perl.org/perlretut.html текшерип туруңуз. кийинчерээк колдонуу үчүн сап. Туруктуу сөз айкаштары бул долбоор үчүн колдонула турган 2 функцияны, дал келген (m //) жана алмаштыруучу (s //) операторлорун камсыз кылат. Тапшырмалар контекстинде бул функциялардын бирин колдонуу үчүн, биз Perlдин милдеттүү операторун (= ~) колдонобуз, ал үлгү тандалган сап өзгөрмөсүнө байлануу үчүн колдонулат.

$ comment = ~ /Purduecer /; $ комментарийлер сабында "Purduecer" s/[a-z]/[A-Z]/бар болсо, #чындыкты кайтарат; #бардык кичине тамгаларды сап менен алып, аларды $ _ сап менен чоңойтТуруктуу сөз айкаштарынын экинчи пайдалуу өзгөчөлүгү - эстутумдун өзгөрмөлөрү. Кадимки сөз айкаштарында, кээ бир нерселерди кашаанын ичине коюп, кийинчерээк бул бөлүктөргө дал келген саптардын бөлүктөрүнө кирүү үчүн $ 1, $ 2 ж. Б.

/(Instructables) робот/; #Каалаган сапты "Instructables Robot" фразасы менен дал келтирүү $ website = $ 1; #Паренстердин биринчи топтомунда камтылган үлгү матчынын ийгиликтүү натыйжасын сактоо (бул учурда $ 1 өзгөрмөсүндө "Instructables" камтылган)Акыр -аягы, туруктуу сөз айкаштарында, атайын максатка кызмат кылган кээ бир белгилер бар. Бул артка кетүү качып кетүүлөрү (мунун баары C программисттерине тааныш көрүнүшү керек), тамгалар класстары жана метахарифондор. Мисалы, эки жагында өтмөк бар бир тамга дал келүү үчүн, биз айта алабыз

/\ t [a-zA-Z] t/Бул төрт бурчтуу кашаа символдор классын аныктоо үчүн туруктуу сөз айкаштарында колдонулат. Айталы, биз сапта төрт бурчтуу кашаага алынган текстти табууну кааладык дейли. Биз муну жөн эле төмөндө көрсөтүлгөндөй жаза алган жокпуз

/

/

6 -кадам: ITunes Scriptке үзгүлтүксүз сөздөрдү колдонуу

ITunes скриптине туруктуу сөз айкаштарын колдонуу
ITunes скриптине туруктуу сөз айкаштарын колдонуу

Эми биз үмүттөнүп тургандай, үзгүлтүксүз сөз айкаштарын иштетүүчү негизги түшүнүктөр боюнча бир аз түшүнүк бар, аларды iTunes скриптине колдонууга убакыт келип жетти. XML кодун окуп жатканда, кээ бир символдор, мисалы, алдыга сызык, көп кездешет. Ошондуктан, биз m // оператору коддо каалаган бөлгүчтөрдү тандап алуу мүмкүнчүлүгүнөн пайдаланабыз (биз квадрат кашааларды колдонобуз, бирок башка бөлүүчүлөр сөзсүз иштейт) Биринчиден, биз анын бир бөлүгүн гана окушубуз керек. толук iTunes XML файлы. Файлдын ойнотмо тизмелери сыяктуу маалыматты камтыган бөлүктөрү керек эмес. Ыр маалыматынан кийин келген ойнотмо тизмелер бөлүмүнүн биринчи сабы төмөнкүдөй көрүнөт: Ойнотмо тизмелер Ошондуктан бир аз убакыт ичинде, эгерде бул сапка туш келсе, файлды окуу аягына чейин секире турган билдирүүнү кошо алабыз.

while () {#loop_instructions_here last if ($ _ = ~ m [Ойнотмо тизмелер])}Андан кийин, хэш идентификаторлорун куруу үчүн, биз баалуулуктарды хэштерге сактоо үчүн мурунку кадамда үйрөнгөн эстутумдун дал келүүчү өзгөрмөлөрүн колдонуп, маалымат базабыздын хэштерин куруу үчүн if-elsif дарагын колдоно алабыз.

эгер ($ _ = ~ m [(d+)]) {$ id = $ 1; } elsif ($ _ = ~ m [Рейтинг (d+)]) {$ rate_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Аты (.+)]) {$ name_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Сүрөтчү (.+)]) {$ art_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Locationfile: // localhost (.*)]) {$ loc_hash {$ id} = $ 1; }Эми биз хэш маалымат базабыздын негизин түзгөндөн кийин, биз 1-жылдыздуу файлдарды табууну жана алып салууну камтыйбыз, андыктан кийинки кадамга!

7-кадам: Ошол 1-Жылдыз тректерди табуу жана жок кылуу

Ошол 1 жылдыздуу тректерди табуу жана жок кылуу
Ошол 1 жылдыздуу тректерди табуу жана жок кылуу

Азыр бизде маалымат базасы орнотулгандыктан, 1 жылдыздуу тректерди издөөгө убакыт келип жетти, биз аларды жок кыла алабыз. Perl биздин хэштердин бардык баскычтарын кайталоо үчүн колдонула турган foreach цикли деп аталган пайдалуу циклдик конструкцияны камсыз кылат. Белгилей кетчү нерсе, iTunes китепканаңыздагы ар бир трек рейтинг хэшине кирбейт. Бул рейтинги жок ырларга iTunes XML файлында трек рейтинг линиясы берилбегени үчүн. Ошондуктан, хэштерди айландырганда, биз төмөнкү конструкцияны колдонууну каалайбыз:

foreach $ id (сорттоо баскычтары %rate_hash) { #… бул жерге цикл кодун киргизиңиз}Андан кийин, бул төмөнкү билдирүүнү колдонуу сыяктуу жөнөкөй

$ loc_hash {$ id} ажыратуу, эгер $ rate_hash {$ id} == 20;Жогорудагы үлгү кодунда колдонулган ажыратуу функциясы Perlдин файлдарды жок кылуу жолу. Сиз операциялык тутумуңуздун жок кылуу функциясына тутумдук чалууга азгырылып кетишиңиз мүмкүн, бирок портативдүүлүк себептеринен улам мен жазган код тутум чалуусун колдонбойт. Азыр биздин коддун негизги структурасы бар. Кийинки кадамдарда биз 1-жылдыздардан арылуу үчүн толук өзгөчөлөнгөн, функционалдуу скриптке ээ болуу үчүн кодго бир аз тактоолорду киргизебиз.

8 -кадам: URI качып кетет жана аларды кантип айланып өтүү керек

Эгерде сиз сценарийди ошол бойдон иштетүүгө аракет кылсаңыз, анда сиз өзүңүздүн операциялык системаңыздан көптөгөн каталарга туш болосуз жана эгер сиз жок кылгыңыз келген файл жолдорун карасаңыз, анда сиз каалабаган жолдорго камтылган адаттан тыш белгилерди таба аласыз. Бул жолдордо URI качуу белгилери бар экенине абдан жакшы мүмкүнчүлүк бар. HTML жана XMLде URI качуу белгилери (ari URI качып кетүүлөрү) - бул символдун түз нускаларын издөө үчүн колдонулган атайын метачарымдар. Мисалы, сиз XML символдорунун катарында эч качан жөнөкөй боштукту көрбөйсүз. Сиз, бирок, бош боштуктун XML өкүлчүлүгүн көрөсүз, %20. (Албетте, сиз муну браузериңиздеги URL тилкесинен көрдүңүз жана алар эмне болгонуна кызыгып көрдүңүз. Ооба, эми сиз билесиз) URI качышы % белгисинен турат, андан кийин каармандын ASCII маанисин билдирген 2 орундуу он алтылык коддон турат. пункту, сиз кездешкен ар бир мүмкүн болгон метахаракты алмаштыруу үчүн жайгашкан жердин хэшине алмаштыруу боюнча толуктоолорду жаза аласыз (б.а. $ loc_hash {$ id} = ~ s/%20//жана башкалар). Бактыга жараша, бирок Perl бул нерселерге кам көрүүнүн жакшыраак жолун камсыз кылат. Perl URI:: Escape деп аталган модулу менен кошо келет, ал uri_unescape функциясына ээ, ал биз үчүн URI качуусун жоюу ишин аткарат.. Модулду колдонуу үчүн, кодуңуздун үстүнө төмөнкү сапты кошуңуз:

URI:: Escape колдонуу;Эми, $ loc_hash {$ id} массивин XML файл циклине дайындагандан кийин, биз кийинки сапты кийинчерээк кошо алабыз

uri_unescape ($ loc_hash {$ id});Жогорудагы сап URI качуу белгилерин автоматтык түрдө жок кылат. Кошумча бонус катары, ал ошондой эле кээ бир эл аралык белгилерди которот. Мен сценарийди япон конжи болгон бир нече филепат менен чуркадым, жана uri_unescape функциясы ал белгилердин XML форматтарын түпнуска тамгаларына которду, андыктан ажыратуу файлды ийгиликтүү жок кыла алмак.. Мен толук түшүнбөгөн себептерден улам, iTunes амперсанд (&) белгисин анын катарында коддогон. Кимде -ким мунун себебин билсе, мага кабарлап коюңуз. Бул арада uri_unescape линиясынын астына төмөнкү сапты кошуу менен бул маселени чечебиз

$ loc_hash {$ id} = ~ s/&#/&/;Эми скриптте кызыктай белгилерден тазаланган филепаттар болот жана байланышты ажыратуу функциясы аларды жок кылуу үчүн файлдарды тиешелүү жерлеринен таба алат. Ооба, эгер сиз Mac OSXти колдонуп жатсаңыз (жана, кыязы, көпчүлүк Unixке негизделген ОС). Сценарийди башка операциялык тутумдарга (тактап айтканда, Windows) шайкеш келтирүү үчүн окуңуз.

9 -кадам: Windowsко скрипт шайкештигин кошуу

Windowsко скрипт шайкештигин кошуу
Windowsко скрипт шайкештигин кошуу

Сценарий, буга чейин жазылгандай, Unixке негизделген операциялык системалардагы тректерди эффективдүү түрдө жок кылат. Windowsтун иштеши үчүн, бир аз кошумча керек. Mac жана Unixке негизделген башка ОСтон айырмаланып, Windows бир түп каталог түшүнүгүн колдобойт. Демек, бардык жол аталыштары (/:) тамыры каталогунан айырмаланып, көлөмдөн башталат (C: же E: же сиз ойлонушуңуз мүмкүн болгон башка тамга).О (бул баш тамга эмес, нөл), бул бизге азыр кандай операциялык системаны колдонуп жаткандыгыбызды айтат. Ошентип, эгерде бул өзгөрмөнүн ичинде сакталган мааниде "Win" камтылган болсо, биз XML жайгашкан жерибиздин алдыңкы сызыгын алып салгыбыз келет. Муну төмөнкү код линиясы менен жасаса болот (XML файлынан тректин ордун ийгиликтүү талдагандан кийин кошулат):

$ loc_hash {$ id} = substr ($ loc_hash {$ id}, 1) эгер $^O = ~ /Win /i;Эми скрипт OS X же Windowsто иштейби, иштей берет.

10 -кадам: Толтурулган скрипт

Толтурулган скрипт
Толтурулган скрипт

Аякталган продуктту каалагандар үчүн Itunes Autodeletion скриптинин менин версиясы тиркелет, бирок ал кантип иштээрин түшүндүрбөйт.

Сценарийди колдонуу үчүн, файлды perl файлы (.pl кеңейтүүсү) катары сактап, анан аны аткарылуучу кылгыңыз келет (Unixте chmod 751, бул Windows системалары үчүн эмне экенин так билбейт).

Сунушталууда: