Menu serwera

Magnatune.com Daily Download Workflow

O cholera, ale wymyśliłem tytuł… No nic, może ktoś dojdzie o co w tym chodzi. Ja opiszę może dwa problemy, które kazały mi dziś siąść do mojego mini i pokombinować nieco i być może to nieco rozjaśni sprawę.

  • Pierwszy problem to fajne feature, jakie oferuje serwis Magnatune.com – można sobie otóż co dzień wziąć i zassać z ich stron jeden darmowy kawałek. Co dzień inny. Czasem to jakieś pienia etniczne, czasem jakieś wysiłki kwartetu smyczkowego, czasem ambientowy odjazd lub rockowy kop. Anyway – zazwyczaj warto i tak zobaczyć co to. Ja tam lubię, dzięki tym prewkom kupiłem tam już kilka albumów i bardzo je sobie chwalę. Jako się rzekło – co dzień kawałek do wzięcia nowy się pojawia. A to trzeba zassać. Co dzień. Z tego samego miejsca. Plik o takiej samej nazwie… To trzeba było zautomatyzować!

  • Drugi problem sprawił mi MacOSX. Środowisko jak najbardziej uniksowe, z cronem na pokładzie i do wykonywania zadań powtarzalnych stworzone, jak każde inne środowisko uniksowe. No tak ale to wymaga nieco więcej wiedzy niż kliknięcie ikonki i poustawianie sobie czego tam się chce. To trzeba było opanować!

Dwa problemy, z których ten związany z cronem wydawał mi się trudniejszy do rozwikłania. Ale przecież papa CoSTa aż tak głupi nie jest i jakoś sobie poradził :). A jak? A tak:

Najpierw odpaliłem many wszelakie i inne helpy. Tu starłem się z twardą jabłkową rzeczywistością: dokumentacja i owszem jest ale jakoś cholera szperanie za gotowymi rozwiązaniami mi się nie udawało. W czym rzecz: zachciało mi się zaprząc crona do uruchamiania codziennego jakiegoś skryptu, który by mi te kawałki z Magnatunes.com ssał. No i tu stanąłem przed zadaniem z gatunku „mnożenie problemów ad absurdum”. Z lektury wynikało mi, że czas by się jakiegoś AppleScripta nauczyć, może jakieś fajne konsolowe polecenia wkuć i w ogóle zabrać się za system od samego jego jądra.

Coś mi tu nie pasowało. Coś było nie tak. Ten sposób był do rzyci i kompletnie nie Mac way.

Aż dotarło do mnie, że zabieram się do problemu od dupy strony. Co mnie interesują jakieś crony czy inne takie? W systemie musi być coś, co sobie działa, jest łatwe w obsłudze i ma możliwość przypominania się co jakiś czas z jakimś zadanie do zrobienia. Oczywiście! iCal! Teraz trzeba było tylko jakoś spiąć iCala, który odpala ładnego demonka łażącego w tle i wywołującego np. przypomnienia ustawione w kalendarzu. Po odpaleniu iCala rozwiązanie pojawiło się samo. Chłopaki z Apple ułatwili to tak, że bardziej nie można. Trzeba było tylko nie kombinować a zrobić rzecz najoczywistszą pod Słońcem: ustawić codzienne zadanie, które wywoła…

BINGO! Zadanko będzie wywoływało Workflow (tak się nazywają akcje zdefiniowane w Automatorze) pobierania muzy z Magnatune.com.

