AppleScript Fun: Safari allalaadimiskataloogi automaatne muutmine

Kuigi arvutis olevad erinevad programmid ja teenused on mõeldud teile mugavamaks pakkumiseks, on aeg-ajalt vaja teha korduvaid ülesandeid süsteemi erinevate tööriistade ja programmide abil. Sellistel juhtudel võib skriptivahendite kasutamine olla erakordselt kasulik. Erinevalt programmeerimisest on skriptimine siis, kui võtate rea praeguseid tööriistu ja utiliite ning automatiseerite nende suhted käskudega. Näiteks saate Javascriptiga öelda, et brauser muudab HTML-sisu muutmise viisi või Automatoriga saate Finderile failide teatud viisil organiseerida.

Hiljuti pöördus siin CNETi kolleeg ainulaadse olukorraga, kus ta tahtis, et tema Mac muudaks Safari allalaadimiskataloogi automaatselt välise draivi olemasolu alusel. Siinkohal oleks idee, et Safari asetaks allalaaditud failid vaikimisi Allalaadimiste kataloogi, kuid kui lisate kindla välise draivi (näiteks thumbdrive'i, mida nimetatakse "Downloads"), siis peaks süsteem automaatselt Safari allalaadimiskataloogi väliseks draiviks vahetama, kuna see võib olla keeruline seda käsitsi muuta.

Kahjuks ei ole Safaril seda võimalust teha, kuid OS X-l on ressursse, mida saab selle jaoks kasutada ja mida saab kasutada AppleScripti abil, et hallata Safari rakendust ja mõningaid OS X teenuseid, Shelli skriptimine mõne toimingu tegemiseks, mis ei kasuta rakenduse liides ja süsteemi käivitaja ainult skriptide käitamiseks, kui draiv on ühendatud.

Algselt selle probleemi mõtlemisel võib lahendus tunduda üsna lihtne ja järgmine stsenaarium võib tunduda hea vastusena:

  1. Seadistage käsk käsku käivitamiseks "vaikeväärtused kirjuta com.apple.Safari DownloadFolder NAME", et muuta allalaadimiskataloogi "NAME" määratud asukohta
  2. Käivitage see skript süsteemi käivitaja abil ainult siis, kui on lisatud kindel draiv.
  3. Korrake seda sarnase käsu abil, mis viitab teisele asukohale, kui draiv ei ole enam kinnitatud.

Kuigi see põhiline lähenemisviis võib tunduda mõistlik, ei toimi see mitmel põhjusel. Esiteks, kui Safari töötab, on ainus viis oma eelistuste muutmiseks läbi programmi ise. Kui programm laadib, loeb see eelistused RAM-i ja haldab seal olevaid seadeid, nii et kui te redigeerite eelistuste faili TextEditi või "vaikimisi" käsu abil, nagu eespool mainitud, siis see ei mõjuta programmi. Peale selle kirjutab Safari oma eelistused tagasi, kui nad lõpetavad, mis muudaks kõik muudetud seaded.

Lisaks eeldab see lähenemine, et süsteemil on olemasolevaid ressursse, mis jälgivad konkreetse draivi olemasolu ja käivitavad skripti alati, kui draiv on olemas, mis ei ole nii. Süsteem saab jälgida, kas draivid on ühendatud või mitte, kuid draivi nime määramiseks on vaja täiendavat skriptimist, et kontrollida, kas draiv on lisatud.

Lõpuks on mitmeid kaalutlusi. Näiteks, kuna Safari on vaja kasutada oma eelistuste muutmiseks töötamise ajal, sunnib see seda tegema kõige olulisemaks rakenduseks, kus see jääb, välja arvatud juhul, kui skript tuvastab esmalt rakenduse ja taastab selle, kui Safari muudatused on tehtud on valmis. Lisaks ei soovi, et skript käivituks ja aktiivse programmi ümber lülitaks, kui mis tahes juhuslik draiv on ühendatud.

Nende tõttu peaks skript sisaldama viit järgmist kaalutlust:

  1. Käivitage ainult siis, kui on lisatud uus draiv
  2. Muuda seadeid ainult siis, kui lisatud on draiv nimega "Allalaadimised" (või mis tahes soovitud nimi)
  3. Olge tingimuslik oma lähenemisviisi muutmisel, kas Safari on praegu käivitatud või mitte
  4. Muuda seadeid ainult siis, kui on olemas uus soovitud allalaadimiskoht
  5. Võimalus taastada peamine rakendus, kui skriptil peab olema Safari

Nende valikute rakendamiseks tuleb luua kaks skripti. Esimene on süsteemi käivitaja "launchd", mida kasutatakse süsteemi juhtimispunktide jälgimiseks, et näha, kas uus draiv on kinnitatud ja paigaldatud. Kui jah, siis käivitab see skripti, mis kontrollib draivi nime, kas Safari töötab või mitte, ja seejärel muutke Safari seadeid ainult siis, kui need erinevad esmalt välise draivi valimisest, kuid kui see ei ole olemas, siis kasuta vaikimisi allalaaditud kausta .

Script 1: LaunchAgent draivide jälgimiseks

Esimene skript, mida teha, on süsteemi käivitaja, mida nimetatakse käivitusagendiks. Selle loomiseks avage terminal ja sisestage järgmine käsk (kopeerige ja kleepige see lihtsuse huvides):

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

Kui see on lõpetatud, avage see tekstikäsiraamatus järgmise käsu abil:

avage -e ~ / Raamatukogu / LaunchAgents / local.ChangeSafariDownload.plist

Nüüd peaksite avama tühja TextEdit-dokumendi, nii et kopeerige järgmine tekst ja salvestage dokument, kuid hoidke see nüüd avatud. Skripti asukoha muutmiseks peate muutma sektsiooni "FILEPATH":

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

Sisselogimisel laaditakse see skript süsteemi käivitusprotsessi ja annab talle tingimused ja juhised peamise skripti käivitamiseks Safari eelistuste muutmiseks. Sellisel juhul räägitakse käivitajast kataloogi vaatamiseks / mahust, et näha, kas selles kataloogis on muudatusi. Kuna see on koht, kus failisüsteemid on monteeritud, käivitab ajami külge süsteemi käivitamise või eemaldamise aja, kui see käivitab põhiskripti.

Script 2: AppleScript seadete muutmiseks

Teine skript on peamine, mis täidab kõik toimingud, sealhulgas draivide nimede kontrollimine, olenemata sellest, kas Safari on avatud või mitte, ja muud tingimused eelistuste muutmiseks. Selle loomiseks avage / Applications / Utilities / kaust ja avage programm AppleScript Editor. Avaneb tühi redaktoriaken ja kui see kopeerib ja kleepib sellele järgmise skripti:

- Määrake allalaadimiskaustana kasutatav alternatiivne draivi nimi

seadke dlFolder teisendamiseksHome ("/ Köited / Allalaadimised")

ütle rakendusele "Finder"

kui on olemas [ POSIX-fail dlFolder]

- Tehke midagi ja kasutage kausta

muidu

- seadistage dlFolder vaikekataloogiks

seadistage dlFolder (POSIX-i tee ( tee kodukausta tekstiks )) ja „Allalaadimised“

lõpp, kui

lõpuks ütle

- saada praeguse tee Safari plistist

seada currentpath teisendamiseksHome ( kas shelliskript ) vaikeseaded loe com.apple.Safari DownloadsPath ")

- tee muutmine ainult siis, kui praegune seade ei vasta sisenditeele (midagi on muudetav)

kui (currentpath as text ) ei ole võrdne (dlFolder kui tekst )

- kui Safari töötab, muutke seadeid Safari eelistuste kaudu

kui appIsRunning ("Safari") siis

- määrake esmase rakenduse taastamine, kui skript on tehtud

seadistage frontApp, et liikuda esiplaanile tekstina

- kopeerige allalaadimiskausta tee lõikepuhvrisse

määrake lõikepuhvri tekstiks dlFolder

aktiveerige rakendus "Safari"

ütle rakendusele "Süsteemiüritused", et öelda rakenduse "Safari" protsessile

- avage eelistused või viige esile (aken 1)

klahvivajutus ", " kasutades {command down}

viivitus 1 - pausi aknas võib põhjustada vea, seega ootame teist

- Vaheta vahekaardile Üldine

klõpsa akna 1 tööriistariba 1 nupule „Üldine”

- Muuda allalaadimise asukohta Muu

ütle pop-up nupp "Salvesta allalaaditud failid:" akna "Üldine" 1. rühma 1. rühma

klõpsa

klõpsake menüüelementi "Muu ..." menüüst 1 - kolm punkti on ellipsi, mitte kolm perioodi

lõpuks ütle

- Avage dialoogiaken "Mine kausta"

klahvivajutus „g“ abil, kasutades {shift down, käsk alla}

- Kleebi kausta tee asukohta

ütle aken "Mine kausta"

klahvivajutus „v” kasutades {käsk alla}

klahvivajutus

lõpuks ütle

klõpsa akna "Üldine" lehe 1 nupule "Vali"

- sulgege eelistused

klahvivajutus „w” abil {command down}

lõpuks ütle

- taastada esmase rakenduse pärast töö lõpetamist

ütle rakendusele frontApp aktiveerida

muidu

- kui Safari ei tööta, siis kasuta eelistuste muutmiseks käsku default

tehke shelliskripti ("vaikimisi kirjutab com.apple.Safari DownloadsPath" & dlFolder)

lõpp, kui

lõpp, kui

- Funktsioon, mille abil saab muuta kodutee viiteid kogu teele

konversioonilHome (currentpath)

kui praegune rada sisaldab "~ /"

seada oldDelimiter AppleScript'i tekstimärkmete piirajateks

seadke AppleScript'i tekstikirjete piiritlejad väärtuseks {"~ /"}

seadistage textPath igale praeguse tee tekstikirjele

seadistage AppleScript'i tekstikirjeldid vanaksDelimiter

seadistage praeguse teekonna POSIX-teele ( tee kodukausta tekstina ) & item 2 tekstisPath

lõpp, kui

tagasivoolu tee

end ümberHome

- funktsioon, et kontrollida, kas rakendus "appName" töötab (sel juhul kasutatakse Safari jaoks)

rakendustesRunning (appName)

ütle rakendusele "Süsteemi sündmused" ( protsesside nimi) sisaldab rakenduse nime

lõpetage rakendusedJooks

Skripti tekst on esialgu lilla, kuid kui klõpsate tööriistariba nupule Compile või kui salvestate skripti, muutub see värvilisemaks nagu siin näete. Salvestage skript nimega nagu "Muuda allalaaditud faile" teie valitud asukohta (saate selle paigutada kausta "Scripts" oma dokumendikataloogis või oma kasutajaraamatus) ja sulgeda AppleScript-redaktori.

Nüüd avage uus terminali aken ja lohistage äsja tehtud skriptifail. Kui te seda teete, sisestatakse aknasse täielik failiraamat skripti, mis näeb välja nagu "/Users/username/Documents/ChangeDownloads.scpt". Hiire abil vali kogu failirada, vajuta Command-C, et kopeerida see lõikepuhvrisse, ja mine tagasi teksti skripti 1 TextEditis ja asenda "FILEPATH" kirje kopeeritud tekstiga. Seejärel salvestage ja sulgege dokument.

Sel hetkel on kõik skriptid loodud. Lihtsalt logige välja ja logige uuesti sisse, et laadida käivitusagendi skript (Script 1), ja nüüd, kui installite draivi, mis on nimeks "Allalaadimised", muudetakse Safari seadeid automaatselt, nii et see kasutab seda draivi allalaadimiskataloogina. Kui te siis lahti ühendate, taastatakse seade. Sama juhtub ka siis, kui nimetate draivi ümber nimeks "Allalaadimised" või muudate selle nime "Allalaadimistest" teiseks.

Pidage meeles, et kuigi see skript töötab, on seda testitud ainult OS X 10.6 "Snow Leopard" ja OS X 10.7 "Lion", kus töötab Safari 5.1; Samas peaks see toimima just teiste süsteemi konfiguratsioonide korral, mis töötavad vähemalt Safari 5.0-ga. Peamised nõuded on siis, kui skript manipuleerib programmi Safari eelistustest, kasutab erinevate menüüde avamiseks nuppude indekseid ja klõpsab ekraanil erinevaid nuppe. Kui Apple muudab tulevikus Safari eelistuste korraldust, siis see skripti osa ei tööta enne, kui seda on muudetud, et uuesti korrektse nupu poole pöörduda. Kuid nüüd on see piirang, millega peame tegelema. Selle probleemi lahendamine Lionis on kasutada ära Apple'i jätkamisfunktsiooni skriptis Safari sulgemiseks, eelistuste muutmiseks ja seejärel programmi taaskäivitamiseks selle asemel, et liides programmeerida.

Lõpuks, kui te otsustate, et sa ei soovi seda skripti enam, siis saate selle eemaldada, kustutades AppleScript-faili ja seejärel eemaldades LaunchAgent-faili kas käsitsi või käivitades terminalis järgmise käsu. Kui see on tehtud, logige lihtsalt välja ja logige uuesti sisse ning naasete ruudule:

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


 

Jäta Oma Kommentaar