EyeTV3 RecordingDone Script zum ausschalten

Ich kann das neue Script mit Titel RecordingDone nur mit .trf abspeicher, da .scpt schon in Eyetv 3.3. vorhanden ist (aber nichts mit autoausschalten zu tun hat).

Nein, das wird nicht funktionieren, da EyeTV nur Skripte ausführt und einfach irgendwas. Wenn es nicht als Skript gespeichert ist, kann es sowieso nicht ausgeführt werden. Und das Skript muss mit dem entsprechenden Name versehen sein, sonst wird es auch nicht ausgeführt.

Öffne das vorhandene Skript und ändere es nach deinen Wünschen ab.
 
Mein RecordingDone-Skript

So, wie versprochen hier mein RecordingDone-Skript:
Code:
-- Skript zum automatischen Ausschalten nach einer Aufnahme.
-- Speichern als Skrpt mit Name: RecordingDone.scpt
-- Speichern in /Library/Application Support/EyeTV/Scripts/TriggeredScripts

on RecordingDone(recordingID)
	-- Werbung markieren
	do shell script "/Library/Application\\ Support/ETVComskip/MarkCommercials.app/Contents/MacOS/MarkCommercials " & recordingID
	-- IDLE-Time abrufen
	set idletime to do shell script "ioreg -c IOHIDSystem | grep Idle | tail -1 | awk '{printf(\"%d\",  $NF/10^9);}'"
	set idletime to idletime as integer
	-- Wenn IDLE-Time abgelaufen ist, überprüfen ob eine Aufnahme ansteht
	if idletime > 60 then
		tell application "EyeTV.app"
			-- überprüfen ob eine Aufnahme ansteht
			set limitsleep to 15 * minutes
			set limitoff to 30 * minutes
			set ruhezustand to true
			set ausmachen to true
			set vorlauf to («class Prpd» 2) * minutes
			set jetzt to current date
			repeat with aufnahme in «class Stim» of every «class cPrg»
				set diff to aufnahme - jetzt
				if diff ≥ vorlauf then set diff to diff - vorlauf
				if diff ≥ 0 and diff ≤ limitsleep then set ruhezustand to false
				if diff ≥ 0 and diff ≤ limitoff then set ausmachen to false
			end repeat
			-- Wenn keine Aufnahme in den nächsten 15 Minuten ansteht, in den Ruhezustand gehen
			if «class IRcd» = false and ruhezustand = true and ausmachen = false then
				activate
				set antwort to display dialog "EyeTV hat eine Aufnahme beendet.
Die nächste Aufnahme steht in mehr als 15 Minuten an.

Soll der Computer in den Ruhezustand gehen?" buttons {"Nein", "Ja"} default button "nein" with icon note with title "EyeTV-Recorder" giving up after 30
				if button returned of antwort = "Ja" or button returned of antwort = "" then
					tell application "Finder"
						ignoring application responses
							sleep
						end ignoring
					end tell
				end if
			end if
			-- Wenn keine Aufnahme in den nächsten 30 Minuten ansteht, herunterfahren
			if «class IRcd» = false and ausmachen = true then
				activate
				set antwort to display dialog "EyeTV hat eine Aufnahme beendet.
Es steht keine EyeTV-Aufnahme bevor.

Soll der Computer ausgeschaltet werden?" buttons {"Nein", "Ja", "Ruhezustand"} default button "nein" with icon note with title "EyeTV-Recorder" giving up after 30
				if button returned of antwort = "Ja" or button returned of antwort = "" then
					tell application "Finder"
						ignoring application responses
							shut down
						end ignoring
					end tell
				end if
				if button returned of antwort = "Ruhezustand" then
					tell application "Finder"
						ignoring application responses
							sleep
						end ignoring
					end tell
				end if
			end if
			
		end tell
	end if
end RecordingDone
(Sieht beim Dialog etwas unschön aus, dafür ist der Dialog auf dem Bildschirm dann umso schöner ;-) )

Meine Erfahrungen vom Herumbasteln und ausprobieren der Inputs aus meinen unzähligen Vorrednern bzw. -schreibern und mit dem Skript selbst:

