EyeTV3 RecordingDone Script zum ausschalten

O

oneOeight

unregistriert
Thread Starter
Dabei seit
23.11.2004
Beiträge
75.178
Reaktionspunkte
21.754
EyeTV3 bietet die Möglichkeit mittels eine Applescript nach einer Aufnahme automatisch eine Aktion auszuführen.
Um jetzt nicht mehr über den Energie sparen Zeitplan den Rechner auszuschalten nach einer Aufnahme benutzt man einfach folgendes Script:
Code:
on RecordingDone(recordingID)
	tell application "EyeTV"
		if is_recording = false then
			activate
			set antwort to display dialog "ausschalten?" buttons {"nein", "ja"} default button "ja" giving up after 30
			if button returned of antwort = "ja" or button returned of antwort = "" then
				tell application "Finder"
					shut down
				end tell
			end if
		end if
	end tell
end RecordingDone

Der Dialog bleibt für 30 Sekunden stehen, damit man genug Zeit hat zum Nein drücken, falls man nicht am Rechner ist. Danach fährt der Rechner automatisch runter (sofern nicht noch Applikationen offen sind, die fragen, ob man etwas speichern möchte, wie sonst auch).

Das ganze wird mit dem Skripteditor als Skript mit Namen RecordingDone gespeichert und muss dann in
/Library/Application Support/EyeTV/Scripts/TriggeredScripts
abgelegt werden. Falls der Ordner noch nicht existiert, muss man den kurzerhand selber anlegen.

Wenn man den Rechner nur nach der Aufnahme schlafen schicken möchte, kann man auch das "shut down" durch "sleep" ersetzen.

Und BITTE dran denken, falls man mehrere Aufnahmen hintereinander programmiert hat:
Der Mac braucht einige Zeit zum runter und hoch fahren.
EyeTV weckt/startet den Rechner 2 Minuten vor der programmierten Aufnahme (minus eingestellte Vorlaufzeit).
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: iToxi, g4tom, makkus und 20 andere
Na endlich, meine Gebete wurden erhört!
Warum allerdings sowas in EyeTV selber nicht integriert ist, ist mir ein Rätsel!
Beim DVBViewer unter Windows kann man schon seit JAHREN angeben, das er eine Aktion nach der Aufnahme durchführen soll (u.a. z.B. Runterfahren oder Standby).

Wenn jetzt auch das Aufwachen mit EyeTV3 noch zuverlässig funktioniert...
 
ich hab mal das script etwas verfeinert und ein activate hinzugefügt.
sonst startet der timer des dialoges nicht, wenn man die app nicht in der den vordergrund holt. was natürlich nicht der fall ist, wenn man den rechner zum aufnehmen starten lässt, wenn man nicht zuhause ist...
 
  • Gefällt mir
Reaktionen: Cinober
Funktioniert das auch mit EyeTV 2.5?
 
bei der 2.x steht nichts davon im handbuch, kannst es ja mal probieren, ob die funktion trotzdem da ist.
 
