Archive for the 'Applescript' Category

New Triggerevent in EyeTV: WindowModeChanged

Posted in Applescript, Calendar, Software on Januar 21st, 2009

EyeTV unterstützt in Version 3.1 ab build 4513 einen neuen Trigger:
WindowModeChanged

Damit lässt sich z.B. recht komfortabel dauerhafter Fullscreenmodus “erzwingen”:


on WindowModeChanged(isFullscreen)
tell application "EyeTV"
enter full screen
end tell
end WindowModeChanged

Denkbar wären auch andere Szenarien, in denen Scripte abhängig vom Fenstermodus ausgeführt werden.

Den Artikel New Triggerevent in EyeTV: WindowModeChanged

Fernseherinnerung

Posted in Applescript, Calendar on Januar 14th, 2009

Einer der meistformulierten Wünsche für EyeTV ist die Möglichkeit Erinnerungen anlegen zu können, ohne die Sendung gleich zu programmieren. Ich habe mir dieses Thema mal vorgenommen und herausgekommen ist das folgende Script. Es soll als Ausgangspunkt für weitere Anpassungen dienen, denn jeder hat andere Ansprüche an den eigenen Workflow. Feedback hierzu ist natürlich willkommen.


-- ScheduleCreated.scpt
on ScheduleCreated(programID)
tell application "EyeTV"
-- show dialog what to do
display dialog "Do what?" buttons {"Schedule", "Schedule and set reminder", "Don´t schedule, just remind"} default button 2
set the button_pressed to the button returned of the result
if the button_pressed is "Schedule" then
-- do nothing
else if the button_pressed is "Schedule and set reminder" then
-- schedule and set reminder
-- activate the following codeblock to get asked which calendar should be used
(*
tell application "iCal"
set a to get name of calendars
-- end tell
set b to choose from list a
set c to b as string
end tell
*)
tell application "EyeTV"
set programIDInteger to programID as integer
set sched to program id programIDInteger
set theTitle to title of sched
set theTime to start time of sched
--change amount and type of time in second brackets to adjust alarm settings
set theAlarmTime to (start time of sched) - (5 * minutes)
set theDesc to description of sched
-- display dialog "ScheduleCreated: " & theTitle & " " & theTime
end tell
tell application "iCal"
-- set to c if you have enabled the codeblock asking for the calendar, or hardcode your own calendar
set this_calendar to calendar "Test"
tell this_calendar
set theTVEvent to make new event at end of events of this_calendar with properties {summary:theTitle, description:theDesc, start date:theTime, allday event:false}
make new display alarm at the beginning of theTVEvent with properties {trigger date:theAlarmTime}
end tell
end tell
else
-- just set reminder, schedule will be immediately deleted after reminder is set
-- activate the following codeblock to get asked which calendar should be used
(*
tell application "iCal"
set a to get name of calendars
-- end tell
set b to choose from list a
set c to b as string
end tell
*)
tell application "EyeTV"
set programIDInteger to programID as integer
set sched to program id programIDInteger
set theTitle to title of sched
set theTime to start time of sched
--change amount and type of time in second brackets to adjust alarm settings
set theAlarmTime to (start time of sched) - (5 * minutes)
set theDesc to description of sched
-- display dialog "ScheduleCreated: " & theTitle & " " & theTime
end tell
tell application "iCal"
-- set to c if you have enabled the codeblock asking for the calendar, or hardcode your own calendar
set this_calendar to calendar "Test"
tell this_calendar
set theTVEvent to make new event at end of events of this_calendar with properties {summary:theTitle, description:theDesc, start date:theTime, allday event:false}
-- by changing the alarm type to open file alarm another script could be called from here to further adjust the workflow
make new display alarm at the beginning of theTVEvent with properties {trigger date:theAlarmTime}
end tell
end tell
-- delete schedule, so just the reminder in iCal is generated but no recording will take place
tell application "EyeTV"
delete sched
end tell
end if
end tell
end ScheduleCreated

Den Artikel Fernseherinnerung

XMLTV Import in EyeTV automatisieren

Posted in Applescript, Calendar on Februar 21st, 2008

Ich habe gerade festgestellt dass eine neue Version von EyeTV verfügbar ist: Version 3.0.1
In den Releasenotes steht u.a. dass EyeTV jetzt auch xmltv unterstützt.

Ich habe dazu mal ein kleines Script gemacht das mir einmal am Tag entsprechende Daten von einer Website lädt und in EyeTV einliest.

Zunächst der Code:

set theURL to "http://tvprog.org/tv.xml"
set theFile to "/Users/flo/Desktop/tv.xml"
set theCmd to "curl "
set theDownload to theCmd & theURL & " > " & theFile
set theExec to "open " & theFile
do shell script theDownload
delay 20
do shell script theExec

Anzupassen an die persönlichen Gegebenheiten sind:

- die URL
- der Speicherpfad
- die Delayzeit (je nach Internetverbindung)

Einzige Vorbedingung:
die Dateiinformationen müssen einmal aufgerufen und EyeTV als für diese Datei verantwortliche Anwendung (Öffnen mit…) angegeben werden.

