MKV Buddy - Kleiner Helfer fürs tägliche Video basteln... (1 Viewer)

Status
Not open for further replies.

lightshock

Test Group
  • Team MediaPortal
  • June 3, 2008
    552
    128
    bei Karlsruhe
    Home Country
    Germany Germany
    Schmeiß mir mal den Quellcode rüber und markier bitte die Stelle.
    Vier Augen sehen besser als zwei :)
     

    Lehmden

    Retired Team Member
  • Premium Supporter
  • December 17, 2010
    12,566
    3,947
    Lehmden
    Home Country
    Germany Germany
    Hi.
    Im Moment ist das voll "verbastelt". Ich habe sogar einen Extra- Zähler manuell eingebaut, hilft auch nichts. Auch der zählt 1,3,3,3,3,...
    $y is der Endwert der Schleife, wird vor her ausgelesen und liefert den richtigen Wert. $ec2 ist ein Array das die Namen der Schauspieler beinhaltet, ebenfalls mit den richtigen Werten. Mit MsgBox habe ich die Werte überprüft, gehört natürlich nicht zur "fertigen" Version...
    Das Ganze bricht mit einem SQLite Error ab, weil der Schauspieler mit dem Index 3 wiederholt eingefügt wird, da die blöde Zähl Variable unbedingt bei 3 hängen bleiben muss...
    Die "innere" For To Schleife läuft problemlos durch.

    Code:
        Local $j = 1
    
        For $j = 1 to $y
           
            $ac = ""
    
            $ac = $ec2[$j]
    
    
            $ac1 = StringStripWS($ac, 7)
    
            MsgBox(0,"","Nr " & $j & " = " & $ac1)
    
            Local $iIndex = _ArraySearch($V_Actors, $ac1)
    
    
            If $iIndex = -1 Then
    
                $guid = CeateBinGUID()
    
                $query = 'INSERT INTO V_ACTORS (ID , ATTRIBUTE_VALUE) VALUES (' & $guid & ' , "' & $ac1 & '") ;'
    
                _SQLite_Exec(-1, $query)
    
                _SQLite_QueryFinalize($query)
    
            EndIf
    
            $query = 'SELECT ID FROM V_ACTORS WHERE ATTRIBUTE_VALUE = "' & $ac1 & '" ;'
    
            $iRval = _SQLite_GetTable(-1, $query, $aResult, $iRows, $iColumns)
    
            _SQLite_QueryFinalize($iRval)
    
            $result = _SQLite_Encode($aResult[1])
    
            If UBound($ArrayMIID) > 1 Then
    
                For $i = 1 to UBound($ArrayMIID) - 1
    
                    $query = 'INSERT INTO NM_ACTORS (MEDIA_ITEM_ID , ID) VALUES (' & $ArrayMIID[$i] & ' , ' & $result & ') ;'
    
                    _SQLite_Exec(-1, $query)
    
                    _SQLite_QueryFinalize($query)
    
                Next
    
            EndIf
       
        Next
     

    Lehmden

    Retired Team Member
  • Premium Supporter
  • December 17, 2010
    12,566
    3,947
    Lehmden
    Home Country
    Germany Germany
    Ach, hier ist der "unverbastelte" Code, aus einer früheren Programmversion. Da hab ich nicht mal getrennte Zähl- Variablen nutzen müssen.

    Code:
        For $i = 1 to $ec2[0]
    
            Local $ac = $ec2[$i]
    
            Local $ac1 = StringStripWS($ac, 7)
    
            Local $iIndex = _ArraySearch($V_Actors, $ac1)
    
            If $iIndex = -1 Then
    
                $guid = CeateBinGUID()
    
                $query = 'INSERT INTO V_ACTORS (ID , ATTRIBUTE_VALUE) VALUES (' & $guid & ' , "' & $ac1 & '") ;'
    
                _SQLite_Exec(-1, $query)
    
                _SQLite_QueryFinalize($query)
    
            EndIf
    
            $query = 'SELECT ID FROM V_ACTORS WHERE ATTRIBUTE_VALUE = "' & $ac1 & '" ;'
    
            $iRval = _SQLite_GetTable(-1, $query, $aResult, $iRows, $iColumns)
    
            _SQLite_QueryFinalize($iRval)
    
            $result = _SQLite_Encode($aResult[1])
    
            For $i = 1 to UBound($ArrayMIID) - 1
    
                $query = 'INSERT INTO NM_ACTORS (MEDIA_ITEM_ID , ID) VALUES (' & $ArrayMIID[$i] & ' , ' & $result & ') ;'
    
                _SQLite_Exec(-1, $query)
    
                _SQLite_QueryFinalize($query)
    
            Next
    
            $ac = ""

    $ec2[0] ist das "Null- Element" des entsprechenden Arrays, welches die Anzahl der Elemente im Array enthält. Beim oberen Code hab ich das vorher in die Variable $y übertragen, um ggfs Komplikationen mit dem Array Handling aus dem Weg zu gehen. Also $Y=$ec2[0] Sach ja, verbastelt.
     

    lightshock

    Test Group
  • Team MediaPortal
  • June 3, 2008
    552
    128
    bei Karlsruhe
    Home Country
    Germany Germany
    Hmm, sieht prinzipiell OK aus. Bis auf das, das man nicht die gleichen Variablen für die Schleifen nutzen sollte. Aber das hattest du ja schon erwähnt.
    Das einzige was ich mir vorstellen könnte: Wird denn die Variable wo anderst nochmal gesetzt? Hast du mal ein Do ... Loop oder mit einem For each probiert? Sofern es das bei dir überhaupt gibt.

    Wenn es ein For each gibt, würde ich zuerst dazu tendieren. Weil dir For each direkt in eine String-Variable den nächsten Eintrag vom Array schreibt.
    Unter .net sieht das z.B. so aus:

    Code:
    For Each ac as String in ec2
    .
    .
    .
    Next

    Ist einfacher zu handeln
     

    Maveric

    Portal Pro
    May 8, 2013
    56
    1
    Home Country
    Germany Germany
    Hallo Lehmden,

    danke für dieses tolle Programm!!! Bis gestern Abend hat es mich hervorragende unterstützt bei meiner wöchentlichen HTPC arbeit :)
    doch seit gestern Abend kommt nun plötzlich dieser Fehler:
    MKVBuddy-Fehler.PNG


    wobei ich an den Einstellungen sprich den Ordnern vom einlesen und abspeichern nichts geändert habe...

    Ich habe auch schon den Rechner neu gestartet, das Programm deinstalliert und neu installiert, aber der Fehler kommt immer wieder :(

    Kannst du mir helfen?
     

    Lehmden

    Retired Team Member
  • Premium Supporter
  • December 17, 2010
    12,566
    3,947
    Lehmden
    Home Country
    Germany Germany
    Hi.
    Bei welcher Datei und welcher Aktion passiert das genau?
    In der Regel werden solche Fehler nämlich abgefangen, doch da ich jeden Fehler einzeln erwischen muss da es kein globales Fehlerhandling gibt, kann schon mal einer durchrutschen. Normalerweise sind dann eigentlich notwendige Daten nicht vorhanden. Es fehlt etwas essentielles im .nfo beim Taggen, eine Datei ist so beschädigt, das MediaInfo nicht alle zwingend notwendigen Informationen auslesen kann, usw... Ich brauche also deutlich genauere Infos als du sie bisher geliefert hast. Die Fehlermeldung selbst ist leider völlig nichtssagend und lässt keinerlei Schlussfolgerung auf die Ursache zu.
     

    Maveric

    Portal Pro
    May 8, 2013
    56
    1
    Home Country
    Germany Germany
    DANKE für die schnelle Antwort,

    klar mehr Infos habe ich ganz vergessen.

    Dieser Datei
    von mir selber mit VideoReDo geschnitten: Chuggington – Die Loks sind los S04E25 - Der Eisenschlepper-Wettkampf.ts (wobei es mit anderen Dateien aus den letzten Tagen von Chuggington das gleiche Problem gibt!)

    Aktion: beim umcodieren (mit den "Standard-Einstellungen") von Quell-Ordner "C:\Video\einlesen" nach Ziel-Ordner "C:\Video\ausgabe"

    Achja ich habe keine Datei getaggt mit .nfo oder dergleichen ....

    Reichen diese Infos?


    (weiter Dateinamen wären z.B.:
    Chuggington – Lok Rallye S01E20 - Das Gedächtnis-Abzeichen.ts
    Chuggington – Die Loks sind los S04E15 - Schnee-Helfer.ts
    Chuggington – Die Loks sind los S04E20 - Der Chugarbeiter Test.ts
    benötigst du noch mehr Dateinamen?
    Ich kann leider kein Unterschied zu anderen Dateien entdecken - Sonderzeichen, Umlaute, ...)
     

    Lehmden

    Retired Team Member
  • Premium Supporter
  • December 17, 2010
    12,566
    3,947
    Lehmden
    Home Country
    Germany Germany
    Also beim Umcodieren, das hilft schon mal. Dann stimmt etwas mit den .ts nicht wirklich. Kannst du mal die Ausgabe von MediaInfo anhängen und/oder mir einen kurzen Schnipsel der Datei (ein paar Sekunden reichen) zukommen lassen. Denn wenn ich den Quellcode direkt in der IDE laufen lasse zeigt er mir genau an, wo das Problem auftritt. Die compilierte Programmversion beinhaltet aber stets auch alle Includes usw, womit die Zeilennummer nicht mehr zu identifizieren ist.
    Eine andere Variante wäre, das du dir AutoIt und den Scite Editor (kostenlos, ohne Spyware und zusammen gut 20 MB groß) installierst und selbst den Quellcode ausführst, damit ich die wirkliche Zeilennummer bekomme.
     

    Maveric

    Portal Pro
    May 8, 2013
    56
    1
    Home Country
    Germany Germany
    ;) TOP vielen DANK - du hast mich auf den richtigen Weg gebracht - jetzt geht es wieder!!!!

    Folgendes Problem war schuld:

    Ich habe in den letzten Tagen mit WebGrab++ begonnen zu arbeiten bzw. mir einzurichten, soweit so gut, es funktioniert nun auch, doch ich muss bei den Einstellungen wie ich Serien speichere einen Fehler gemacht haben und nun sieht mein Ausgabe-Datei-Namen wie folgt aus:
    Chuggington – Die Loks sind los S04E25 - Der Eisenschlepper-Wettkampf.ts
    (und hier ist genau das Problem mit dem ersten Bindestrich... das ist ein Sonderzeichen, denn der Dateiname sollte soo aussehen:)
    Chuggington - Die Loks sind los S04E25 - Der Eisenschlepper-Wettkampf.ts

    Kleiner aber gewichtiger Fehler!

    Drauf gekommen bin ich über diese Ansicht/ Info
    MKVBuddy-Fehler02.PNG


    Vielen DANK nochmals - jetzt kann es wieder weiter gehen ;)
    Happy Coding...
     

    Lehmden

    Retired Team Member
  • Premium Supporter
  • December 17, 2010
    12,566
    3,947
    Lehmden
    Home Country
    Germany Germany
    Hi.
    Ja der "Halbgeviert", den mag AutoIt überhaupt nicht. Ist bei mir durch WebGrab leider auch immer wieder ein Problem. Ich ändere das vor dem Umcodieren in einen "normalen" Bindestrich und alles funktioniert.
     
    Status
    Not open for further replies.

    Users who are viewing this thread

    Top Bottom