AppleScript Fun: automātiski mainās Safari lejupielādes mape

Lai gan dažādas programmas un pakalpojumi datorā ir domāti, lai piedāvātu jums ērtāku, ir reizes, kad jums var būt nepieciešams veikt atkārtotus uzdevumus, izmantojot dažādus sistēmas rīkus un programmas. Šādos gadījumos skriptu rīku izmantošana var būt ārkārtīgi noderīga. Atšķirībā no programmēšanas, skripti ir tad, kad lietojat virkni pašreizējo rīku un utilītu un automatizējiet to mijiedarbību ar komandām. Piemēram, ar Javascript varat pārlūkprogrammai pastāstīt, kā mainīt HTML satura saturu, vai ar Automator jūs varat pastāstīt Finder, lai tā organizētu failus noteiktā veidā.

Nesen kolēģe šeit CNET vērsās pie manis ar unikālu situāciju, kur viņš gribēja, lai viņa Mac automātiski mainītu Safari lejupielādes mapi, pamatojoties uz ārēja diska klātbūtni. Ideja šeit būtu, ja Safari ielādētu lejupielādētos failus noklusējuma lejupielādes direktorijā, bet, pievienojot konkrētu ārējo disku (piemēram, īkšķi ar nosaukumu "Lejupielādes"), tad, lai sistēma automātiski pārslēgtu Safari lejupielādes direktoriju uz ārējo disku, jo tas var būt apgrūtinoši mainīt to manuāli.

Diemžēl pats Safari nespēj to izdarīt, bet OS X ir resursi, ko var izmantot šim nolūkam, un tos var skriptēt, izmantojot AppleScript, lai pārvaldītu Safari lietojumprogrammu un dažus OS X pakalpojumus, Shell skriptu, lai veiktu dažas darbības, kuras neizmanto lietojumprogrammas saskarni un sistēmas palaidēju, lai skriptus darbinātu tikai tad, ja ir pievienots diskdzinis.

Sākotnēji, domājot par šo problēmu, risinājums var šķist diezgan vienkāršs, un šāds scenārijs var šķist laba atbilde:

  1. Iestatiet skriptu, lai palaistu komandu "noklusējumi raksta com.apple.Safari DownloadFolder NAME", lai mainītu lejupielādes mapi uz vietu, ko norādījis "NAME"
  2. Palaidiet šo skriptu, izmantojot sistēmas palaidēju tikai tad, ja ir pievienots konkrēts disks.
  3. Atkārtojiet to ar līdzīgu komandu, kas norāda uz citu vietu, kad disks vairs nav pievienots.

Lai gan šī pamata pieeja var būt saprātīga, tā nedarbosies vairāku iemeslu dēļ. Pirmkārt, kad Safari darbojas, vienīgais veids, kā mainīt tās preferences, ir caur programmu. Kad programma tiek ielādēta, tā lasīs preferences RAM un pārvaldīs tās iestatījumus tur, tāpēc, ja rediģējat preferenču failu, izmantojot TextEdit vai "noklusējuma" komandu, kā minēts iepriekš, tad tas neietekmēs programmu. Turklāt Safari izraksta savas preferences atpakaļ uz disku, kad tas tiek izbeigts, kas pārrakstīs visus izmainītos iestatījumus.

Turklāt šī pieeja paredz, ka sistēmai ir pieejami resursi, kas uzraudzīs konkrēta diska klātbūtni un aktivizēs skriptu, kad tas atrodas, un tas tā nav. Sistēma var uzraudzīt, vai ir pievienoti diskdziņi, bet, lai norādītu diska nosaukumu, ir jāpārbauda papildu skripti, lai pārbaudītu, vai ir pievienots disks.

Visbeidzot, jāapsver vairākas nianses. Piemēram, tā kā pats Safari ir jāizmanto, lai mainītu tās preferences, kad tas darbojas, tas to piespiedīs būt par galveno lietojumprogrammu, kur tas paliks, ja vien jums vispirms nav skripta, kas atklās vislielāko lietojumprogrammu un atjauno to, kad izmaiņas Safari ir pabeigti. Turklāt nevēlaties, lai skripts darbotos, un, kad ir pievienota kāda nejauša diskdziņa, notiek aktīvā programma.

Šo iemeslu dēļ skriptam jāietver šādi pieci apsvērumi:

  1. Uzsākt tikai tad, ja ir pievienots jauns disks
  2. Mainiet iestatījumus tikai tad, ja ir pievienots disks ar nosaukumu "Lejupielādes" (vai jebkurš izdzēsts nosaukums)
  3. Esiet atkarīgs no tās pieejas, lai mainītu iestatījumus par to, vai Safari pašlaik tiek palaists
  4. Mainiet iestatījumus tikai tad, ja ir jauna vēlamā lejupielādes atrašanās vieta
  5. Spēj atjaunot galveno lietojumprogrammu, ja skriptam ir jāpārslēdzas uz Safari