Das Skript als Programm (nur ausführbar, kein Startdialog) speichern und in die Startobjekte legen, und schon hat man ohne Aufwand stets aktuelle xmltv EPG-Daten in EyeTV.

Den Artikel XMLTV Import in EyeTV automatisieren

Eine Antwortmail an alle Absender von markierten Mails

Posted in Applescript, Calendar on Januar 13th, 2008

Eine ganz interessante Aufgabenstellung aus einem Forum:
Jemand möchte allen Absendern von in Mail markierten E-Mails antworten ohne dafür extra erst alle in eine Gruppe im Adressbuch zu packen. Es soll also unmittelbar und ohne weiteren Aufwand auf verschiedene Mails verschiedener Absender geantwortet werden können.


-- leere Liste der Empfänger erstellen
set theRecipList to {}
set AppleScript's text item delimiters to ","
tell application "Mail"
-- markierte Mails rausfinden
set a to get selection
-- Anzahl der markierten Mails herausfinden
set theCount to (count of a)
-- Alle gefundenen einzeln abarbeiten
repeat with counter from 1 to theCount
set msg to item counter of a
-- Sender herausfinden
set theSender to sender of msg
-- Mailadresse des Absenders herausfinden und in Variable packen
set theNewRecipient to extract address from theSender
-- in string umwandeln
set b to theNewRecipient as string
-- in die Liste der Empfänger einfügen
copy b to the end of theRecipList
end repeat
set d to every item of theRecipList as string
-- Neue Email in Mail erstellen, Bei Bedarf mit weiteren properties
set newMessage to make new outgoing message -- with properties {subject:theSubject, content:theContent & return & return}
-- Anweisungen an die neu zu erstellende Mail
tell newMessage
-- Mail sichtbar erstellen
set visible to true
-- Absenderadresse angeben. Könnte auch aus einer Variablen kommen.
-- set sender to "test@rechner.local"
-- Empfänger eintragen. Für Blindkopie aus recipients einfach bcc recipients machen.
make new to recipient at end of to recipients with properties {address:d}
-- Bei Bedarf weitere properties
(*
tell content
make new attachment with properties {file name:theAttachment} at after the last paragraph
end tell
*)
-- Mail in den Vordergrund holen
activate
-- Soll die Nachricht sofort automatisch gesendet werden, nächste Zeile auskommentieren
-- send newMessage
end tell
end tell

Den Artikel Eine Antwortmail an alle Absender von markierten Mails

What QuickTime?

Posted in Applescript, Calendar on Juni 10th, 2007

In vielen Supportfällen ist es nötig die Version von QuickTime vom User abzufragen. Je nach Kenntnissen und Aufregungszustand des Gegenüber kann das dann mitunter eine Weile dauern bis man zu einer eigentlich simplen Antwort gelangt ist.
Um dem User hier ein wenig entgegen zu kommen habe ich mir mal folgendes überlegt:


tell application "QuickTime Player"
set a to get version
set b to get QuickTime Pro installed
end tell
if b is equal to true then
set c to "PRO"
else
set c to ""
end if
set d to "QuickTime on this machine: " & a & " " & c
display dialog d

Das Script fragt die aktuell installierte Version von QuickTime ab und ergänzt die Angabe um die Info “PRO” falls die Proversion von QT installiert sein sollte.
Ausgehend davon lässt sich das an die individuellen Bedürfnisse anpassen (Ergebnis per Mail versenden, auf Server stellen, in Datei schreiben, etc…)

Recovered Files

Posted in Applescript, Calendar on September 30th, 2006

Genervt von einem vollen Papierkorb nach dem Hochfahren von Tiger, obwohl man ihm vor dem Beenden extra geleert hat?
Die “Recovered Files” lassen sich nicht verhindern, was ja prinzipiell auch nicht verkehrt ist, aber man liest eben doch immer wieder dass Anwender sich durch deren Präsenz gestört fühlen.
Eine mögliche Abhilfe ist folgendes Script:


tell application "Finder" to empty the trash

Als Programm speichern (nur ausführbar, ohne Startdialog), und ab damit in die Startobjekte.
Es wird dann automatisch bei der Useranmeldung der Papierkorb gelöscht. Allerdings ohne Rückfrage und ohne Rücksicht auf Verluste. War etwas im Papierkorb was man evtl. doch gerne behalten hätte, hat man Pech gehabt.

Den Artikel Recovered Files

LaterMail

Posted in Applescript, Calendar on August 3rd, 2006

