Funkcia AppleScript Fun: Automatická zmena priečinka preberania Safari

Zatiaľ čo rôzne programy a služby na počítači sú určené na to, aby vám poskytli pohodlie, existujú chvíle, kedy budete musieť robiť opakujúce sa úlohy pomocou rôznych nástrojov a programov v systéme. V takýchto prípadoch môže byť použitie skriptovacích nástrojov výnimočne užitočné. Na rozdiel od programovania je skriptovanie, keď si vezmete súpravu aktuálnych nástrojov a pomôcok a automatizujete ich interakcie s príkazmi. Napríklad pomocou Javascriptu môžete zistiť, že prehliadač zmenil spôsob, akým vykresľuje obsah HTML, alebo pomocou nástroja Automator môžete vyhľadať nástroj Finder na organizáciu súborov určitým spôsobom.

Nedávno som sa tu pridal kolega z CNET s jedinečnou situáciou, v ktorej chcel, aby jeho Mac automaticky zmenil priečinok sťahovania Safari na základe prítomnosti externého disku. Myšlienkou by bolo, keby si Safari stiahol súbory do predvoleného adresára na prevzatie, ale keď pripojíte určitú externú jednotku (napr. "Thumbdrive" s názvom "Downloads"), potom nechajte systém automaticky prepínať priečinok Safari na externú jednotku, pretože môže byť ťažkopádne ju meniť manuálne.

Bohužiaľ Safari sám nemá schopnosť to urobiť, ale OS X nemá prostriedky, ktoré môžu byť použité na tento účel a budú skriptované pomocou AppleScriptu pre správu aplikácie Safari a niektoré služby OS X, Shell skriptovanie na vykonanie niektorých činností, ktoré nepoužívajú rozhranie aplikácie a spúšťač systému na spustenie skriptov iba pri pripojení jednotky.

Spočiatku pri rozmýšľaní o tomto probléme sa riešenie môže zdať pomerne jednoduché a nasledujúci scenár sa môže javiť ako dobrá odpoveď:

  1. Nastavte skript na spustenie príkazu "default.dat write com.apple.Safari DownloadFolder NAME", ak chcete zmeniť priečinok na prevzatie na miesto, ktoré určil "NAME"
  2. Spustite tento skript pomocou spúšťača systému iba vtedy, keď je pripojená špecifická jednotka.
  3. Opakujte to s podobným príkazom, ktorý ukazuje na iné miesto, keď už nie je pripojený disk.

Hoci sa tento základný prístup môže zdať rozumný, nebude to fungovať z mnohých dôvodov. Po prvé, keď Safari beží, potom jediný spôsob, ako zmeniť jeho preferencie, je prostredníctvom samotného programu. Keď program načíta, prečíta predvoľby do pamäte RAM a spravuje tam svoje nastavenia, takže ak upravíte súbor s predvoľbami pomocou TextEdit alebo príkazom "predvolené" ako je uvedené vyššie, nebude to mať žiadny vplyv na program. Okrem toho Safari zapíše svoje preferencie späť na disk po ukončení, čo by prepísalo akékoľvek zmenené nastavenia.

Okrem toho tento prístup predpokladá, že systém má k dispozícii zdroje, ktoré budú monitorovať prítomnosť konkrétnej jednotky a spúšťať skript vždy, keď je prítomná táto jednotka, čo nie je. Systém dokáže sledovať, či sú alebo nie sú pripojené jednotky, ale je potrebné dodatočné skriptovanie, aby ste špecifikovali názov jednotky, ktorý sa má skontrolovať pri pripojení disku.

Nakoniec existuje množstvo odtieňov, ktoré je potrebné zvážiť. Keďže napríklad Safari musí byť použitý na zmenu svojich preferencií pri spustení, prinúti ho k tomu, aby bol najdôležitejšou aplikáciou, kde zostane, kým najprv skript nezistí najdôležitejšiu aplikáciu a neobnoví ju pri modifikáciách Safari sú úplné. Navyše nechcete, aby bol skript spustený a spustený aktívny program okolo, keď je pripojená ľubovoľná náhodná jednotka.

Z tohto dôvodu by scenár musel obsahovať tieto päť úvah:

  1. Spustite len pri pripojení novej jednotky
  2. Zmeňte nastavenia iba vtedy, ak je pripojená jednotka s názvom "Súbory na prevzatie" (alebo ľubovoľný názov)
  3. Podmienka je v jeho prístupe k zmene nastavení, či sa Safari momentálne spúšťa alebo nie
  4. Zmeňte nastavenia len vtedy, ak je k dispozícii nové požadované miesto na prevzatie
  5. Majú schopnosť obnoviť najdôležitejšiu aplikáciu, ak skript potrebuje prejsť na Safari