Co to jest Automator? To takie boskie narzędzie OSX, dzięki któremu życie jest łatwiejsze a powtarzalne czynności możliwe do zautomatyzowania i uproszczenia. Po prostu tworzy się tzw. Workflow, w którym można sobie np. ustalić, że jotpegi z jakiegoś katalogu mają być zmniejszone do takich a siakich rozmiarów, wrzucone do pliku PDF w czterech kolumnach i rzędach ile tam wyjdzie w zależności od ilości fotek. A całość ma być zapisana do pliku, skompresowana i wysłana mailem na dany adres. Zaczynacie dostrzegać moc tego narzędzia? No to powiem tylko, że jest ona znacznie, znacznie większa. Automator pozwala takie zadania zapisywać jako zwykłe aplikacje systemu Mac OSX. Skutek? Od dłuższego czasu backupami zajmuje się właśnie Workflow Automatora odpalany jako aplikacja przy logowaniu. Rsyncuję co trzeba i dziękuję, backupy robią się same przy każdym logowaniu i bez czegoś łażącego w tle. Jest wszakże jeszcze lepiej – Automator pozwala zapisywać takie akcje jako pluginy do systemowych aplikacji. Taką opcję wykorzystałem przy rozwiązaniu tego problemu – cały Workflow zapisałem jako plugin programu iCal i natychmiast stał się on dostępny w tym programie oraz gotowy do wykorzystania.

Skutek: w iCal zrobiłem sobie zadanie wywoływane codziennie, które (dzięki Workflow zapisanemu w pluginie) zasysa kawałek ze strony Magnatune.com i wrzuca drania do odpowiedniego katalogu. Proste i eleganckie wyjście, bez kombinowania z jakimiś cronami czy czym tam innym. O takich rzeczach ma myśleć system, nie ja. Ja mam ustawiać (łatwo), co ten system ma robić.

Na poniższych screenach krok po kroku pokazuję co i jak wygląda (są duże by wszystko było jasne). Workflow można sobie wyklikać samemu lub pobrać (plik zip, 4kb). Być może ktoś jeszcze będzie miał chętkę na darmowe utworki pobierane codziennie. Zakładam, że toto można mocno poprawić a sposób przedstawiony jest jednym z kilku na pewno możliwych rozwiązań opisanego problemu. Z chęcią nieco wiedzy od jakiegoś makówkarza obeznanego w temacie łyknę. Póki co toto działa i sprawuje się świetnie.

W Automatorze można sobie wyklikać taki Workflow – wszystko jest na screenie, eksperymentowanie jednak zawsze wskazane :)
Wyklikany Workflow zapisujemy jako wtyczkę (plug-in) do… iCala. A tak, ma to znaczenie bo po prostu w tym programie nasz Workflow wykorzystamy.
O, takie coś wybieramy z menu zapisu wtyczki (plug-in). Workflow będzie teraz dostępny dla iCala jako wtyczka tegoż programu. Eleganckie rozwiązanie.
W programie iCal ustawiamy sobie taska powtarzalnego codziennie (codziennie będzie to zadanie wywoływane w tle, nawet przy niepracującym iCalu) i po prostu wybieramy naszą wtyczkę, jako zadanie. Tyle. Problem solved :)

