AppleScript Fun: A Safari letöltési mappájának automatikus módosítása

Míg a számítógépen található különféle programok és szolgáltatások kényelmet nyújtanak Önnek, előfordulhat, hogy előfordulhat, hogy ismétlődő feladatokat kell végrehajtania a rendszer különböző eszközeivel és programjaival. Ezekben az esetekben a szkripteszközök használata kivételesen hasznos lehet. A programozással ellentétben a szkriptelés akkor történik, amikor egy sor aktuális eszközt és segédprogramot használ, és automatizálja a parancsokkal való interakciókat. Például a Javascript segítségével megmondhatja a böngészőnek, hogy módosítsa a HTML-tartalom megjelenítésének módját, vagy az Automator segítségével meg tudja mondani a Findernek, hogy bizonyos módon szervezzen fájlokat.

Nemrégiben a CNET-nél egy kolléga egyedülálló helyzetbe került, ahol azt akarta, hogy a Mac automatikusan megváltoztassa a Safari letöltési mappáját egy külső meghajtó jelenléte alapján. Az ötlet az lenne, ha a Safari letölti a letöltött fájlokat az alapértelmezett letöltési könyvtárba, de ha egy külső külső meghajtót (például "Letöltések") csatol, akkor a rendszer automatikusan átkapcsolja a Safari letöltési könyvtárát a külső meghajtóra, mivel nehézkes lehet manuálisan változtatni.

Sajnos a Safari önmagában nem tudja ezt megtenni, de az OS X rendelkezik erőforrásokkal, amelyek erre használhatók, és az AppleScript használatával szkriptethetők a Safari alkalmazás és néhány OS X szolgáltatás kezelésére, a Shell parancsfájlokat olyan műveletek végrehajtására, amelyek nem használják az alkalmazás kezelőfelülete és a rendszerindító csak a parancsfájlok futtatásához, ha meghajtó van csatlakoztatva.

Kezdetben, amikor ezt a problémát gondolkodom, a megoldás meglehetősen egyszerűnek tűnik, és a következő forgatókönyv jó választ adhat:

  1. Állítsa be a parancsfájlt a parancs futtatásához: "alapértelmezések írják com.apple.Safari DownloadFolder NAME", hogy megváltoztassa a letöltési mappát a "NAME" által megadott helyre
  2. Csak akkor futtassa ezt a parancsfájlt a rendszerindító segítségével, ha egy adott meghajtó van csatlakoztatva.
  3. Ismételje meg ezt a hasonló parancsot, amely egy másik helyre mutat, amikor a meghajtó már nincs csatlakoztatva.

Bár ez az alapvető megközelítés ésszerűnek tűnik, több okból sem fog működni. Először is, ha a Safari fut, akkor az egyetlen módja annak, hogy megváltoztassa preferenciáit a programon keresztül. Amikor a program betölti, akkor elolvassa a beállításokat a RAM-ba és kezelni fogja a beállításokat, így ha a preferenciafájlt a TextEdit vagy a "Defaults" parancs segítségével szerkeszti, akkor a program nem lesz hatással. Továbbá a Safari visszaállítja a beállításait a lemezre, amikor kilép, ami felülírja a módosított beállításokat.

Ezen túlmenően ez a megközelítés feltételezi, hogy a rendszernek rendelkezésre állnak olyan erőforrások, amelyek egy adott meghajtó jelenlétét figyelemmel kísérik, és a parancsfájlt, amikor a meghajtó jelen van, ami nem így van. A rendszer figyelemmel kíséri, hogy a meghajtók csatlakoztatva vannak-e, de további parancsfájlok szükségesek a meghajtó nevének megadásához, hogy ellenőrizze, hogy egy meghajtó van-e csatlakoztatva.

Végül számos árnyalatot kell figyelembe venni. Például, mivel maga a Safari kell használni a beállításainak megváltoztatásához futás közben, ezzel kényszeríti azt, hogy az elsődleges alkalmazás legyen, ahol marad, kivéve, ha először a szkript észleli a legfontosabb alkalmazást, és visszaállítja azt, amikor a Safari módosításai megtörténnek. teljes. Ezenkívül nem szeretné, hogy a parancsfájl futtassa és az aktív programot körülveszi, amikor bármilyen véletlen meghajtó van csatlakoztatva.

Ezek miatt a parancsfájlnak a következő öt szempontot kell tartalmaznia:

  1. Csak akkor induljon el, ha egy új meghajtó van csatlakoztatva
  2. Csak akkor módosítsa a beállításokat, ha a "Letöltések" (vagy a megnevezett név) nevű meghajtó van csatlakoztatva
  3. Feltételesnek kell lennie abban, hogy megváltoztassa a beállításokat, hogy a Safari jelenleg elindult-e
  4. Csak akkor módosítsa a beállításokat, ha új kívánt letöltési hely van jelen
  5. Képes visszaállítani az elsődleges alkalmazást, ha a parancsfájlnak Safari-ra kell váltania