Na implementáciu týchto možností by bolo potrebné vytvoriť dva skripty. Prvý je pre spúšťač systému "launchd", ktorý sa použije na monitorovanie bodov pripojenia disku k systému, aby sa zistilo, či bola nová jednotka pripojená a namontovaná. Ak áno, spustí sa skript, ktorý skontroluje názov jednotky, či Safari beží alebo nie, a potom zmeniť nastavenia programu Safari iba vtedy, ak sa líšia od primárnej voľby externej jednotky, ale ak nie je prítomná, použite predvolený priečinok Downloads,

Script 1: LaunchAgent na monitorovanie diskov

Prvý skript, ktorý sa má vykonať, je pre spúšťač systému, ktorý sa nazýva spúšťací agent. Ak ho chcete vytvoriť, otvorte terminál a zadajte nasledujúci príkaz (jednoducho ho skopírujte a vložte):

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

Keď sa to stane, otvorte ho v aplikácii TextEdit spustením nasledujúceho príkazu:

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

Teraz by ste mali mať prázdny dokument TextEdit otvorený, skopírujte do neho nasledujúci text a uložte dokument, ale nechajte ho otvorený. Pre zmenu umiestnenia skriptu budete musieť zmeniť sekciu "FILEPATH":

 Štítok local.ChangeSafariDownloads QueueDirectoriesSledujtePostupy / zväzky Program / usr / bin / osascript ProgramAguments osascript FILEPATH 

Keď sa prihlásite, tento skript sa načíta do procesu spustenia systému a poskytne mu podmienky a pokyny na spustenie hlavného skriptu na úpravu predvolieb služby Safari. V tomto prípade bude spustený spúšťač, aby sledoval adresár / Zväzky, aby zistil, či sa v tomto adresári vyskytnú nejaké zmeny. Keďže to je miesto, kde sú pripojené súbory, kedykoľvek je jednotka pripojená alebo odpojená od systému, spustí sa tak spustenie hlavného skriptu.

Skript 2: AppleScript na zmenu nastavení

Druhý skript je hlavný, ktorý vykoná všetky akcie, vrátane kontroly názvov jednotiek, bez ohľadu na to, či je alebo nie je otvorený program Safari, a všetky ostatné podmienky na zmenu predvolieb. Ak ho chcete vytvoriť, prejdite do priečinka / Applications / Utilities / / Applications / Utilities a otvorte program AppleScript Editor. Otvorí sa prázdne okno editora a pri kopírovaní a vkladaní do neho nasledujúci skript:

- Nastavte alternatívny názov disku, ktorý sa tu používa ako priečinok na prevzatie

nastaviť dlFolder na konvertovanie domény ("/ Objemy / Na stiahnutie")

povedzte aplikácii "Finder"

ak existuje [ POSIX súbor dlFolder] potom

- Nič a nepoužívajte priečinok

inak

- nastaviť dlFolder na štandardný domovský adresár

nastavte dlFolder na (POSIX cestu ( cesta k domovskému priečinku ako text )) & "Downloads"

koniec Ak

koniec povedať

- dostať aktuálnu cestu z safari plist

nastaviť currentpath na konvertHome ( do shellu skript "predvolené čítanie com.apple.Safari DownloadsPath")

- zmeniť cestu len v prípade, že aktuálne nastavenie nezodpovedá vstupnej ceste (niečo sa nemení)

ak (aktuálna cesta ako text ) nie je rovná (dlFolder ako text ) potom

- Ak je Safari spustený, zmeňte nastavenia pomocou predvolieb programu Safari

ak appIsRunning ("Safari") potom

- určiť najprednejšiu aplikáciu, ktorá sa má obnoviť po dokončení skriptu

nastavte frontApp na cestu k najprednejšej aplikácii ako text

skopírujte cestu k priečinku sťahovania do schránky

nastavte schránku na dlFolder ako text

aktivovať aplikáciu "Safari"

povedzte aplikácii "Systémové udalosti" povedzte, že proces podávania žiadostí "Safari"

- otvorte predvoľby alebo vpred (okno 1)

stlačenie klávesy ", " pomocou príkazu {command down}

oneskorenie 1 - prestávky v zobrazení okien môžu spôsobiť chybu, takže čakáme sekundu

- Zmeňte na kartu Všeobecné

kliknite na tlačidlo "Všeobecné" na lište nástrojov 1 okna 1

- Zmeňte umiestnenie na prevzatie na Iné

povedzte rozbaľovacie tlačidlo "Uložiť stiahnuté súbory do:" zo skupiny 1 v skupine 1 okna "Všeobecné"

cvaknutie

kliknite na položku ponuky "Iné ..." menu 1 - tri body sú elipsu, nie tri obdobia

koniec povedať

- Otvorte dialógové okno "Choď do priečinka"