- Front Row: ob Front Row läuft oder nicht, muss nicht abgefragt werden, da Front Row (bei allen Anwendungen oder Funktionen, die daraus gestartet werden) die Ausführung von Applescripts sowieso blockiert
- iTunes: iTunes abzufragen bring auch nichts, da man immer ein Prozess mit dem Namen iTunes findet. Scheint im Hintergrund zu laufen.
- EyeTV: EyeTV ergibt immer ein playing, wenn ein TV-Fenster geöffnet wird.
Das TV-Fenster darf aber nicht im Vollbildmodus laufen, sonst wird das Herunterfahren verhindert. EyeTV verhindert auch den normalen Ruhezustand aus der Systemeinstellung "Energie sparen".
- ETV-Comskip: Muss über die Zeile
Code:
do shell script "/Library/Application\\ Support/ETVComskip/MarkCommercials.app/Contents/MacOS/MarkCommercials" & recordingID
in das Skript eingebaut werden! (hatte mich selbst vera...t durch rumbasteln). Funktioniert super, dauert aber je nachdem etwas.
- Andere Anwengungen: Wenn andere Anwenungen irgendwelche Dateien geöffnet halten und fragen, ob gespeichert werden soll, schlägt das Herunterfahren fehl, trotz ignore.

Somit ist eben obenstehendes Skript herausgekommen, was wie gesagt sehr gut funktioniert und mir bis jetzt noch nie in die Quere gekommen ist.
Funktioniert auch bei mehreren Aufnahmen hintereinander, mit oder ohne kurze Pause, sehr gut.

Bin mir noch am Überlegen, ob ich eine Unterscheidung einbauen soll, dass z.B. wenn es noch 15 Minuten bis zur nächsten Aufnahme geht, nur der Ruhezustand aktiviert werden soll, und ab 30 Minuten heruntergefahren werden soll.
Hat jemand Daten zur zusätzlichen Stromeinsparung von Ruhezustand gegenüber Idle?

Edit: Kommentar zu ETV-Comskip geändert, Comskip muss mit der eingefügten Zeile gestartet werden.
Edit: Skript angepasst, sodass der Computer in den Ruhezustand oder ausschaltet, je nachdem wie lange es bis zur nächsten Aufnahme dauert.
Edit: Kleiner Logik-Fehler korrigiert. Ansonsten kam bei Anklicken von Nein der zweite Dialog auch noch.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: 37degrees und Man Drake
- iTunes: iTunes abzufragen bring auch nichts, da man immer ein Prozess mit dem Namen iTunes findet. Scheint im Hintergrund zu laufen.
Ich hatte damals in meinem Skript abgefragt, ob iTunes gerade etwas abspielt. Damit EyeTV meinen mini nicht herunter fuhr, während ich mit ihm gerade - gesteuert über den iPod Touch - Musik hörte.

Hat jemand Daten zur zusätzlichen Stromeinsparung von Ruhezustand gegenüber Idle?
ca. 1W Unterschied.
Allerdings hingen bei mir die DVB-S Empfänger an einer M/S Steckdosenleiste. Die wurden nur abgeschaltet, wenn der Mini ausschaltete und nicht wenn er in den Ruhezustand ging. Von daher war bei mir die Ersparnis größer.

EDIT: Quatsch, falsch gelesen, ich dachte Du wolltest Den Unterschied zwischen Ruhezustand und aus wissen. Der Unterschied zwischen Idle (an) und Ruhezustand beträgt in etwa 10W.
3-4W im Ruhezustand und ca. 13W im idle.


- EyeTV: EyeTV ergibt immer ein playing, wenn ein TV-Fenster geöffnet wird.
Das TV-Fenster darf aber nicht im Vollbildmodus laufen, sonst wird das Herunterfahren verhindert. EyeTV verhindert auch den normalen Ruhezustand aus der Systemeinstellung "Energie sparen".
Ich habe das damals auch irgendwie gelöst, indem ich das EyeTV Fenster wenn immer es geht schließte. Drückte ich z.B. auf Ausschalten (Tastatur Taste definiert), wurde ein Skript ausgeführt, welches überprüfte, ob EyeTV aufnahm. Wenn ja, wurde nur das (Vollbild-)fenster geschlossen und es kam eine Nachricht mittels Growl, dass eine Aufnahme läuft und der mini späte ausgeschaltet würde.
 