Ezen opciók végrehajtásához két parancsfájlt kell létrehozni. Az első a rendszerindító "launchd" rendszerre vonatkozik, amelyet a rendszer meghajtó-rögzítési pontjainak figyelemmel kísérésére használnak, hogy meggyőződjenek arról, hogy egy új meghajtót csatlakoztattak-e vagy sem. Ha igen, akkor elindítja a meghajtó nevét ellenőrző szkriptet, meglátja, hogy fut-e a Safari, vagy csak akkor változtatja meg a Safari beállításait, ha azok eltérnek a külső meghajtó elsődleges kiválasztásától, de ha nincs jelen, akkor használja az alapértelmezett letöltési mappát .

Script 1: LaunchAgent a meghajtók felügyeletéhez

Az első parancsfájl a rendszerindító számára készült, amelyet Launch Agent-nek hívnak. A létrehozásához nyissa meg a terminált, és írja be a következő parancsot (az egyszerűség érdekében másolja és illessze be):

érintse meg a ~ / Library / LaunchAgents / local.ChangeSafariDownload.plist parancsot

Ha ez megtörtént, nyissa meg a TextEdit programban a következő parancs futtatásával:

nyissa meg a -e ~ / Library / LaunchAgents / local.ChangeSafariDownload.plist parancsot

Most egy üres TextEdit dokumentumot kell nyitnia, így másolja be a következő szöveget, és mentse el a dokumentumot, de tartsa nyitva. A szkript helyének módosításához módosítania kell a "FILEPATH" részt:

 Címke helyi.VáltoztatSafariDownloads QueueDirectories WatchPaths / Volumes Program / usr / bin / osascript ProgramArguments osascript FILEPATH 

Amikor bejelentkezik, a parancsfájl betöltődik a rendszerindító folyamatba, és megadja a feltételeket és utasításokat a fő szkript futtatásához a Safari beállításainak szerkesztéséhez. Ebben az esetben a rendszerindítónak meg kell jelennie, hogy nézze meg a könyvtárat / kötetet, hogy megtudja, hogy az adott könyvtáron belül bármilyen-e változás. Mivel ez az, ahol a fájlrendszerek vannak felszerelve, a meghajtót bármikor csatlakoztatva vagy leválasztva a rendszerből, ez a fő parancsfájlt futtatja.

Script 2: AppleScript a beállítások módosításához

A második parancsfájl a fő, amely az összes műveletet végrehajtja, beleértve a meghajtók neveinek ellenőrzését, függetlenül attól, hogy a Safari nyitva van-e, vagy bármilyen más feltétel a beállítások módosításához. A létrehozásához lépjen a / Applications / Utilities / mappába, és nyissa meg az AppleScript Editor programot. Megnyílik egy üres szerkesztőablak, és amikor másolja és beilleszti a következő parancsfájlt:

- Állítsa be a letöltési mappaként használandó alternatív meghajtónevet

állítsa be a dlFolder- et átalakítaniHome ("/ Kötetek / Letöltések")

mondja el a "Finder" alkalmazást

ha létezik [ POSIX fájl dlFolder]

- Ne csináljon semmit és használja a mappát

más

- állítsa be a dlFolder alapértelmezett otthoni könyvtárat

állítsa a dlFolder- t (POSIX elérési útja ( elérési út az otthoni mappához szövegként )) és a "Letöltések"

vége, ha

mondja el

- kapsz aktuális utat a szafari plistól

állítsa be az aktuális útvonalat a konverzióhozHome ( nem shell script ) alapértelmezett értékei: com.apple.Safari DownloadsPath))

- csak akkor módosítsa az útvonalat, ha az aktuális beállítás nem egyezik meg a beviteli útvonallal (van valami, amit meg kell változtatni)

ha (currentpath as text ) akkor nem egyenlő (dlFolder mint szöveg )

- Ha a Safari fut, változtassa meg a beállításokat a Safari beállításain keresztül

akkor ha az appIsRunning ("Safari") van

- határozza meg a visszaállítandó legelső alkalmazást a szkript végrehajtásakor

állítsa be a frontApp-ot az elsődleges alkalmazás eléréséhez

- másolja át a letöltési mappát a vágólapra

állítsa a vágólapot dlFolder-re szövegként

aktiválja a "Safari" alkalmazást

mondja el a "Rendszeresemények" alkalmazásnak, hogy mondja el a "Safari" alkalmazási folyamatot

- nyissa meg a preferenciákat, vagy vigye elõre (1. ablak)

billentyűkombináció ", " {parancs lefelé}

késleltetés 1 - az ablakban megjelenő szünetek hibákat okozhatnak, ezért várunk egy másodpercet

- Váltson az Általános lapra

kattintson az ablak 1. eszköztárának "Általános" gombjára

- A letöltési hely módosítása másra

az "Általános" ablak 1. csoportjának 1. csoportjának "Mentse le a letöltött fájlokat a következőre" feliratú gombot.

kettyenés

kattintson az 1. menü „Egyéb ...” menüpontjára - három pont egy ellipszis, nem három periódus

mondja el

- Nyissa meg a "go to folder" párbeszédpanelt

"g" billentyűkombináció a {shift down, parancs lefelé} használatával

- Illessze be a mappa elérési útját a hely mezőbe

