script + automator?
(1 korsinik/a gleda/ju temu) (1) Gost

script + automator?


17.02.2011 | 03:26
Evo opet mene sa OSX sistemskim pitanjem...

Naime, pokusavam napraviti slijedece:

- izvuci iz imena vise PDF fileova datum (koji je uvijek u dd.mm.yyyy obliku i uvijek se nalazi na kraju prije extenzije)
- taj datum postaviti u comment field.


PDF-ovi su skenirani dokumenti tipa platne liste, odluke, rješenja, molbe, žalbe etc. Prilikom skeniranja, u ime filea je stavljen datum postanka dokumenta.

Cilj cijelog exercisea je da se može sortati po datumima kreiranja papirnatih dokumenata (znaci ne po datumu samog skeniranja doticnog dokumenta).


Hvala unaprijed na svakoj sugestiji i/ili riješenju u obliku linije koda (ako netko bude od volje i viška vremena... ) Trenutno sam zapeo na problemu izvlacenja datuma iz imena filea... Dakle, delako sam dogurao...
Tema zaključana.
17.02.2011 | 08:53
Ja to tako rješavam da prvo u imenu dokumenta stavim datum u obliku yyyy-mm-dd pa onda ostatak imena i tako mi sam sistem sortira dokumente po nazivu i ujedno datumu

Znam, opet nije naučno rješenje i ne zahtijeva učenje skriptnog jezika, ali što mogu, ne da mi se više. Bio sam nekoć programer i nikad više. Sad se moja inventivnost očituje u umjeću izbjegavanja pisanja bilo kakvog koda ako je to ikako moguće.
Tema zaključana.
17.02.2011 | 11:06
Mislim da od Automatora to ne možeš očekivati. Datume se iz imena datoteka može izvući unix shell skriptom, pomoću ls i grep (pipe izlaz od ls u grep a izlaz od grep redirect u neku datoteku).

(Nisam shvatio da li treba datotekama promijeniti ime, to se može pomoću mv.)

Kako ubaciti sadržaj u comment - možda se može pomoću Apple Scripta, ali mislim da Preview ne daje pristup do tih metapodataka (dakle, morao bi imati Adobe Acrobat instaliran). Jedino ako nisi mislio na Spotlight Comments (onaj koji se dobije sa cmd-I iz Findera)?

Probat ću se malo poigrati, samo moram uhvatiti vremena.
Tema zaključana.
17.02.2011 | 15:46
Smayoo je već načeo dodatna pitanja, a i mene zanima slično:

- daj bar dva (2) konkretna primjera imena PDF-a, da vidimo pattern po kojem ih je najlakše parsati
- o kojem comment fieldu je riječ?
- svi PDF fajlovi koje trebaš obraditi su u istom folderu?
Tema zaključana.
17.02.2011 | 15:47
@Sank: slozio sam si neki nacin arhiviranja koji je, mozda, malo konfuzan kad se promatra sa strane, ali sam shvatio da moj mozak tako najlakše pronalazi informaciju "at-a-glance", tako da mi ne odgovara mijenjanje naziva. Što se tiće samog formata datuma, ,oram ti priznat da mi je bilo koja druga varijanta osim ove naše uzasno nespretna. Trebam se zamisliti nad datumom da bi ga shvatio...

@smayoo: yes, mislio sam na spotlight comment. Mogu ga ukljucit kao kolumnu u finderu pa mi to super odgovara kao nacin sortiranja u folderu.
Hvala ti na usmjeravanju, poigrat cu se s time danas navecer!
Tema zaključana.
17.02.2011 | 17:37
Automator+AppleScript rješenje se svodi na dva actiona. Prvi je "Get Selected Finder Items", a drugi "Run AppleScript" i u njemu:

on run {input, parameters}
  tell application "Finder"
    repeat with myFile in input
      set myFileName to (myFile as text)
      set myComment to ((characters ((length of myFileName) - 13) thru ((length of myFileName) - 3) of myFileName) as text)
      set comment of myFile to myComment
    end repeat
  end tell
end run

Selektiraš željene fajlove u Finderu, pokreneš workflow i to je to.

