AppleScript Zabava: Automatski mijenja Safari preuzimanja mape

Dok su različiti programi i usluge na računalu namijenjeni da vam pruže praktičnost, ponekad postoji potreba za ponovnim zadacima pomoću različitih alata i programa na sustavu. U tim slučajevima korištenje skriptnih alata može biti iznimno korisno. Za razliku od programiranja, skriptiranje je kada uzmete skup trenutnih alata i uslužnih programa i automatizirate njihove interakcije s naredbama. Na primjer, s Javascriptom možete reći pregledniku da promijeni način na koji prikazuje HTML sadržaj, ili s automatizatorom možete reći Finderu da organizira datoteke na određeni način.

Nedavno mi je kolega na CNET-u prišao s jedinstvenom situacijom, gdje je htio da njegov Mac automatski promijeni Safarijevu mapu za preuzimanje na temelju prisutnosti vanjskog pogona. Ideja bi bila da Safari postavi preuzete datoteke u zadani direktorij za preuzimanja, ali kada priložite određeni vanjski disk (kao što je pogon za preuzimanje datoteka pod nazivom "Preuzimanja"), a zatim da sustav automatski prebaci direktorij Safari preuzimanja na vanjski pogon, budući da može biti glomazna da bi se ručno mijenjala.

Nažalost, sam Safari nema mogućnost da to učini, ali OS X ima resurse koji se mogu koristiti za to i biti skriptirani koristeći AppleScript za upravljanje Safari aplikacijom i nekim OS X uslugama, Shell skriptiranje za izvođenje nekih radnji koje ne koriste sučelje aplikacije i pokretač sustava samo za pokretanje skripti kada je pogon priključen.

U početku, kada se razmišlja o ovom problemu, rješenje može izgledati prilično jednostavno, a sljedeći scenarij može izgledati kao dobar odgovor:

  1. Postavite skriptu da biste pokrenuli naredbu "zadane postavke pisanja com.apple.Safari DownloadFolder NAME" da biste promijenili mapu preuzimanja na lokaciju koju je naveo "NAME"
  2. Pokrenite ovu skriptu pomoću pokretača sustava samo kada je priključen određeni pogon.
  3. Ponovite to sa sličnom naredbom koja pokazuje na drugo mjesto kada pogon više nije priključen.

Iako se ovaj osnovni pristup može činiti razumnim, neće funkcionirati iz više razloga. Prvo, kada se Safari pokrene, jedini način da promijenite svoje postavke je kroz sam program. Kada se program učita, pročitat će postavke u RAM-u i upravljati njegovim postavkama tamo, tako da ako uređujete datoteku s preferencama koristeći TextEdit ili "zadane" naredbe kao što je gore navedeno, to neće imati učinka na program. Nadalje, Safari zapisuje svoje postavke natrag na disk kada izađe, što bi prebrisalo sve izmijenjene postavke.

Osim toga, ovaj pristup pretpostavlja da sustav ima dostupne resurse koji će pratiti prisutnost određenog pogona i pokrenuti skriptu kad god je prisutan pogon, što nije slučaj. Sustav može nadzirati jesu li pogoni pričvršćeni, ali bi bilo potrebno dodatno skriptiranje da bi se odredio naziv pogona za provjeru kada se priključi pogon.

Konačno, postoji niz nijansi koje treba razmotriti. Na primjer, budući da sam Safari mora biti korišten za promjenu svojih postavki kada se izvodi, to će prisiliti da bude najistaknutija aplikacija, gdje će ostati, osim ako prvo ne otkrijete skriptu najranije aplikacije i vratite je kada izmjene u Safariju su potpuni. Osim toga, ne želite da se skripta pokreće i prebacuje aktivni program okolo kada se priključi bilo koji slučajni pogon.

Zbog toga bi skripta trebala uključivati ​​sljedećih pet razmatranja:

  1. Pokrenite samo kada je priključen novi pogon
  2. Promijenite postavke samo ako je priključen pogon nazvan "Preuzimanja" (ili bilo koje prezime)
  3. U svom pristupu promijenite postavke o tome je li Safari trenutno pokrenut ili ne
  4. Promijenite postavke samo ako postoji nova željena lokacija za preuzimanje
  5. Imati mogućnost vraćanja najistaknutije aplikacije ako skripta treba prijeći na Safari

