Applescript är sååå coolt

Tråden skapades och har fått 6 svar. Det senaste inlägget skrevs .
1

Håller på mig och lär mig Applescript. Stötte på ett script som man skall koppla till en mapp. I kommentarsfältet på mappen ( i filsystemet alltså) så skriver man på rad 1 en url till tex en sattelitbild eller väderkarta eller liknande som uppdateras regelbundet. På rad två skriver du vad du vill att filen skall döpas till när den laddas ner. Sedan kopplar du manuset till mappen. Öppna sedan mappen så får du en fråga om du vill att innehållet skall uppdateras. Svara Ja och vips ligger den senaste väderkartan i mappen. Hur coolt som helst.

Så här ser scriptet ut:

<pre style="font-size:x-small; font-family: monospace;">-- Detta manus skall kopplas till en mapp: CTRL-klicka på den för att göra det.
-- I kommentaren på mappen: (Visa info) så skall du skriva en URL 
-- som leder till tex en sattelitbild på internet eller något annat som uppdateras regelbundet. 
-- Här är ett exempel på en URL. Stoppa in den i kommentarsfältet i en mapp detta script är kopplad till. 
-- Exempel: http://www.svt.se/vader/w2kartor/1.jpg
-- I andra raden i kommentaren skriver du vad filen som laddas hem skall döpas till.
-- Exempel: Dagens väder från SVT.jpg
-- Öppna sedan mappen och vips så får du en fråga om innehållet skall uppdateras. 
-- Svara ja och en stund senare har du en ny fil i mappen. Coolt!

property log_downloads : true
property log_name : "Download Log"
property download_time : 240 -- 4 minutes

global web_URL, file_name

on opening folder this_folder
	tell application "Finder"
		set the stored_data to the comment of this_folder
	end tell
	if the stored_data is "" then
		return "no URL"
	else
		try
			set the web_URL to paragraph 1 of the stored_data
			set the file_name to paragraph 2 of the stored_data
			set q_text to "Should I update the content assigned to this folder?"
			display dialog q_text buttons {"No", "Yes"} default button 2 giving up after 20
			if the button returned of the result is in {"No", ""} then ¬
				return "user canceled"
		on error
			return "incorrect data setup"
		end try
	end if
	set the file_path to (this_folder as text) & file_name
	backup_previous(this_folder)
	if download_file(file_path) is false then
		restore_previous(this_folder)
		return "problem downloading"
	end if
	if log_downloads is true then write_URL_datafile(stored_data, this_folder)
	tell application "Finder"
		activate
		display dialog "The file “" & file_name & ¬
			"” has been updated." buttons {"•"} default button 1 giving up after 3
	end tell
end opening folder

on backup_previous(this_folder)
	tell application "Finder"
		if not (exists folder "Previous" of this_folder) then
			make folder at this_folder with properties {name:"Previous"}
		end if
		if exists file file_name of this_folder then
			move file file_name of this_folder to ¬
				folder "Previous" of this_folder with replacing
		end if
	end tell
end backup_previous

on restore_previous(this_folder)
	tell application "Finder"
		if not (exists folder "Previous" of this_folder) then
			return false
		end if
		if exists file file_name of folder "Previous" of this_folder then
			move file file_name of folder "Previous" of this_folder to ¬
				this_folder with replacing
		end if
		return true
	end tell
end restore_previous

on download_file(file_path)
	try
		with timeout of download_time seconds
			tell application "URL Access Scripting"
				download the web_URL to file file_path ¬
					replacing yes with progress and unpacking
				quit
			end tell
		end timeout
	on error error_message number error_number
		if error_number is not -128 then
			display dialog ("Error number: " & (error_number as text) & ¬
				return & return & ¬
				error_message) buttons {"OK"} default button 1 giving up after 15
		end if
		return false
	end try
	return true
end download_file

on write_URL_datafile(this_data, this_folder)
	set this_day to (the current date) as text
	set this_data to this_day & return & this_data & return & return
	set target_file_path to ((this_folder as text) & log_name)
	write_to_file(this_data, target_file_path, true)
end write_URL_datafile

on write_to_file(this_data, target_file, append_data)
	try
		set the target_file to the target_file as text
		set the open_target_file to ¬
			open for access file target_file with write permission
		if append_data is false then ¬
			set eof of the open_target_file to 0
		write this_data to the open_target_file starting at eof
		close access the open_target_file
		return true
	on error
		try
			close access file target_file
		end try
		return false
	end try
end write_to_file
  </pre>

/Ola

Det här var inte här för några dagar sedan:

Applescript Studio

Det verkar vara en produkt som ger en Applescript-utvecklare tillgång till alla element i Aqua-gränssnittet. Trevligt, minst sagt.

/Ola

  • Medlem
  • 2002-08-30 16:25

Coolt script! Man borde verkligen försöka lära sig applescript.

Det skall regna imorgon! Det var ett tag sen.

[ 30 Augusti 2002, 16:29: Meddelandet ändrat av: apu ]

Kul!
Blev inspirerad och tänkte göra en väder-skärmsläckare. Nu orkar jag inte skriva nån felhantering - alls, så det funkar väl när det funkar.

1) skapa en mapp som heter "vader" i din Hemmamapp eller nånstans där den inte är i vägen vore bättre.
2) ställ in skärmsläckaren på att använda den mappen som slideshow.
3) lägg in nedanstående som ett cronjob (jag använde "Cronnix" för att redigera). Låt skriptet köra 2 gånger om dan typ.

Citat:

code:<pre style="font-size:x-small; font-family: monospace;">cd /Users/mittNamn/vader && curl http://www.svt.se/vader/w2kartor/1.jpg > vader1.jpg && curl http://www.svt.se/vader/w2kartor/2.jpg > vader2.jpg && curl http://www.svt.se/vader/w2kartor/3.jpg > vader3.jpg </pre>

(på en rad)

Lite off-topic - det är ju inte Applescript.

  • Medlem
  • 2002-08-31 17:53

Ett tips om det inte fungerar: För mig fungerade det inte ifall det fanns ett å,ä eller ö i mappnamnet.

Det finns några färdiga mapp-script levererade med systemet, bl a ett som talar om ifall en mapp fått nya filer eller "new item alert" som det heter. Jag har nu en FTP upload mapp som visar en dialogruta när någon börjar tanka upp en ny fil.

Jag följde de simpla instruktionerna i länken nedan

Apple Script sida

[ 31 Augusti 2002, 19:20: Meddelandet ändrat av: Anders Täpp ]

  • Medlem
  • 2002-09-01 19:48

Jag kunde ju inte låta bli att experimentera lite med skriptet.

Så om ni vill spara tre värdefulla klick och få bilden öppnad automatiskt efter nedladdandet gör så här:

Byt ut raderna:

Citat:

code:<pre style="font-size:x-small; font-family: monospace;"> tell application "Finder"
activate
display dialog "The file “" & file_name & ¬
"” has been updated." buttons {"•"} default button 1 giving up after 3
end tell </pre>

MOT

Citat:

code:<pre style="font-size:x-small; font-family: monospace;"> tell application "Finder"
activate
select file file_name of folder this_folder
open selection
end tell </pre>

Du hittar det i slutet på tredje "stycket" i skriptet.

1
Bevaka tråden