Мазмұны:
- 1 -қадам: Жұмысты бастау
- 2 -қадам: Сценарийдің негізгі идеясы
- 3 -қадам: XML кітапханасы: ITunes Goto Guy
- 4 -қадам: Сіздің досыңыз хэш (егер сіз Амстердамда болмасаңыз да)
- 5 -қадам: Тұрақты тіркестер туралы (өте) қысқаша сабақ
- 6 -қадам: ITunes сценарийіне тұрақты өрнектерді қолдану
- 7-қадам: 1 жұлдызды тректерді табу және жою
- 8 -қадам: URI қашуы және оларды қалай айналып өту
- 9 -қадам: Windows жүйесіне сценарийлердің үйлесімділігін қосу
- 10 -қадам: Аяқталған сценарий
Бейне: ITunes -тің қажет емес әндерін компьютерден жойыңыз: 10 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:28
Сәлеметсіз бе, ханымдар мен мырзалар, бұл менің бірінші кодтау нұсқаулығы, сондықтан түсініктеме беру кезінде мылтықтарыңызды үйде қалдырыңыз (пышақтар, алайда). Mp3 ойнатқыштардың пайда болуымен адамдарға бұрын -соңды болмаған көлемді тасымалдауға мүмкіндік берілді. музыка олардың қалтасында. Адамдардың 5, 10, тіпті 15 мың әндер жинағы бар екенін есту сирек емес (және кейбір адамдар, тіпті одан да көп). MP3 ойнатқыштардың ешқайсысы Apple -дің iPod және оны басқаратын бағдарламалық жасақтама iTunes -тен гөрі танымал емес, бірақ мұндай үлкен музыкалық кітапханалармен жақсы емес немесе тартымды емес әндерден құтылу біршама жалықтыруы мүмкін. сен енді ITunes -тегі музыкалық жинағыңыз бойынша кезекпен жүріп, сізге ұнамайтын әндерден арылу үшін көптеген жылдар қажет болуы мүмкін. Бұл нұсқаулықта мен сізге әндерден автоматты түрде құтылу жолын көрсетемін. Perl жақсы білуі бұл нұсқаулықты қайталауға тырысқанда өте қажет, бірақ қажет болмаса да (сіз, әрине, дайын кодты алып, көшіріп/қоюға болады) ол жақсы жұмыс істейді). Perl -ге қызығушылық танытқандарға мен О'Рейлидің «Perl үйренуі» кітабын ұсынамын, бұл жақсы оқу және мен оқуға мүмкіндік алған Perl туралы ең жақсы жазылған кітаптардың бірі. МАҢЫЗДЫ: Бұл жерде ұсынылған әдістер жұмыс істейтін болады. егер дұрыс жасалса, мен сенің ақымақ әндеріңді өшіріп тастасаң, мен жауапкершілікті қабылдай алмаймын. Келесі сценарийді жазуға немесе орындауға тырыспас бұрын музыкалық файлдардың сақтық көшірмесін жасауды мұқият қарастырыңыз. Егер сіз ренжімесеңіз, бізді ренжітпеу үшін абайлап қателесіңіз, рахмет. (Иә, тіпті сіз, ескертуді оқымаған адам) Керемет! Жұмысты бастайық:-) Жаңарту: Кейбір perl сценарийлері iTunes сценарийлерін жазуда көп жұмыс жасаған сияқты. ITunes-пен байланысты әр түрлі сценарийлер үшін Теридон сценарийлерін қараңыз.
1 -қадам: Жұмысты бастау
Барлық нәрселер сияқты, бұл сценарийді іске қоспас бұрын біраз дайындық қажет. Сонымен, iTunes -тен әндерді автоматты түрде жою үшін сізге қажет нәрселер: 1) Компьютер (duh) 2) iTunes (қосарланған) 3) Perl (Perlсіз Perl сценарийін іске қосу қиын емес пе?) 4) Сіздің сүйікті редактор (мен өзім vi мен vim -дің жақтаушысымын, бірақ кез келген мәтіндік редактор мұны істеуі керек) 5) iPod (міндетті емес, бірақ жақын арада белгілі болатын себептерге байланысты болған жақсы) Perl алу: мұнда нұсқаулық жеткілікті қарапайым болуы керек: https://www.perl.com/download.cspPerl жүктелген, орнатылған және жұмысқа дайын болғаннан кейін, біз не істеп жатқанымыз туралы кейбір ақпарат алғымыз келеді. Айта кету керек, сценарий бастапқыда Mac OS X үшін жасалған, бірақ сол әдістер Windows сияқты Unix емес ОЖ-де жұмыс істеуі керек. Нұсқаулықтың скучно, «тәрбиелік» бөлігінің уақыты.
2 -қадам: Сценарийдің негізгі идеясы
iTunes қолданушыларға әндерді бағалауға мүмкіндік беретін 5 жұлдызды рейтингтік жүйені қамтиды. 5 жұлдызды рейтингі бар әндер ең жақсы әндер болып саналады, ал 1 жұлдызды рейтингтері нашар әндер болып саналады. Біздің мақсатымыз үшін, рейтингі жоқ кез келген ән (aka 0 жұлдыз) пайдаланушының әлі бағалау мүмкіндігіне ие болмаған ән деп есептейміз. Жеке әндерді бағалау кезінде, егер ән 1 жұлдызды рейтингке ие болса, мен табу, бұл ән алатын қатты дискідегі бос орынға лайық емес. Сондықтан, мен сізге осы нұсқаулықта ұсынатын Perl сценарийі iTunes кітапханасын талдайды және 1 жұлдызды рейтингке ие кез келген тректі жояды. Қосымша бонус ретінде әндерді пайдаланушы жүріп бара жатқанда бағалауға болады. iPod пайдалану. Осылайша, сіз жолда жүргенде оларды жоятын әндерді бағалау арқылы ғана таңдай аласыз және кейінірек iPod -ды компьютерге синхрондаған кезде олар автоматты түрде жойылады (егер сіз iPod -ды компьютерге автоматты түрде синхрондасаңыз). біз істеп жатырмыз, Perl сценарийі үшін iTunes -тен ән туралы ақпаратты қалай алу керектігін көрейік.
3 -қадам: 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 қосылды2008-05-28T05: 00Z88Play88 25T01: 26: 58ZRating40Album Rating40Album Rating ComputedPersistentent ID9AC5DB9713240B44Track TypeFileLocationfile: //localhost/Volumes/HD1/iTunes%20Music/A-Ha/Unknown%20AlOnFoldOlFr XML файлы HTML стиліндегі тегтермен қоршалған мәндерден тұрады. Сценарийді орындау үшін бізді Track ID, аты, орындаушысы, рейтингі және орналасқан жері туралы ақпарат қызықтырады. Егер сіз XML файлын қарап отырсаңыз, жоғарыда бұл әннің «рейтингі» 40 екенін байқауыңыз мүмкін. ITunes әр әнге 0 -ден 100 -ге дейінгі бүтін санды тағайындайды, әрбір 20 ұпай рейтинг үшін қосымша жұлдыз болады. Осылайша, 20 рейтингі 1 жұлдызды рейтингке сәйкес келеді, 40 рейтингі-2 жұлдызды рейтинг және т.б., 100-5 жұлдызды рейтинг. Енді XML файлы туралы білетін болсақ, сценарийді бастайық
4 -қадам: Сіздің досыңыз хэш (егер сіз Амстердамда болмасаңыз да)
Файлдарды жоймас бұрын бізге ән туралы барлық ақпаратты біріктіретін жұмыс базасы қажет. Неғұрлым күрделі деректер құрылымдары, мысалы, хэштер жиынтығы немесе хэштер хэштері пайдаланылуы мүмкін болса да, бұл сценарий хэштердің қарапайым тізімін қолдануға лайықты, қарапайым. жолдар немесе кілт/мән жұптарының аралас массасы бойынша индекстеледі. Хэшті заттары (мәндері) бар үлкен бөшке ретінде қарастыруға болады, ал метафоралық бөшкедегі барлық затбелгі (кілттер) бекітілген. Бөшкедегі кез келген затты оның тегін табу арқылы шығаруға болады. Хэштер туралы қосымша ақпарат алу үшін келесі сілтеме пайдалы болуы мүмкін: https://www.tutorialspoint.com/perl/perl_hashes.htm Біз iTunes XML файлындағы әрбір әнге қадағалау үшін бірегей трек идентификаторы тағайындалған ақпаратты пайдалана аламыз. әндер. Осыған байланысты trackID хэштер үшін тамаша кілт жасайды. Сондықтан біз әннің тақырыбына, орындаушыға, рейтингке және орынға 4 хэш орната аламыз. Бұлар орнатылғаннан кейін біз файлды қарап шығамыз және келесі қарапайым көрсетілетін қарапайым өрнектерді қолдана отырып, хештектер базасын толтыра аламыз.
5 -қадам: Тұрақты тіркестер туралы (өте) қысқаша сабақ
Біздің хэш жазбаларымызды XML файлынан алу үшін, сонымен қатар іздеуге аз уақыт үнемдеу үшін біз Perl -дің ең қуатты мүмкіндіктерінің бірі - тұрақты өрнектің көмегіне жүгінгіміз келеді. Мен тұрақты өрнектер туралы қысқаша сабақ өткіземін, бірақ толығырақ түсініктеме алғысы келетіндер үшін Интернетте тұрақты сөйлеуге арналған көптеген жақсы оқулықтар бар. Жақсы тұрақты өрнек оқулығын алу үшін https://perldoc.perl.org/perlretut.html қараңыз. Қысқасы, тұрақты өрнектер бізге жолдарды өтуге, бір жолды басқа жолға ауыстыруға немесе бөліктерін сақтауға арналған құралдар жиынтығын ұсынады. кейін қолдануға арналған жол. Тұрақты өрнектер осы жобада қолданылатын 2 функцияны ұсынады: сәйкестендіру (m //) және ауыстыру (лар //) операторлары. Бұл функциялардың біреуін тағайындау контекстінде қолдану үшін біз Perl -дің байланыстырушы операторын қолданамыз (= ~), ол үлгіні таңдаулы жолдық айнымалыға байланыстыру үшін қолданылады. Мысалдар:
$ түсініктеме = ~ /Purduecer /; егер $ түсініктеме жолында «Purduecer» фразасы болса, #қайтарады s/[a-z]/[A-Z]/; #барлық кіші әріптерді жолға алып, оларды $ _ жолында бас әріппен жазыңызТұрақты өрнектердің екінші пайдалы ерекшелігі - жады айнымалысы. Тұрақты өрнектерде сіз жақшаның ішіне белгілі бір элементтерді орналастыра аласыз, содан кейін осы бөліктерге сәйкес келетін жолдардың бөліктеріне кейінірек кіру үшін $ 1, $ 2 және т.б. жадының арнайы үлгісін қолдана аласыз.
/(Нұсқаулықтар) Робот/; #Кез келген жолды «Instructables Robot» сөйлемімен сәйкестендіріңіз $ website = $ 1; #Паренстердің бірінші жинағында табысты үлгі сәйкестігінің нәтижесін сақтау #Ақырында, тұрақты тіркестерде белгілі бір мақсатқа қызмет ететін кейіпкерлер бар. Бұл қиғаш қиғаш қашулар (барлығы C бағдарламашыларына таныс болуы керек), таңбалар сыныптары мен метахаримдер. Мысалы, екі жағында қойындысы бар кез келген бір әріпке сәйкес келу үшін, біз айта аламыз
/\ t [a-zA-Z] t/Бұл шаршы жақшалар символдар класын анықтау үшін тұрақты өрнектерде қолданылады. Айталық, біз жолда төртбұрышты жақшаға алынған мәтінді тапқымыз келді делік. Біз оны төменде көрсетілгендей жай ғана жаза алмадық
/
/
6 -қадам: ITunes сценарийіне тұрақты өрнектерді қолдану
Енді біз тұрақты өрнектерді қолдайтын негізгі түсініктерді түсінеміз деп үміттенеміз, оларды iTunes сценарийіне қолдану уақыты келді. XML кодын оқығанда, белгілі бір таңбалар, мысалы, алға қарай қиғаш сызық жиі кездеседі. Сондықтан, біз m // операторы кодта қалаған бөлгішті таңдауға мүмкіндік беретінін пайдаланамыз (біз шаршы жақшаларды қолданамыз, бірақ басқа бөлгіштер міндетті түрде жұмыс істейді) Біріншіден, бізге тек бір бөлігін оқу керек. толық iTunes XML файлы. Файлдың ойнату тізімдері сияқты ақпараты бар бөліктері қажет емес. Ән туралы ақпараттан кейін ойнату тізімдері бөлімінің бірінші жолы келесідей көрінеді: Ойнату тізімдеріОсы себепті, уақытша циклде, егер бұл жол кездессе, файлды оқудың соңына өтетін мәлімдеме қосуға болады.
while () {#loop_instructions_here last if 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 жұлдызды тректерді іздейтін уақыт келді. 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 таңбалар жолында қарапайым бос кеңістікті ешқашан көрмейсіз. Сіз %20 қарапайым бос кеңістіктің XML көрінісін көресіз. (Сіз бұны браузердегі URL жолағында көрдіңіз және олар не екенін білдіңіз. Енді сіз білесіз) URI қашықтығы % белгісінен тұрады, содан кейін таңбаның ASCII мәнін білдіретін 2 таңбалы он алтылық код бар. Сіз кез келген мета -таңбаны алмастыру үшін орналасу хэшінде ауыстыру туралы мәлімдемелердің толық жиынтығын жаза аласыз (яғни $ loc_hash {$ id} = ~ s/%20//; және т.б.). Бақытымызға орай, Perl бұл мәселелерді шешудің жақсы әдісін ұсынады.. Модульді пайдалану үшін кодтың жоғарғы жағына келесі жолды қосыңыз:
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 жүйесіне сценарийлердің үйлесімділігін қосу
Сценарий, әзірге жазылғандай, Unix негізіндегі операциялық жүйелердегі жолдарды тиімді түрде жояды. Windows жүйесінде жұмыс істеу үшін оған бір қосымша қажет: Mac және Unix негізіндегі басқа ОЖ-лерден айырмашылығы, Windows бір түбірлік каталог түсінігін қолдамайды. Сондықтан барлық жол атаулары түбірлік каталогтан айырмашылығы көлемнен (C: немесе E: немесе сіз ойлайтын кез келген басқа әріптен) басталады.O (бұл бас әріп емес, нөл), бұл бізге қазіргі уақытта қандай операциялық жүйені қолданатынын айтады. Сонымен, егер бұл айнымалы мәнде «Win» болса, біз XML орналасу жолағындағы жетекші қиғаш сызықты алып тастағымыз келеді. Мұны келесі код жолымен жасауға болады (XML файлынан жолдың орнын сәтті талдаудан кейін қосылады):
$ loc_hash {$ id} = substr ($ loc_hash {$ id}, 1) егер $^O = ~ /Win /i;Енді скрипт OS X немесе Windows жүйесінде жұмыс істейтініне қарамастан жұмыс істейді.
10 -қадам: Аяқталған сценарий
Аяқталған өнімді қалай алғысы келетіндер үшін iTunes -тің автотелетизациясының аяқталған сценарийінің менің нұсқасы қоса берілді, оның қалай жұмыс істейтіні туралы түсініктеме жоқ.
Сценарийді пайдалану үшін сіз файлды perl файлы ретінде сақтағыңыз келеді (.pl кеңейтімі), содан кейін оны орындалатын етіп жасаңыз (Unix -те chmod 751, бұл Windows жүйелері үшін не екеніне сенімді емес).
Ұсынылған:
Автоматты вакуумды ауыстыру дүкені (Arduino қажет емес): 7 қадам
Shop Vac Auto Switch (Arduino қажет емес): Ағаш өңдейтін көптеген әуесқойлар сияқты менде үстелдің арасына дүкен вакуумы бекітілген, ал мен кесуді жасағым келген сайын араны қоспас бұрын оны қосуым керек. Бұл ақымақтық болып көрінуі мүмкін, бірақ дүкенді босату және өшіру - мойынның ауыруы
Neoboard шамы - SD қажет емес және 3D басып шығарылған: 3 қадам (суреттермен)
Neoboard шамы - SD қажет емес және 3D басып шығарылған: менің 7 жасар балама Minecraft шамын жасағаннан кейін, оның інісі ұқсас нәрсені қалайды. Ол Minecraft -қа қарағанда SuperMario -ға көбірек бейім, сондықтан оның түнгі жарығы бейне ойын спрайттарын көрсетеді. Бұл жоба Neoboard жобасына негізделген, бірақ
$ 5 ESP8266 көмегімен YouTube жазылушыларының DIY экраны - кодтау қажет емес: 5 қадам
$ 5 ESP8266 көмегімен YouTube жазылушыларының экраны - кодтаудың қажеті жоқ: Бұл жобада мен сізге ESP8266 Wemos D1 Mini тақтасын кез келген YouTube арнасының жазылушылар санын 5 доллардан төмен көрсету үшін қалай қолдануға болатынын көрсетемін
Желдеткішті компьютерге қосыңыз - бұрандалар қажет емес: 5 қадам
Желдеткішті компьютердің жылытқышына қосыңыз - бұрандалар қажет емес: Мәселе: менің файлдық серверімде желдеткішсіз радиаторы бар аналық плата бар (солтүстік көпір). Мен сенсорлық бағдарламаға (ksensors) сәйкес Fedora -да жұмыс істедім, аналық платаның температурасы 190F шамасында болды. Менің тізем
Chrome Web кеңейтімі - алдын ала кодтау тәжірибесі қажет емес: 6 қадам
Chrome веб -кеңейтімі - алдын ала кодтау тәжірибесі қажет емес: Chrome кеңейтімдері - бұл пайдаланушылардың шолу тәжірибесін жақсарту үшін жасалған шағын бағдарламалар. Chrome кеңейтімдері туралы қосымша ақпарат алу үшін https://developer.chrome.com/extensions торабына өтіңіз. Chrome Web Extension жасау үшін кодтау қажет, сондықтан HT шолуы өте пайдалы