stlačenie klávesy "g" pomocou klávesu {shift down, command down}

- Vložte cestu do priečinka s polohou

zadajte okno "Choď do priečinka"

stlačenie klávesy "v" pomocou {príkazu dole}

návrat klávesy

koniec povedať

kliknite na tlačidlo "Vybrať" v hárku 1 okna "Všeobecné"

- zatvorte predvoľby

stlačenie klávesy "w" pomocou príkazu {command down}

koniec povedať

- obnoviť najprednejšiu aplikáciu po dokončení úlohy

povedzte aplikácii frontApp, aby ste ju aktivovali

inak

- Ak Safari NIE JE spustený, použite predvolený príkaz na zmenu predvolieb

robiť skript shell ("predvolené písanie com.apple.Safari DownloadsPath" & dlFolder)

koniec Ak

koniec Ak

- Funkcia na prevod odkazov domovskej cesty na plné cesty

na convertHome (aktuálna cesta)

ak aktuálna cesta obsahuje "~ /" potom

nastavte oldDelimiter na oddeľovače textových položiek AppleScript

nastavte oddeľovače textových položiek AppleScript na {"~ /"}

nastavte textPath na každú textovú položku aktuálnej cesty

nastavte oddeľovače textových položiek AppleScript na oldDelimiter

nastaviť aktuálnu cestu na cestu POSIX ( cesta k domovskému priečinku ako text ) a položka 2 v textPath

koniec Ak

návratná trasa

end convertHome

- Funkcia na kontrolu, či je spustená aplikácia "appName" (v tomto prípade sa používa pre Safari)

na appIsRunning (appName)

povedzte aplikácii "Systémové udalosti" na (názov procesov ) obsahuje appName

end appIsRunning

Text skriptu bude spočiatku fialový, ale po kliknutí na tlačidlo na kompiláciu na paneli nástrojov alebo ak skript uložíte, bude farbený podobne, ako tu vidíte. Uložte skript s názvom ako "ChangeDownloads" na miesto, ktoré si vyberiete (môžete ho umiestniť do priečinka "Scripts" v adresári Dokumenty alebo vo vašej používateľskej knižnici) a zavrieť editor AppleScript.

Teraz otvorte nové okno Terminálu a presuňte novo vytvorený súbor skriptu. Keď to urobíte, do okna sa zadá úplná cesta k súboru, ktorá bude vyzerať ako "/Users/username/Documents/ChangeDownloads.scpt". Pomocou myši vyberte celú cestu k súboru, stlačením príkazu C ju skopírujte do schránky a vráťte sa do skriptu 1 v aplikácii TextEdit a nahraďte položku "FILEPATH" s kopírovaným textom. Potom dokument uložte a zatvorte.

V tomto bode sú všetky skripty nastavené. Stačí sa odhlásiť a prihlásiť sa späť na načítať skript agenta spustenia (Script 1), a teraz, keď pripojíte disk s názvom "Downloads" nastavenia Safari sa automaticky zmení, takže používa túto jednotku ako priečinok na stiahnutie. Ak odpojíte jednotku, nastavenie sa vráti späť. To isté sa stane, ak premenujete menovku s názvom "Na stiahnutie" alebo zmeníte jej názov z "Na stiahnutie" na niečo iné.

Majte na pamäti, že zatiaľ čo tento skript funguje, bol testovaný iba na OS X 10.6 "Snow Leopard" a OS X 10.7 "Lion" so Safari 5.1; Avšak by mal fungovať správne aj na iných systémových konfiguráciách bežiacich aspoň Safari 5.0. Hlavné požiadavky spočívajú v tom, keď skript manipuluje s preferenciami programu Safari v rámci programu, pomocou indexov tlačidiel otvorí rôzne ponuky a klikne na rôzne tlačidlá na obrazovke. Ak spoločnosť Apple v budúcnosti zmení organizáciu preferencií v službe Safari, potom táto časť skriptu nebude fungovať, kým nebude upravená, aby znova ukázala správne tlačidlá. Avšak zatiaľ to bude obmedzenie, s ktorým budeme musieť čeliť. Jedným z riešení tohto riešenia v Lione je využiť funkciu Apple Resume v skripte, aby ste ukončili program Safari, vykonali zmeny v preferenciách a potom spustili program, namiesto toho, aby musel naprogramovať rozhranie.

Nakoniec, ak sa rozhodnete, že tento skript už nebudete chcieť, môžete ho odinštalovať odstránením súboru AppleScript a následným odstránením súboru LaunchAgent buď manuálne alebo spustením nasledujúceho príkazu v termináli. Keď sa to stane, odhláste sa a prihláste sa späť a budete sa vrátiť na štvorcový:

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


 

Zanechajte Svoj Komentár