- Taz_1999
- Medlem ●
- Stockholm
- 2002-08-29 23:36
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