ablak "Go to Folder"

"v" billentyűkombináció a {paranccsal lefelé}

billentyűleütés

mondja el

kattintson az "Általános" ablak 1. lapjának "Kiválasztása" gombjára

- zárja be a beállításokat

„w” billentyűleütés a {parancs lefelé} használatával

mondja el

- a munka befejezése után állítsa vissza az elsődleges alkalmazást

mondja el az alkalmazás frontApp alkalmazásának aktiválását

más

- ha a Safari nem fut, akkor használja az alapértelmezett parancsot a beállítások módosításához

a shell script ("alapértelmezett értékek: com.apple.Safari DownloadsPath" & dlFolder)

vége, ha

vége, ha

- Az otthoni útvonal hivatkozások teljes elérési útjára való átalakítására szolgáló funkció

a konverzióbanHome (currentpath)

ha az aktuális útvonal tartalmazza a "~ /" -t

állítsa be az oldDelimiter-et az AppleScript szöveges elemeinek határolóira

állítsa be az AppleScript szöveges elemeinek határolóit a következőre: {"~ /"}

állítsa be a textPath- et az aktuális útvonal minden szöveges tételéhez

állítsa be az AppleScript szöveges elemét a régiDelimiterre

állítsa be az aktuális útvonalat a POSIX elérési útjára ( a kezdő mappa elérési útja szövegként ) & 2. tétel a textPath-ben

vége, ha

visszatérési útvonal

vége átalakítaniHome

- Funkció annak ellenőrzésére, hogy az alkalmazás "appName" fut-e (ebben az esetben a Safari alkalmazásnál használatos)

appIsRunning (appName)

mondja az alkalmazásnak, hogy a "Rendszeresemények" ( a folyamatok neve ) tartalmazza az alkalmazásnevet

vége az alkalmazásoknak

A szkript szövege kezdetben lila lesz, de ha az Eszköztár összeállítása gombra kattint, vagy ha elmenti a szkriptet, akkor a színezés hasonló lesz, mint amit itt lát. Mentse el a szkriptet egy olyan névvel, mint a "ChangeDownloads", egy tetszőleges helyre (a "Scripts" mappába helyezheti a Dokumentumok könyvtárban, vagy a felhasználói könyvtárban), és zárja be az AppleScript szerkesztőt.

Most nyisson meg egy új terminálablakot, és húzza rá az újonnan elkészített szkriptfájlt. Ha ezt megteszi, a teljes fájlút a parancsfájlba be lesz írva az ablakba, ami úgy néz ki, mint "/Users/username/Documents/ChangeDownloads.scpt". Az egérrel válassza ki a teljes fájlútvonalat, nyomja meg a Command-C gombot a vágólapra való másoláshoz, és térjen vissza a TextEdit 1. szkriptjébe, és cserélje ki a "FILEPATH" bejegyzést a másolt szöveggel. Ezután mentse és zárja be a dokumentumot.

Ekkor a parancsfájlok mindegyike beállítva. Jelentkezzen ki és jelentkezzen be újra, hogy betöltse az indítóügynök parancsfájlját (Script 1), és most, amikor a "Letöltések" elnevezésű meghajtót csatlakoztatja, a Safari beállításai automatikusan módosulnak, így a meghajtót a letöltési mappaként használja. Ha ezután lekapcsolja a meghajtót, a beállítás visszaáll. Ugyanez történik akkor is, ha átnevez egy meghajtót a "Letöltések" elnevezésre, vagy megváltoztatja a nevét a "Letöltésekből" valami másra.

Ne feledje, hogy míg ez a szkript működik, csak OS X 10.6 "Snow Leopard" és OS X 10.7 "Lion" operációs rendszeren tesztelték a Safari 5.1 programot; ugyanakkor csak a Safari 5.0-t futtató más rendszerkonfigurációknak kell lennie. A fő követelmények az, amikor a szkript manipulálja a Safari beállításait a programon belül, gombindexeket használ a különböző menük megnyitásához, és a képernyő különböző gombjaira kattint. Ha az Apple a Safari rendszerben megváltoztatja a preferenciák szervezetét, akkor a szkript ezen része nem fog működni, amíg a szerkesztés megtörténik, hogy a megfelelő gombokra mutasson. Most azonban ez egy korlátozás, amellyel foglalkoznunk kell. Ennek egyik megoldása Lionban az, hogy kihasználja az Apple Resume funkcióját egy szkriptben, hogy kilépjen a Safari-ból, módosítsa a beállításokat, majd újraindítsa a programot ahelyett, hogy be kellene programoznia a felületet.

Végül, ha úgy dönt, hogy nem szeretné ezt a szkriptet többé, akkor eltávolíthatja azt az AppleScript fájl törlésével, majd eltávolíthatja a LaunchAgent fájlt kézzel vagy a következő parancs futtatásával a terminálon. Ha ez megtörténik, csak jelentkezzen ki, és jelentkezzen be újra, és vissza fog térni az egyikhez:

rm ~ / Könyvtár / LaunchAgents / local.ChangeSafariDownload.plist


 

Hagyjuk Meg Véleményét