Mh, nein funktioniert nicht. :(
 
Danke oneOeight.
Das funktioniert schon mal.

Ein/zwei Fragen hätte ich allerdings noch.
- Wie macht man es, wenn man zwei Sendungen nacheinander aufnehmen möchte?
Nach der ersten Sendung ging der Mac schlafen, da die zweite mit 2min Vorlauf aufgenommen werden sollte, wachte der Mac nicht mehr auf :-( Jetzt habe ich nur eine Sendung.

-Wie geht das, wenn man anschließend automatisch ins iTunes exportieren möchte? Geht der Mac nach der Aufnahme oder nach dem Exportieren schlafen?

Gruß,
epsillon
 
zu 1.:
wann ist denn die 2. aufnahme? direkt dahinter oder war einfach die zeit zu kurz zum aus-/einschalten bzw aufwachen?
der trigger den das script nutzt bezieht sich halt nur auf eine aufnahme und nicht alle (für alle gibt es keinen trigger).
ich das bislang nicht getestet, was bei einer direkt folgenden aufnahme passiert. eigentlich müsste aber eyetv doch das ausschalten abbrechen mit der frage, ob die aufnahme wirklich beendet werden soll.

zu 2.:
der trigger wird direkt nach der aufnahme los, aber man könnte natürlich noch einfügen, solange zu warten solange das recording busy ist (exportiert, kompaktiert wird usw) und danach erst fragen.
 
zu 1.:
Also ich wollte eine zwei Sendungen direkt hintereinander aufnehmen. Wahrscheinlich hätte ich einfach eine lange Sendung programmieren müssen, weil beide auf einem Kanal gesendet wurden. Das Problem bliebe allerdings, wenn man von zwei verschiedenen Kanälen aufnehmen möchte.

zu 2.:
Dein Vorschlag hört sich interessant an. Wie geht das? Ich habe meinen Mac noch nicht lange und kenne mich mit Scripts nicht aus.

Danke.
Gruß,
epsillon
 
warten müsste so in der art gehen:
Code:
		set warten to true
		repeat until warten is false
			set warten to busy of recordingID
		end repeat

oder meinst du das automatisch exportieren?
 
- Wie macht man es, wenn man zwei Sendungen nacheinander aufnehmen möchte?
Nach der ersten Sendung ging der Mac schlafen, da die zweite mit 2min Vorlauf aufgenommen werden sollte, wachte der Mac nicht mehr auf :-( Jetzt habe ich nur eine Sendung.

so, gerade mal probiert mit 2 sendungen direkt hintereinander, da fragt eyetv natürlich, ob weiter aufgenommen werden soll und nimmt weiter auf.
leider schaltet es dann nicht auf, weil der "weiter aufnehmen" dialog nicht automatisch weg geht, wenn die aufnahme beendet ist.

da war also etwas zeit bei dir zwischen den aufnahmen. wohl nicht genug um wieder rechtzeitig aufzuwachen. eyetv weckt/startet den rechner 2 min vor der aufnahme minus der eingestellten vorlauf zeit.

da solltest du wohl mal die zeiten umstellen, entweder bei toast oder im skript.

ich schau mal, ob ich nicht noch einen check einbaue, ob gerade nicht noch eine aufnahme läuft.
*eingebaut*
 
Zuletzt bearbeitet:
Gibt es auch ein Script vor den Aufnehmen ?
 
Gibt es auch ein Script vor den Aufnehmen ?

vor dem aufnehmen ausschalten? ;)

eyetv startet doch automatisch den rechner über os x, da braucht man kein extra script für...
oder wofür willst du ein script?
 
Super Sache - Danke!

Allerdings bräuchte ich es auch, das er nicht immer gleich schlafen geht - also ich hab z.B. ein halbe Stunde später oder so wieder eine Aufnahme, dann bringt einschlafen ja recht wenig. Am besten währe er schaut ob in den nächsten X Minuten / Stunden noch eine Aufnahme geplant ist, und falls nicht geht er dann schlafen. Achja, alles mit Meldungen die von allein weggehen (für wenn ich im Urlaub bin).

Bei mir ist EyeTv (2) auch immer im Urlaub abgestürzt - dann war EyeTv offen mit so einer Meldung das es unerwartet beendet wurde oder so, aber da die kleiner weggeklickt hat hat EyeTv den halben Urlaub nix aufenommen und der Mac war die ganze Zeit an :( - kann man da auch was machen?
 
Allerdings bräuchte ich es auch, das er nicht immer gleich schlafen geht - also ich hab z.B. ein halbe Stunde später oder so wieder eine Aufnahme, dann bringt einschlafen ja recht wenig. Am besten währe er schaut ob in den nächsten X Minuten / Stunden noch eine Aufnahme geplant ist, und falls nicht geht er dann schlafen. Achja, alles mit Meldungen die von allein weggehen (für wenn ich im Urlaub bin).

wirklich kritisch ist das nur bei aufnahmen, die zu kurz danach folgen und die ausschalten/einschlafen und starten/aufwecken zu lange dauert...
30 min ist da schon wieder was anderes.
so was würde das skript super lang machen, vor allem wenn man jeden möglichen fall berücksichtigt.
man müsste alle schedules holen, dann die zeiten alle durchgucken und falls eine zu nah dran ist, dann halt nicht ausschalten.

einfachste lösung wäre halt noch einen delay einzufügen, vor dem is_recording check...

Bei mir ist EyeTv (2) auch immer im Urlaub abgestürzt - dann war EyeTv offen mit so einer Meldung das es unerwartet beendet wurde oder so, aber da die kleiner weggeklickt hat hat EyeTv den halben Urlaub nix aufenommen und der Mac war die ganze Zeit an :( - kann man da auch was machen?

dazu muss man halt mittels der crashreporter prefs in den server mode schalten, dann kommt der crash dialog nicht und eyetv kann wieder so starten...
wenn du Xcode installiert hast, dann gibt es da die CrashReporterPrefs.
ansonsten im terminal folgendes eingeben:
defaults write com.apple.CrashReporter DialogType server
 
Allerdings bräuchte ich es auch, das er nicht immer gleich schlafen geht - also ich hab z.B. ein halbe Stunde später oder so wieder eine Aufnahme, dann bringt einschlafen ja recht wenig. Am besten währe er schaut ob in den nächsten X Minuten / Stunden noch eine Aufnahme geplant ist, und falls nicht geht er dann schlafen. Achja, alles mit Meldungen die von allein weggehen (für wenn ich im Urlaub bin).

so, habe das doch mal eingebaut, aber nicht getestet.
kannst du also machen ;)
berücksichtigt wird auch die aufnahme verlängerung vor der aufnahme plus 2 minuten fürs starten...

Code:
on RecordingDone(recordingID)
	tell application "EyeTV"
		set limit to 30 * minutes
		set ausmachen to true
		set vorlauf to (prepad time + 2) * minutes
		set jetzt to current date
		repeat with aufnahme in start time of programs
			set diff to aufnahme - jetzt
			if diff ≥ vorlauf then set diff to diff - vorlauf
			if diff ≥ 0 and diff ≤ limit then set ausmachen to false
		end repeat
		if is_recording = false and ausmachen = true then
			activate
			set antwort to display dialog "ausschalten?" buttons {"nein", "ja"} default button "nein" giving up after 30
			if button returned of antwort = "ja" or button returned of antwort = "" then
				tell application "Finder"
					shut down
				end tell
			end if
		end if
	end tell
end RecordingDone
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Cinober, Rupp, Fliewatüüt und 8 andere
Wow - da hats aber einer drauf! :)

Danke - werde es testen!

und für das Deaktivieren der AbsturzFehlermeldung muss ich also nur "defaults write com.apple.CrashReporter DialogType server" ins Terminal eingeben? Dann Kommt die Meldung nicht mehr und EyeTV stürzt einfach ab und startet für die nächste Aufnahme wieder ganz normal?
 
und für das Deaktivieren der AbsturzFehlermeldung muss ich also nur "defaults write com.apple.CrashReporter DialogType server" ins Terminal eingeben? Dann Kommt die Meldung nicht mehr und EyeTV stürzt einfach ab und startet für die nächste Aufnahme wieder ganz normal?

ja, sollte es.
der eye tv helper sollte dann ganz normal eyetv wieder zum richtigen zeitpunkt starten...
 
OK, hab das Script eingebunden und werde es die Tage testen.

Den Terminal Befehl hab ich auch eingegeben, hoffe mal es hat geklappt, denn es kam keine Bestätigung.
Nochmals ein super Danke!
 
Also das Script macht leider gar nix - eingebunden ist es eigentlich schon richtig, passieren tut aber leider nix :(
 
Zurück
Oben Unten