Skripta radi sljedeće: "on run" preuzima parametre prethodnog actiona (popis odabranih fajlova, točnije, reference/aliase na njih). Potom se obraćamo Finderu jer je preko njega najjednostavnije editirati Spotlightov comment. Ulazimo u petlju koja će se ponoviti onoliko puta koliko smo odabrali fajlova prije pokretanja workflowa. U svakom prolasku kroz petlju myFile varijabla sadrži referencu (alias) na pojedini fajl. Sa "set myFileName to (myFile as text)" prevodimo referencu/alias u običan string. U sljedećem retku iz tog stringa, hardkodirano, vadimo datum (uzimamo karaktere s desne strane: od 13. do 3.). I na kraju taj string (datum) postavljamo u comment polje fajla.
Tema zaključana.
17.02.2011 | 19:02
Djipi kaže:
Smayoo je već načeo dodatna pitanja, a i mene zanima slično:

- daj bar dva (2) konkretna primjera imena PDF-a, da vidimo pattern po kojem ih je najlakše parsati
- o kojem comment fieldu je riječ?
- svi PDF fajlovi koje trebaš obraditi su u istom folderu?



Sorry Djipi, odgovarali smo u isto vrijeme pa nisam vidio tvoj post.

Tvoj kod ce mi rijesit problem! Samo jedno pitanje: u kodu oznacavas string od -13 do -3 a u objašnjenju navodiš do -4. Jesam li dobro shvatio da je, u stvari, u pitanju preuzimanje i točke od extenzije kao točke nakon godine?

Još, pritom, nastavljam sa učenjem... Na PrC-u nikad nisam bio pretjerano zagrijan za programiranje, ovdje mi se budi želja da nešto, stvarno, i naučim.

Hvala!
Tema zaključana.
17.02.2011 | 19:13
Samo jedno pitanje: u kodu oznacavas string od -13 do -3 a u objašnjenju navodiš do -4.

Pogrešno sam napisao u objašnjenju (evo, sad ću ispraviti pa će biti OK) - kod je ispravan.

Jesam li dobro shvatio da je, u stvari, u pitanju preuzimanje i točke od extenzije kao točke nakon godine?

Da, dobro si shvatio - preuzima i točku prije ekstenzije, tretira je kao točku nakon godine.

Na PrC-u nikad nisam bio pretjerano zagrijan za programiranje, ovdje mi se budi želja da nešto, stvarno, i naučim.

Ljudi obično izgube volju za programiranjem kad switchaju na Mac. Uživaj dok želja traje.
Tema zaključana.
09.03.2011 | 21:45
Djipi, evo da se javim da mi je ona skripta rijesila problem. Sve sam odradio bez problema onako kako sam i htio, međutim, to zapravo nije ono što mi treba...
Kao i obično, user je glup a comp je u pravu...

Treba mi, naime, obrnuti redoslijed datuma, tj NE u obliku dd.mm.yyyy (jer mi to apsolutno ne pomaže u sortiranju u Finderu) nego mi treba yyyy.mm.dd.
Probao sam biti pametan pa proširio ovu tvoju skriptu u:


on run {input, parameters}
tell application "Finder"
repeat with myFile in input
set myFileName to (myFile as text)
set myComment1 to ((characters ((length of myFileName) - 7) thru ((length of myFileName) - 3) of myFileName) as text)
set myComment2 to ((characters ((length of myFileName) - 10) thru ((length of myFileName) - 8) of myFileName) as text)
set myComment3 to ((characters ((length of myFileName) - 13) thru ((length of myFileName) - 11) of myFileName) as text)
set myComment to {myComment1, myComment2, myComment3}
set comment of myFile to myComment
end repeat
end tell
end run


međutim, ne radi. Molim te, ako mi možeš objasnit gdje griješim (vjerovatno u sintaksi spajanja tri u jednu varijablu)...
Hvala unaprijed!
Tema zaključana.
10.03.2011 | 00:34
Molim te, ako mi možeš objasnit gdje griješim (vjerovatno u sintaksi spajanja tri u jednu varijablu)...

Da, u sintaksi. Stringove (text) spajaš sa "&":

set myComment to (myComment1 & myComment2 & myComment3)
Tema zaključana.
10.03.2011 | 09:28
Hvala!
Tema zaključana.
11.03.2011 | 02:15
Eto da javim da je sve odradilo savršeno!
Hvala još jednom!
Karma +
Tema zaključana.
Moderatori: Bertone
  • Stranica:
  • 1

Prijava