Da bi se implementirale ove opcije, trebale bi se stvoriti dvije skripte. Prvi je za pokretanje sustava "launchd" koji bi se koristio za praćenje točaka montiranja pogona sustava, kako bi se vidjelo je li priključen ili montiran novi pogon. Ako je tako, pokrenut će skriptu koja će provjeriti naziv pogona, vidjeti hoće li se Safari pokrenuti ili ne, a zatim promijeniti postavke Safari samo ako se razlikuju od primarnog odabira vanjskog pogona, ali ako nije prisutan, upotrijebite zadanu mapu Preuzimanja.,

Skripta 1: LaunchAgent za praćenje pogona

Prva skripta koju treba napraviti je za pokretač sustava, koji se naziva agent za pokretanje. Da biste ga stvorili, otvorite terminal i upišite sljedeću naredbu (kopirajte i zalijepite radi jednostavnosti):

dodirnite ~ / Library / LaunchAgents / local.ChangeSafariDownload.plist

Kada to učinite, otvorite ga u TextEdit pokretanjem sljedeće naredbe:

otvoriti -e ~ / Library / LaunchAgents / local.ChangeSafariDownload.plist

Sada biste trebali imati otvoren prazan TextEdit dokument, tako da u njega kopirajte sljedeći tekst i spremite dokument, ali ga zadržite otvorenim za sada. Morat ćete promijeniti odjeljak "FILEPATH" kako biste promijenili lokaciju skripte:

 Oznaka local.ChangeSafariDownloade QueueDirectoriesPaths / Volumes Program / usr / bin / osascript ProgramArguments osascript FILEPATH 

Kada se prijavite, ova skripta će se učitati u proces pokretanja sustava i dati joj uvjete i upute za pokretanje glavne skripte za uređivanje Safarijevih postavki. U tom slučaju, pokretač će biti obaviješten da gleda direktorij / Volumes da vidi da li se bilo koja promjena dogodi unutar tog direktorija. Budući da se ovdje montiraju datotečni sustavi, u bilo kojem trenutku kada je pogon priključen ili odvojen od sustava, pokrenut će se glavna skripta.

Skripta 2: AppleScript za promjenu postavki

Druga skripta je glavna koja će izvršiti sve radnje, uključujući provjeru naziva pogona, je li Safari otvoren ili ne, te bilo koje druge uvjete za promjenu postavki. Da biste je stvorili, idite u mapu / Applications / Utilities / i otvorite program AppleScript Editor. Otvorit će se prazno prozor za uređivanje, a kada to učini, u njega kopirajte i zalijepite sljedeću skriptu:

- Postavite alternativni naziv pogona kao mapu za preuzimanje ovdje

postavi dlFolder na convertHome ("/ Volumes / Downloads")

javi aplikaciji "Finder"

tada postoji [ POSIX datoteka dlFolder]

- Napravite Ništa i koristite mapu

drugo

- Postavite dlFolder na zadani home direktorij

postavite dlFolder na (POSIX putanja od ( put do mape u obliku teksta )) & "Preuzimanja"

završi ako

kraj reći

- dobiti trenutni put iz safari plist

postavi currentpath na convertHome ( ne učini skriptu "zadane postavke za čitanje com.apple.Safari DownloadsPath")

- promijeni put samo ako trenutna postavka ne odgovara ulaznoj stazi (postoji nešto za promijeniti)

if (currentpath kao tekst ) tada nije jednako (dlFolder kao tekst )

- ako je Safari pokrenut, promijenite postavke putem postavki Safari

tada appIsRunning ("Safari")

- odrediti frontmost aplikaciju za vraćanje kada je skripta gotova

postaviti frontApp na put do frontmost aplikacije kao tekst

- kopirajte putanju mape preuzimanja u međuspremnik

postavite međuspremnik na dlFolder kao tekst

aktiviraj aplikaciju "Safari"

prijavi aplikaciji "Događaji sustava" za prijavu procesa "Safari"

- otvoriti postavke ili dovesti na početak (prozor 1)

tipka ", " pomoću {naredbe dolje}

kašnjenje 1 - pauze u prikazu prozora mogu rezultirati pogreškom, pa čekamo trenutak

- Promijenite karticu Općenito

kliknite gumb "Općenito" na alatnoj traci 1 prozora 1

- Promijenite lokaciju preuzimanja u Ostalo

click pop up gumb "Spremi preuzete datoteke na:" grupe 1 grupe 1 prozora "Općenito"

klik

kliknite stavku izbornika "Ostalo ..." izbornika 1 - tri točke je elipsa, a ne tri razdoblja

kraj reći

- Otvorite dijaloški okvir "Idi u mapu"