Lai īstenotu šīs iespējas, ir jāizveido divi skripti. Pirmais ir sistēmas palaidējs "launchd", kas tiks izmantots, lai uzraudzītu sistēmas piedziņas punktus, lai redzētu, vai ir pievienots un uzstādīts jauns disks. Ja tā, tad tas sāks skriptu, kas pārbaudīs diska nosaukumu, redzēs, vai darbojas Safari, un pēc tam mainiet Safari iestatījumus tikai tad, ja tie atšķiras no sākotnējā ārējā diska izvēles, bet, ja tas nav pieejams, izmantojiet noklusējuma lejupielādes mapi .

Script 1: LaunchAgent disku uzraudzībai

Pirmais skripts, kas jāizdara, ir sistēmas palaidējam, ko sauc par palaišanas aģentu. Lai to izveidotu, atveriet termināli un ievadiet šādu komandu (kopējiet un ielīmējiet to vienkāršības labad):

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

Kad tas ir paveikts, atveriet to TextEdit, izpildot šādu komandu:

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

Tagad jums vajadzētu atvērt tukšu TextEdit dokumentu, lai kopētu šādu tekstu tajā un saglabātu dokumentu, bet paturiet to atvērtu tagad. Lai mainītu skripta atrašanās vietu, jums būs jāmaina sadaļa "FILEPATH":

 Label local.ChangeSafariDownloads QueueDirectories WatchPaths / Volumes Programma / usr / bin / osascript ProgramArguments osascript FILEPATH 

Piesakoties, šis skripts tiks ielādēts sistēmas palaišanas procesā un sniegs tam nosacījumus un instrukcijas, lai palaistu galveno skriptu, lai rediģētu Safari preferences. Šādā gadījumā palaidējam tiks rādīts direktorijs / apjomi, lai redzētu, vai šajā direktorijā notiek kādas izmaiņas. Tā kā ir uzstādīta failu sistēma, jebkurā laikā, kad tiek pievienots vai atvienots disks, tas aktivizēs galveno skriptu.

Script 2: AppleScript iestatījumu mainīšanai

Otrais skripts ir galvenais, kas veiks visas darbības, tostarp pārbauda diska nosaukumus, neatkarīgi no tā, vai Safari ir atvērts, un jebkuriem citiem nosacījumiem preferenču maiņai. Lai to izveidotu, dodieties uz / Applications / Utilities / mapi un atveriet AppleScript redaktora programmu. Tiks atvērts tukšs redaktora logs, un kad tas tajā iekopēs un ielīmēs šādu skriptu:

- iestatiet alternatīvu diska nosaukumu, ko izmantot kā lejupielādes mapi

iestatiet dlFolder konvertētMājas ("/ Apjoms / Lejupielādes")

pastāstīt lietojumprogrammai "Finder"

ja tāds ir [ POSIX fails dlFolder]

- Dariet neko un izmantojiet mapi

cits

- iestatiet dlFolder noklusējuma mājas direktorijā

iestatiet dlFolder uz (POSIX ceļš ( ceļš uz mājas mapi kā tekstu )) un "Lejupielādes"

beigas, ja

beigās pateikt

- iegūt pašreizējo ceļu no safari plist

iestatīt pašreizējo ceļu uz convertHome ( do shell script ) noklusējumus nolasīt com.apple.Safari DownloadsPath ")

- mainīt ceļu tikai tad, ja pašreizējais iestatījums neatbilst ievades ceļam (ir kaut kas maināms)

ja (pašreizējais ceļš teksts ) nav vienāds ar (dlFolder tekstu )

- ja darbojas Safari, mainiet iestatījumus, izmantojot Safari iestatījumus

tad, ja appIsRunning ("Safari")

- noteikt priekšējo lietojumprogrammu, lai atjaunotu skriptu

iestatiet frontApp, lai virzītos uz priekšējo lietojumprogrammu kā tekstu

- kopējiet lejupielādes mapes ceļu uz starpliktuvi

iestatiet starpliktuvi uz dlFolder tekstu

aktivizēt programmu "Safari"

pateikt lietojumprogrammai "Sistēmas notikumi", lai pastāstītu pieteikuma procesam "Safari"

- atveriet preferences vai uz priekšu (1. logs)

taustiņš ", " izmantojot {command down}

kavēšanās 1 - pauzes loga displejā var izraisīt kļūdas, tāpēc mēs gaidām sekundi

- Mainiet cilni Vispārīgi

noklikšķiniet uz 1. loga rīkjoslas 1 taustiņa "Vispārīgi"

- Mainīt lejupielādes atrašanās vietu uz Cits

paziņojiet pop-up pogu "Saglabāt lejupielādētos failus uz:" loga "General" 1. grupas 1. grupā

klikšķis

noklikšķiniet uz izvēlnes punkta "Citi ..." no 1. izvēlnes - trīs punkti ir elipsis, nevis trīs periodi

beigās pateikt

- Atveriet dialoglodziņu "Iet uz mapi"

taustiņš "g", izmantojot {shift down, komandu uz leju}

- Ielīmējiet mapes ceļu atrašanās vietas laukā

logu "Go to Folder"

taustiņš "v", izmantojot {komandu uz leju}

taustiņu nospiešana