In Foren liest man des öfteren Bedauern darüber dass Mail Mails nicht zeitversetzt sendet.
Ich habe ein kleines Applescript-Programm gebastelt das verzögertes Versenden von Mails möglich macht.
Obwohl noch Beta, funktioniert es prinzipiell wie es soll, ich übernehme allerdings keinerlei Verantwortung für etwaige nicht gesendete Mails etc.
Ich freue mich über Feedback. Je nach dem wie zahlreich die Reaktionen ausfallen, werde ich das weiterentwickeln (Anhänge?), und ein ordentliches Read-Me hinzufügen.
Kurze Erklärung für Interessierte:
Das Programm legt in iCal einen neuen Kalender “LaterMail” an, in dem es alles nötige speichert. Zum angegebenen Zeitpunkt werden die Parameter aus dem Termin ausgelesen und abgearbeitet. Nachdem die Mail gesendet wurde, wird der zugehörige Termin gelöscht.
Das Programm ist frei verfügbar, ich bitte allerdings darum es nicht anderweitig zu vertreiben solange es noch Betastatus hat.

DOWNLOAD

Homeverzeichnis umbenannt?

Posted in Applescript, Calendar on Juni 19th, 2006

Für mich ist es ehrlich gesagt etwas unverständlich warum viele User ihr Homeverzeichnis umbennen. Muss ich wohl nicht verstehen, Fakt ist dass es offensichtlich des Öfteren passiert, und in den Userforen bei der Diskussion zu dem Thema immer wieder der Wunsch geäussert wird, man möge vor so einer Aktion doch durch einen entsprechenden Warnhinweis bewahrt werden.
Diese Warnung gibt es standardmäßig nicht im System, aber man kann sie sich ganz einfach selber machen mit folgendem Script das man als Ordneraktion an den Ordner “Benutzer” anhängt:


on removing folder items from this_folder after losing these_items
tell application "Finder"
display dialog "You just changed the name of your Homefolder. You should rename it to what it was before immediately. If you don‘t do so, you will run into serious trouble, after the next boot. Your browser now opens a helpsite.
===
Du hast soeben Deinen Homefolder umbenannt. Du solltest das sofort rückgängig machen, sonst wirst Du massive Probleme nach dem nächsten Start bekommen. Dein Browser öffnet nun eine Seite mit Hilfe." with icon stop
end tell
do shell script "open http://www.macuser.de/forum/showthread.php?t=144597"
end removing folder items from

Den Artikel Homeverzeichnis umbenannt?

FTP-Upload via Kontextmenü

Posted in Applescript, Calendar on Juni 17th, 2006

als Aktion für On My Command1:


tell application "Finder"
set these_items to the selection
end tell
repeat with i from 1 to the count of these_items
set this_item to (item i of these_items) as alias
set this_info to info for this_item
set a to POSIX path of this_item
end repeat
set ScriptBefehl to "curl -T " & a & " -u User:Pass ftp://Host/Pfad/"
do shell script ScriptBefehl

Lädt die aktuell ausgewählte Datei auf den im Script angegebenen Server/Verzeichnis hoch.

  1. 1On My Command
Den Artikel FTP-Upload via Kontextmenü

Bildschirmfüllende Fenster

Posted in Applescript, Calendar on Mai 2nd, 2006

Viele Leute ärgern sich über das Verhalten von OS X dass der Klick auf den grünen Punkt das Fenster nicht unbedingt auf die volle Bildschirmgrösse bringt.
Abhilfe schafft dieses Script zu dem mir die Idee gekommen ist als ich im Applescriptforum von Fischer-Bayern1 über die ersten beiden Zeilen des Scripts gestossen bin.


set ts to screen list starting with main screen
set theSize to screen size of item 1 of ts
set t1 to first item of theSize
set t2 to second item of theSize
tell application "Safari"
set bounds of window 1 to {0, 0, t1, t2}
end tell

Hier am Beispiel Safari. Es lässt sich aber auch jedes andere Programm einsetzen. Bei manchen Programmen wie z.B. dem Finder muss man allerdings den zweiten Wert in der Klammer ändern, da das Fenster sonst zum Teil unter der Menüleiste verschwindet. Beim Finder hat sich ein Wert von 44 bei mir bewährt. Wie man das Script dann in der Praxis ansprechen will bleibt jedem selbst überlassen. In den Scriptordner gelegt steht es im Scriptmenü in der Menüleiste zur Verfügung, als Programm gespeichert kann man es sich auch bequem in die Symbolleiste des Finders legen, oder man triggert es mit Quicksilver…hier bietet sich wirklich für jeden Geschmack die passende Methode.

Nachtrag: Mir ist gerade eingefallen dass ja nicht jeder (so wie ich) sein Dock automatisch ausblendet, und zu allem Überfluss auch nicht bei jedem das Dock (falls permanent eingeblendet) an der selben Stelle sitzt. Vielleicht überlege ich mir da noch was…bis dahin muss man halt damit leben wie es ist, bzw. die Größen an die persönlichen Bedürfnisse anpassen, was ja auch nicht schwer ist, z.B. so:


set t2 to (second item of theSize) - Dockgröße

Welchen Wert (t1/t2) man verändert, hängt halt davon ab wo man das Dock positioniert hat. Die Werte in den geschweiften Klammern sind: {Desktop von links, Desktop von oben, Breite des Fensters, Höhe des Fensters}

  1. 1Applescriptforum von Fischer-Bayern
Den Artikel Bildschirmfüllende Fenster