Zuletzt bearbeitet:
- ETV-Comskip: muss und darf nicht im Skript aufgerufen werden. 1. markiert es die Werbung automatisch, wenn es installiert ist, auch wenn die Aufnahme schon vor der Installation gemacht wurde (war zumindest bei mir so), 2. läuft sonst der Rest des Skripts nicht mehr ab.

komisch, bei mir geht das alles mit einer zeile:
Code:
do shell script "MarkCommercials.app/Contents/MacOS/MarkCommercials " & recordingID

das script läuft auch weiter, dauert halt nur bis markcommercials durch ist...
 
Ich bin leider ziemlich grün hinter den Ohren, habe das Script aus Post #1 an der richtigen Stelle eingesetzt (wie in Anleitung) doch der Mac geht danach nicht schlafen.

Gibt es für 3.3 ein überarbeitetes Script oder gilt das aus #1 ?

Vielen Dank!!
 
komisch, bei mir geht das alles mit einer zeile:
Code:
do shell script "MarkCommercials.app/Contents/MacOS/MarkCommercials " & recordingID

das script läuft auch weiter, dauert halt nur bis markcommercials durch ist...

OneOeight, ich hatte die Zeile auch drin, aber dann hat sich der Mac gar nie ausgeschaltet.

Was macht das Skript mit der Zeile überhaupt?

Wie gesagt, ich hatte einen Film aufgenommen und erst später ETV-Comskip installiert. Als ich dann den Film angeschaut habe, waren die Werbungen ohne weiteres Zutun markiert und wurden übersprungen - mehr macht doch Comskip sowieso nicht, oder?
Schneiden muss man dann sowieso selber.
 
Was macht das Skript mit der Zeile überhaupt?

das ruft halt den teil von etv-comskip auf, der die werbung markiert.
aber auch nur für die gerade aufgenommene sendung.
das kann, je nach länge, auch etwas dauern.
vielleicht hast nicht lang genug gewartet oder irgendwas anderes ist schief gegangen...
 
Hm, das herausschneiden scheint ein Zufallseffekt gewesen zu sein, auf jeden Fall sind bei den Aufnahmen von Gestern keine Werbungen markiert. Wahrscheinlich hab ich beim Basteln irgend etwas gemacht.

Kann MarkCommercials auch eine Aufnahem später noch für die Markierung zugeführt werden?
 
Kann MarkCommercials auch eine Aufnahem später noch für die Markierung zugeführt werden?

klar, wenn du das selber im terminal aufrufst listet der die aufnahmen mit nummern und mit du kannst dann entweder alle oder eine einzeln bearbeiten lassen.
der merkt sich auch, welche der schon hat, du kannst also immer alle bearbeiten lassen.
 
  • Gefällt mir
Reaktionen: xtian
Hey, funzt ja super! Thanks a lot...
 
Hi,

bei mir scheint das Script gar nicht aktiviert zu werden :eek:

Ich hab am Anfang jetzt noch mal was eingebaut, aber selbst diese Anzeige kommt nicht, geschweige denn das sich was anderes tut.

Weder wenn ich eine Aufnahme programmiere noch wenn ich mal Aufnahme und dann wieder stopp drücke (dann müsste es doch auch ausgeführt werden, oder?).

Hier mal das Script was aus Teilen von hier besteht. Teilweise noch Test mit "nicht unbedingt sinnvollen" Einstellungen.
Mir kommt es vor allem halt auf das Abschalten in den Sleep Modus nach getaner Aufnahme an.

Code:
-- Skript zum automatischen Ausschalten nach einer Aufnahme.
-- Speichern als Skrpt mit Name: RecordingDone.scpt
-- Speichern in /Library/Application Support/EyeTV/Scripts/TriggeredScripts