beigās pateikt

noklikšķiniet uz pogas "Atlasīt" loga "Vispārīgi" 1. lapā

- aizveriet preferences

taustiņš "w", izmantojot {komandu uz leju}

beigās pateikt

- pēc darba pabeigšanas atjaunot priekšējo lietojumu

pateikt lietojumprogrammai frontApp aktivizēt

citādi

- ja Safari nedarbojas, tad izmantojiet noklusējuma komandu, lai mainītu preferences

veic čaulu skriptu ("noklusējumi raksta com.apple.Safari DownloadsPath" & dlFolder)

beigas, ja

beigas, ja

- Funkcija, lai pārvērstu mājas ceļa atsauces uz pilniem ceļiem

reklāmguvumāHome (currentpath)

ja pašreizējais ceļš satur "~ /"

iestatiet oldDelimiter uz AppleScript teksta vienību norobežotājiem

iestatiet AppleScript teksta elementu norobežotājus uz {"~ /"}

iestatiet textPath uz katru pašreizējā ceļa teksta vienumu

iestatiet AppleScript teksta elementu norobežotājus uz veco vērtētāju

iestatiet pašreizējo ceļu uz POSIX ceļu ( ceļš uz mājas mapi kā tekstu ) un 2. postenī tekstāPath

beigas, ja

atgriezties pašreizējā ceļā

beigas

- funkcija, lai pārbaudītu, vai lietojumprogramma "appName" darbojas (šajā gadījumā izmanto Safari)

lietotnēsRunning (appName)

pateikt lietojumprogrammai "Sistēmas notikumi" ( procesu nosaukumi) ir lietotnes nosaukums

beigt lietotnesRunning

Skripta teksts sākotnēji būs purpursarkans, bet, noklikšķinot uz pogas Kompilēt rīkjoslu vai, ja saglabājat skriptu, tas kļūs krāsots, līdzīgs tam, ko redzat šeit. Saglabājiet skriptu ar nosaukumu, piemēram, "ChangeDownloads", uz jūsu izvēlēto atrašanās vietu (jūs varat ievietot to mapē "Skripti" jūsu dokumentu direktorijā vai lietotāja bibliotēkā) un aizveriet AppleScript redaktoru.

Tagad atveriet jaunu termināļa logu un velciet tajā jauno skripta failu. Kad jūs to izdarīsiet, logā tiks ievadīts pilns faila ceļš uz skriptu, kas izskatīsies kā "/Users/username/Documents/ChangeDownloads.scpt". Izmantojot peli, atlasiet visu faila ceļu, nospiediet Command-C, lai to kopētu uz starpliktuvi, un atgriezieties pie Script 1 TextEdit un nomainiet ierakstu "FILEPATH" ar kopēto tekstu. Pēc tam saglabājiet un aizveriet dokumentu.

Šajā brīdī visi skripti ir izveidoti. Vienkārši piesakieties un piesakieties vēlreiz, lai ielādētu palaišanas aģentu skriptu (Script 1), un tagad, kad instalējat disku ar nosaukumu "Lejupielādes", Safari iestatījumi tiks automātiski mainīti, lai tā izmantotu šo disku kā lejupielādes mapi. Ja pēc tam atvienosiet disku, iestatījums tiks atgriezts. Tas pats notiks arī tad, ja pārdēvēsiet disku, kas tiks nosaukts par "Lejupielādes", vai arī mainīt nosaukumu no "Lejupielādes" uz kaut ko citu.

Paturiet prātā, ka, kamēr šis skripts darbojas, tas ir pārbaudīts tikai OS X 10.6 "Snow Leopard" un OS X 10.7 "Lion", kurā darbojas Safari 5.1; tomēr tai vajadzētu strādāt tikai ar citām sistēmas konfigurācijām, kurās darbojas vismaz Safari 5.0. Galvenās prasības ir, kad skripts manipulē ar Safari preferencēm programmā, tas izmanto pogu rādītājus, lai atvērtu dažādas izvēlnes, un noklikšķiniet uz dažādām pogām ekrānā. Ja Apple nākotnē mainīs Safari preferenču organizāciju, šī skripta daļa nedarbosies, kamēr tā nav rediģēta, lai atkal norādītu uz pareizajām pogām. Tomēr tagad tas ir ierobežojums, kas mums būs jārisina. Viens no risinājumiem šajā situācijā Lionā ir izmantot Apple Resume funkciju skriptos, lai izietu no Safari, veiktu preferenču izmaiņas un pēc tam atsāktu programmu, nevis programmēt interfeisu.

Visbeidzot, ja jūs nolemjat, ka vairs nevēlaties šo skriptu, tad to var atinstalēt, izdzēšot AppleScript failu un pēc tam noņemot LaunchAgent failu vai nu manuāli, vai arī izpildot šādu komandu Terminalā. Kad tas ir paveikts, piesakieties un piesakieties vēlreiz, un jūs atgriezīsieties uz kvadrātveida:

rm ~ / Bibliotēka / LaunchAgents / local.ChangeSafariDownload.plist


 

Atstājiet Savu Komentāru