AppleScript zum Exportieren von EyeTV Aufnahmen mit HandBrake

AppleScript zum Exportieren von EyeTV Aufnahmen mit HandBrake

This page is also available in english!

EyeTV bietet zwar sehr komfortable Möglichkeiten die Aufnahmen in verschiedene, gängige Formate zu exportieren, jedoch sind die Möglichkeiten auf das Ergebnis Einfluss zu nehmen recht gering. Darüber hinaus hat die Qualität und Größe der exportierten Dateien mich nicht überzeugt. Das OpenSource Projekt HandBrake hingegen hat mich in diesem Bereich voll zufrieden gestellt. Und seit es mit der Version 0.9.3 auch möglich ist Videodateien umzuwandeln, verwende ich es zum Archivieren meiner Aufnahmen. Da es mir aber zu lästig war das ganze immer wieder von Hand zu erledigen, habe ich mich mit der Scripting-Schnittstelle von EyeTV auseinandergesetzt um diese Aufgabe ein wenig zu Automatisieren. Herausgekommen ist das nachfolgende AppleScript.

property HANDBRAKE_CLI : "~/bin/HandBrakeCLI"
property HANDBRAKE_PARAMETERS : " -O -I -f mp4 -e x264 -x level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=1500:vbv-bufsize=2000:analyse=all:me=umh:subq=6:no-fast-pskip=1 -b 1000 -2 -T -E faac -B 128 -R 48 -A Deutsch -w 640"
property TARGET_PATH : "~/"
property TARGET_TYPE : ".mp4"
property SOURCE_TYPE : ".mpg"
property SHELL_SCRIPT_SUFFIX : " > /dev/null 2>&1 & "

on RecordingDone(recordingID)
       tell application "EyeTV"
               set new_recording_id to (recordingID as integer)
               set new_recording to recording id new_recording_id
               my export_recording(new_recording)
       end tell
end RecordingDone
 
on run
       tell application "EyeTV"
               set selected_recordings to selection of programs window
               repeat with selected_recording in selected_recordings
                       my export_recording(selected_recording)
               end repeat
       end tell
end run
 
on export_recording(the_recording)
       tell application "EyeTV"
               set recording_location to location of the_recording as text
               set AppleScript's text item delimiters to "."
               set recording_path to text items 1 through -2 of recording_location as string
               set AppleScript's text item delimiters to ""
               set recording_path to POSIX path of recording_path
               set input_file to my escape_path(recording_path & SOURCE_TYPE) as string
               set output_file to my escape_path(TARGET_PATH & my get_recording_name(recording_location) & TARGET_TYPE) as string
               set cmd to HANDBRAKE_CLI & " -i " & input_file & " -o  " & output_file & HANDBRAKE_PARAMETERS & SHELL_SCRIPT_SUFFIX
               do shell script "echo \"" & cmd & "\" > /Users/niedral/shellscript.log"
               do shell script cmd
       end tell
end export_recording
 
on get_recording_name(recording_location)
       set oldDelimiters to AppleScript's text item delimiters
       set AppleScript's text item delimiters to "/"
       set path_components to every text item of POSIX path of (recording_location as string)
       set recording_folder to item -2 of path_components as string
       set AppleScript's text item delimiters to ".eyetv"
       set recording_name to first item of every text item of recording_folder
       set AppleScript's text item delimiters to oldDelimiters
       return recording_name
end get_recording_name
 
on escape_path(the_path)
       set oldDelimiters to AppleScript's text item delimiters
       set AppleScript's text item delimiters to "/"
       set path_components to every text item of the_path
       set AppleScript's text item delimiters to oldDelimiters
       repeat with counter from 1 to count path_components
               set path_component to item counter of path_components
               set item counter of path_components to my escape_string(path_component)
       end repeat
       set AppleScript's text item delimiters to "/"
       set the_path to path_components as string
       set AppleScript's text item delimiters to oldDelimiters
       return the_path
end escape_path
 
on escape_string(the_string)
       set chars to every character of the_string
       repeat with i from 1 to length of chars
               if "!$&\"'*()/{[|;<>?` \\" contains (item i of chars as text) then
                       set item i of chars to "\\" & (item i of chars as text)
               end if
       end repeat
       return every item of chars as string
end escape_string

Installation und Verwendung

Ihr benötigt natürlich die Command Line Version von HandBrake, die ihr euch von der HandBrake Webseite herunterladen könnt.

Kopiert man das Script in den Ordner /Library/Application Support/EyeTV/Scripts, kann mann die Ausgewählte Aufnahme aus dem Archiv durch Aufruf des Scripts aus dem Script-Menü exportieren lassen. Es können auch mehrere Aufnahmen gewählt werden. Das ist jedoch nicht sehr sinnvoll, weil die Exportaufrufe nicht nacheinander ausgeführt werden, sondern alle im Hintergrund parallel gestartet werden.

Alternativ kann man das Script in den Ordner /Library/Application Support/EyeTV/Scripts/TriggeredScripts kopieren und in RecordingDone.scpt umbenennen. Danach werden neue Aufnahmen automatisch exportiert wenn die Aufnahme beendet wurde.

Mit den ersten sechs Zeilen könnt ihr das Script euren Bedürfnissen anpassen.

  • HANDBRAKE_CLI gibt den Pfad zum Binary an.
  • HANDBRAKE_PARAMETERS legt die Optionen beim Aufruf des Shellscriptes fest und damit die gewünschte Codierung.
  • TARGET_PATH legt das Verzeichnis fest, in dem die fertig exportierten Dateien landen. Der Pfad muss mit einem / enden.
  • TARGET_TYPE bestimmt den Typ der exportierten Datei.
  • SOURCE_TYPE gibt an, welches Typ die Videodatei der Aufnahme hat.
  • SHELL_SCRIPT_SUFFIX bestimmt die abschließenden Parameter des Aufrufs. Hier können gegebenenfalls Logdateien angegeben werden. Sorgt aber dafür, dass der Shellaufruf im Hintergrund ausgeführt wird.

Download

HandBrake Export Script


Werbung