on RecordingDone(recordingID)
	-- Werbung herausschneiden
	do shell script "/Library/Application\\ Support/ETVComskip/MarkCommercials.app/Contents/MacOS/MarkCommercials " & recordingID
	-- IDLE-Time abrufen
	set idletime to do shell script "ioreg -c IOHIDSystem | grep Idle | tail -1 | awk '{printf(\"%d\",  $NF/10^9);}'"
	set idletime to idletime as integer
	-- Wenn IDLE-Time abgelaufen, Computer schlafen legen
	if idletime > 60 then
		tell application "EyeTV"
			-- überprüfen ob eine Aufnahme ansteht
			set limitruhe to 15 * minutes
			set limitoff to 30 * minutes
			set ruhezustand to true
			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 ≤ limitruhe then set ruhezustand to false
				if diff ≥ 0 and diff ≤ limitoff then set ausmachen to false
			end repeat
			-- Wenn in nächster Zeit keine Aufnahme ansteht, in den Ruhezustand gehen
			if is_recording = false and ruhezustand = true then
				activate
				set antwort to display dialog "EyeTV hat eine Aufnahme beendet.
Es steht keine EyeTV-Aufnahme unmittelbar bevor.

Soll der Computer in den Ruhezustand gehen?" buttons {"nein", "ja"} default button "nein" with icon note with title "EyeTV-Recorder" giving up after 30
				if button returned of antwort = "ja" or button returned of antwort = "" then
					tell application "Finder"
						ignoring application responses
							sleep
						end ignoring
					end tell
				end if
			end if
			-- Wenn keine Aufnahme ansteht, herunterfahren
			if is_recording = false and ausmachen = true then
				activate
				set antwort to display dialog "EyeTV hat eine Aufnahme beendet.
Es steht keine EyeTV-Aufnahme bevor.

Soll der Computer ausgeschaltet werden?" buttons {"nein", "ja"} default button "nein" with icon note with title "EyeTV-Recorder" giving up after 30
				if button returned of antwort = "ja" or button returned of antwort = "" then
					tell application "Finder"
						ignoring application responses
							-- ORIGINAL WAR shut down
							sleep
						end ignoring
					end tell
				end if
			end if
		end tell
	end if
end RecordingDone

Selbst wenn ich unverändert das Script aus #262 benutze (war ein Hauptgrundlage) tut sich einfach nichts.
Es steht auch keine weitere Aufnahme an.
Thx für Eure Tipps
 
Zuletzt bearbeitet:
Kann ja auch gar nicht funktionieren, wenn du die Aufnahme manuell beendest. Dann steht der IDLE-Timer nämlich auf einem Wert kleiner als eine Minute, und dann läuft nur das Markieren der Werbung mit ETV-Comskip ab.

Für solche Tests muss du in der Zeile
Code:
set idletime to do shell script "ioreg -c IOHIDSystem | grep Idle | tail -1 | awk '{printf(\"%d\",  $NF/10^9);}'"
die Zeitmultiplikation ändern, auf 10^1. Dann gehts.

Ausserdem, kopier das Skript nochmal raus, ich hatte bei den Bedingungen einen kleinen Logik-Fehler drin. Wenn man auf nein geklickt hat, ist die zweite Abfrage gekommen. Hab ich grad geändert.
 
  • Gefällt mir
Reaktionen: Man Drake
okay, danke werd ich mal testen, bzw. einbauen.

aber es geht auch nicht wenn die aufnahme automatisch startet und endet.
hab ich gestern am nachmittag auch noch mal versucht.
 
hast du auch das script mit dem applescript-editor gespeichert und nicht mit einem text-editor?
 
in meinem letzten versuch ja, vorher hatte ich echt einen texteditor.
und siehe da, die datei war plötzlich doppelt so groß (8 => 16kb).

aber wie gesagt... zuletzt war sie auch so gespeichert.
die alte hatte ich gelöscht und die dann neu angelegt .
 
ähem... sorry, aber ich beschäftige mich gerade erstmals mit diesem Thema. Diesen thread habe ich jetzt durchgelesen - aber wo ist das aktuellste script? Danke Euch,
Seeeb
 
kommt drauf an, welche features du willst...
das original ist in https://www.macuser.de/forum/3799067-post16.html

weiter im thread findest du erweiterte, wo z.b. abgefragt wird, ob der rechner idlet oder itunes spielt oder oder oder...
 
OK... werde es ausprobieren. Danke!
 
Zurück
Oben Unten