4 odpowiedź do Magnatune.com Daily Download Workflow

  1. byte Wrzesień 30, 2007 o 19:20 #

    Automator fajny jest, dobrze zrobiony język skryptowy dla pani Krysi z księgowości.

    iCal zapewne opiera się na cronie właśnie i to jemu zleca wywoływanie tych wtyczek.

    Apple jedno trzeba przyznać: wzięli system uniksowy i nie próbowali zrobić z niego Windows. Automator to zapewne zestaw iluś tam skryptów dla basha, które można dowolnie łączyć z poziomu GUI.

    PS Powstawiało mi w pola formularza dane Walthariusa. WTF?

    • CoSTa Wrzesień 30, 2007 o 20:26 #

      Ano, jest fajny, z tym że to nie język skryptowy a narzędzie do klejenia skryptów w jakieś sensowne całości. Od skryptów jest AppleScript i ponoć też niezbyt złożony. Nie wiem, jeszcze z nim nie walczyłem. Niemniej im m więcej Automatora używam, tym bardziej się do tego przekonuję. Miłe jest to, że takich automatorowych skryptów do wykorzystania mogą sami deweloperzy robiący jakieś tam aplikacje narobić sobie wedle własnego widzimisię. No i bardzo prosto można sobie wyklikać nawet całkiem skomplikowane akcje. Naprawdę fajne, do Ubuntu jak znalazł :). Kupę codziennych zadań można takim Automatorem załatwić. Ot choćby w tym Workflow nie zamieściłem dalszej części tasku – wciągnięcia rozkompresowanego kawałka do iTunes na odpowiednią playlistę. No ale to można już sobie samemu wyklikać jeśli komuś się będzie chciało :)

      Fajne narzędzie, sporo ułatwia i przyspiesza.

      Co do iCala – przy logowaniu odpalany jest taki pseudodemonik – proces o nazwie iCalAlarmScheduler. To on zdaje się odpala te wszystkie zdarzenia i komenderuje ich wykonaniem. Cron tu niezbyt wiele ma do powiedzenia zdaje się. Tu od razu widać niedoskonałość skryptu – trzeba być zalogowanym by to działało. Mnie to akurat ryba bo jeśli nie jestem zalogowany to po prostu komp nie chodzi (kobity swoje konta odwiedzają korzstając z przełączania userów, co funkcjonuje tu bardzo dobrze). Gdybym to chciał zrobić bardziej niezależne od logowania – wtedy chyba musiałbym walczyć z cronem. Rozwiązanie takie jak teraz mi zupełnie wystarczy ale sam jestem ciekaw, jak wyglądałaby walka z cronem właśnie. No tam już od naklepania czegoś w konsoli chyba bym nie uciekł :)

      Tak, Automator to kupa skryptów, nad którymi można jakoś zapanować via GUI. Kiedy otworzysz sobie jakiegoś screena z Automatorem to zobaczysz jak tam przekazywane są parametry ze skryptu do skryptu. Proste i dosyć intuicyjne wizualizowanie pipeline.

      Co do formularzy – chłopaki używają na chlorze czegoś, co się zwie [url=http://varnish.projects.linpro.no/]varnish[/url]. Problem w tym, że to dziadostwo powoduje sporo problemów a oni się uparli, że z tego będą korzystać. No nic, kolejny problem do zgłoszenia. Dzięki za info.

  2. Krzysztof Klimonda (Cthulhu) Październik 23, 2007 o 20:49 #

    Ech, jogger jak zwykle w przyjazny sposób dał do zrozumienia, że coś zrobiłem źle i nie wysłał trackbacka.. Oczywiście uznano, że trzeba dodać zabezpieczenie antyspamowe o którym nie wiedziałem.. i teraz chyba zupełnie trackbacka nie wysłał..

    Tak więc tylko nadmieniam, że poprawiłem twojego workflowa tak by ściągnięte pliki dodawał do iTunes, tagował a potem kasował pozostałości.. wszystko tutaj:

    [url=http://cthulhu.jogger.pl/2007/10/23/workflowing-magnatune-daily/]Workflowing Magnatune Daily[/url]

    • CoSTa Październik 24, 2007 o 09:06 #

      O, bardzo fajne! Dzięki ogromne za info i sorry za brak trackbacków. Wyłączyłem bo obciążało to serwer a spamu do weryfikacji było co niemiara. Tyle że jeszcze z szablonu nie wywaliłem z lenistwa :)

      Kurczę, musi być jakiś prostszy sposób na rozkompresowanie archiwum, wzięcie zawartości i przesłanie jej do dalszej obróbki. Muszę przysiąść do AppleScriptu bo to jednak chyba nie jest aż tak trudne a możliwości zabawy byłby większe znacznie.

      Dzięki za przywołanie do tablicy, będę musiał się tym zająć nieco poważniej i przede wszystkim przeanalizować, co żeś tam poczarował :)

Dodaj komentarz

Przeczytaj poprzedni wpis:
Doropha szaleje, ja pokornię wiercę…

Niedzielny, słoneczny pranek w moim domu. Dzieciak jeszcze na wyjeździe, kołderka ciepła, kawka już się zrobiła, na dworze słonko aż...

Zamknij