tipka "g" pomoću {shift down, naredba dolje}

- Zalijepite stazu mape u polje lokacije

prozori s porukom "Idi na mapu"

tipka "v" pomoću {naredbe dolje}

povratak tipke

kraj reći

kliknite gumb "Odaberi" lista 1 prozora "Općenito"

- zatvorite postavke

tipka "w" pomoću {command down}

kraj reći

- vraćanje primarne aplikacije nakon završetka posla

obavijestite aplikaciju frontApp za aktivaciju

drugo

- ako se Safari NE izvodi, a zatim koristite naredbu defaults za promjenu postavki

do shell skripte ("zadani napiši com.apple.Safari DownloadsPath" & dlFolder)

završi ako

završi ako

- Funkcija za pretvaranje referenci kućne staze na pune staze

na convertHome (currentpath)

ako currentpath sadrži "~ /" tada

postavite oldDelimiter na AppleScript graničnike s tekstualnim stavkama

postavite razdjelnike tekstualne stavke AppleScripta na {"~ /"}

postavite textPath na svaku tekstualnu stavku currentpath

postavite razdjelnike tekstualne stavke AppleScripta na stariDelimiter

postavite currentpath na POSIX stazu od ( put do mape kuće kao tekst ) i stavka 2 u textPath

završi ako

return currentpath

kraj convertHome

- Funkcija za provjeru izvodi li se aplikacija "appName" (u ovom slučaju za Safari)

na appIsRunning (appName)

prijavi aplikaciju "Događaji sustava" na (ime procesa ) sadrži appName

kraj aplikacije

Tekst skripte će u početku biti ljubičast, ali kada kliknete na gumb alatne trake Prevedi ili ako spremite skriptu, bit će obojen slično onome što vidite ovdje. Spremite skriptu s imenom kao što je "ChangeDownloads" na mjesto po vašem izboru (možete ga smjestiti u mapu "Skripte" u direktoriju Dokumenti ili unutar vaše korisničke knjižnice) i zatvoriti uređivač AppleScripta.

Sada otvorite novi prozor Terminala i povucite novu datoteku skripte u nju. Kada to učinite, puni put datoteke do skripte bit će unesen u prozor, koji će izgledati kao "/Users/username/Documents/ChangeDownloads.scpt." Pomoću miša odaberite cijeli put datoteke, pritisnite Command-C da biste ga kopirali u međuspremnik i vratili se na Script 1 u TextEdit i zamijenili unos "FILEPATH" kopiranim tekstom. Zatim spremite i zatvorite dokument.

U ovom trenutku skripte su postavljene. Samo se odjavite i ponovno prijavite kako biste učitali skriptu agenta za pokretanje (Script 1), a sada kada montirate pogon koji se zove "Preuzimanja", postavke Safari-ja bit će automatski promijenjene tako da koristi taj pogon kao mapu preuzimanja. Ako zatim isključite pogon, postavka će biti vraćena. Isto će se dogoditi i ako preimenujete disk koji se zove "Preuzimanja" ili promijenite naziv s "Preuzimanja" na nešto drugo.

Imajte na umu da je skripta, iako radi, testirana samo na OS X 10.6 "Snow Leopard" i OS X 10.7 "Lion" koja izvodi Safari 5.1; međutim, to bi trebalo dobro funkcionirati na drugim konfiguracijama sustava koje pokreću barem Safari 5.0. Glavni zahtjevi su kada skripta manipulira Safarijevim postavkama unutar programa, ona koristi indekse tipki za otvaranje različitih izbornika i klikanje na različite gumbe na zaslonu. Ako Apple u budućnosti promijeni organizaciju postavki u Safariju, onda ovaj dio skripte neće raditi dok se ne promijeni tako da pokazuje na odgovarajuće gumbe. Međutim, za sada je to ograničenje s kojim ćemo se morati nositi. Jedno rješenje za ovo u Lionu je iskoristiti Appleovu značajku Resume u skripti kako bi zatvorio Safari, napravio promjene postavki, a zatim ponovno pokrenuo program umjesto programiranja sučelja.

Konačno, ako odlučite više ne želite ovu skriptu, možete je deinstalirati tako da obrišete datoteku AppleScript, a zatim uklonite datoteku LaunchAgent ili ručno ili izvršavanjem naredbe na terminalu. Kada se to učini, odjavite se i ponovno prijavite, a vratit ćete se na prvo mjesto:

rm ~ / Library / LaunchAgents / local.ChangeSafariDownload.plist


 

Ostavite Komentar