automatisieren zum mergen *.trp Aufnahmen

Begonnen von web-ts, Mai 30, 2015, 10:01:21

« vorheriges - nächstes »

web-ts

Hallo,
ich habe eine Frage/ein Problem und hoffe darauf das jemand evtl. einen guten Lösungsansatz hat.
Ich habe seit einigen Jahren div. Filme & Dokus mit meinem Hirschmann Triax 2S HD950 auf eine externe HDD aufgezeichnet (und soweit es mit dem Gerät geht entsprechend Werbung etc. rausgeschnitten).
Bekanntlicherweise werden je nach Länge mehrer Dateien angelegt. Die erste mit *.trp, dann *.001, *.002 usw.
Wenn ich eine *.trp mit dem TS Doctor öffne erkennt er das mehrere dazugehören und öffnet diese entsprechend mit und ich kann es als ein grösseres *.ts File speichern.
Ich habe allerdings hunderte Unterverzeichnisse in denen jeweils eine verschiedene Anzahlt von *.00? Daten liegen.
Gibt es eine Möglichkeit per Command das Öffnen und entsprechende mergen von *.trp und *.00? und speichern im *.ts Format zu automatisieren ?
Plan wäre ein Script zu schreiben das die entsprechenden Verzeichnisse durchsucht um dann eine Kommandozeile 'zusammenbaut'
Es sind wohl Wildcards beim Command-Line Tool möglich, allerdings ist wegen der Endung erst *.trp und dann *.00? eher schlecht.
       Doku S19:  SDoctor.exe [Input Filename] [Command] [Option] [Output Filename]

Vielen Dank im Voraus
Grüße

Mindwarp

Hallo Web-Ts,

ich habe mal eben ein Powershellskript erstellt.
Du musst die Variablen
$Videopfad = 'X:\VideoEin'
$Videopfad_aus = 'X:\VideoAus\'
$Tsdoctor = 'C:\Program Files (x86)\Cypheros\TSDoctor\TSDoctor.exe'
$SuchbegriffDatei = '*.trp'
$MaxParallel = 3
anpassen.
Es werden keine Unterverzeichnisse erstellt.
Wenn Du in den Verzeichnissen Dateien mit dem gleichen Namen hast, werden diese im Videopfad_aus überschrieben.
In jedem Ordner darf nur eine Datei mit der Endung .trp vorhanden sein.
Die Dateiendung des gemergten Files ist bei meinem Test bei *.trp geblieben und musste von Hand angepasst werden.
Das Skript ist parallelisiert und öffnet momentan 3 Instanzen des Doctors.
Zum Testen solltest Du nicht auf dein OriginalVideoverzeichnis verweisen und erstmal ein paar Verzeichnisse kopieren und den übergeordneten Pfad in $Videopfad eintragen.
Es wird die Powershell 3 benötigt. Die Powershell is Microsofts Weiterentwicklung der Kommandozeile.
Powershelldateien kannst Du mit der Endung .ps1 speichern.
Die Powershell muss aber erst freigeschaltet werden.
Siehe: https://technet.microsoft.com/de-de/library/dd347628.aspx

Das Skript habe ich mit einem Testlauf überprüft, weise aber daraufhin, daß es fehlerhaft sein kann.
Bitte selber testen.

Ich hoffe, ich konnte helfen.

Powershellskript:

$Videopfad = 'X:\VideoEin'
$Videopfad_aus = 'X:\VideoAus\'
$Tsdoctor = 'C:\Program Files (x86)\Cypheros\TSDoctor\TSDoctor.exe'
$SuchbegriffDatei = '*.trp'
$MaxParallel = 3
#
$TempVideodateien = (Get-ChildItem $Videopfad -recurse |
where {$_.FullName -like $SuchbegriffDatei } | Sort-Object FullName )
ForEach ($EingabeVideodatei in $TempVideodateien)        {
   if (Test-Path $EingabeVideodatei.FullName )
   {
      $TempDatei = $EingabeVideodatei.FullName
      $TempDatei = Split-Path $TempDatei
      $TempDatei = $TempDatei + '\' + $SuchbegriffDatei
      Write-Host 'Starte: ' $TempDatei
   }
}
#
if (Test-Path $Videopfad)
{
   workflow Test-Workflow{
      param($EingabeTsdoctor
      ,$EingabeVideopfad
      ,$AusabeVideopfad
      ,$EingabeSuchbegriffDatei
      ,$ParallelBatchMaxThreads
      )
      $TempVideodateien = (Get-ChildItem $EingabeVideopfad -recurse | where {$_.FullName -like $EingabeSuchbegriffDatei } | Sort-Object FullName )
#
      ForEach -Parallel -throttlelimit $ParallelBatchMaxThreads ($EingabeVideodatei in $TempVideodateien)        {
         if (Test-Path $EingabeVideodatei.FullName )
         {
            $TempDatei = $EingabeVideodatei.FullName
            $TempDatei = Split-Path $TempDatei
            $TempDatei = $TempDatei + '\' + $EingabeSuchbegriffDatei
            $TSargumentlist = """" + $TempDatei + """" + " Autofix " + """" + $AusabeVideopfad + """"
            Start-Process $EingabeTsdoctor -Argumentlist $TSargumentlist -PassThru | Wait-Process
         }
      }
   }
   Test-Workflow $Tsdoctor $Videopfad $Videopfad_aus $SuchbegriffDatei $MaxParallel
}


web-ts

Hallo Mindwarp,
wunderbar, vielen Dank !
So in der Art habe ich mir das vorgestellt. Powershell wäre übrigens auch meine Wahl gewesen.
Ich werde es in einer ruhigen Minute mal durchtesten.
Da der besagte Hirschmann jeweils ein Subfolder pro Ausnahme anlegt, ist immer nur ein *.trp File im Ordner.
Wenn ich das richtig sehe, erzeugt der autofix Parameter die Ausgabedatei immer im gleichen Format wie die Inputdatei (in meinem falle .trp).
Ich habe mal an der Kommandozeile rumprobiert und festgestellt das man das Ausgabefile anscheinend auch in ts 'erzeugen' lassen kann (z.b.  C:\> C:\Program Files (x86)\TSDoctor>TSDoctor.exe "C:\temp\Input_fiel\film1.trp"  autofix "C:\temp\Output_file\film1.ts").

Jetzt muss ich nur noch rausfinden mit welchem Format der neue Wunschreceiver (TechniSat TechniCorder ISIO STC) besser umgehen kann, oder ob das egal ist da trp und ts anscheinend irgendwie das Gleiche ist.

Jedenfalls nochmals ein großes DANKESCHÖN !


Mindwarp

Hallo Web-Ts,

Freut mich, wenn die paar Zeilen hilfreich sind.

Zum umbenennen von trp nach ts kann  man auch diese Zeile noch anhängen.
Get-ChildItem ($Videopfad_aus + '*.trp') -recurse | Rename-Item -NewName {$_.Name -replace '.trp','.ts'}




www.cypheros.de