diff --git a/SaneRename for OTR.exe b/SaneRename for OTR.exe new file mode 100644 index 0000000..4d1c30c Binary files /dev/null and b/SaneRename for OTR.exe differ diff --git a/Script.au3 b/Script.au3 new file mode 100644 index 0000000..0b1da09 --- /dev/null +++ b/Script.au3 @@ -0,0 +1,176 @@ +;; TODO: Umlaute werden beim Download der xml όber alle serien nicht richtig όbergeben. evtl mit %-Code arbeiten + +#NoTrayIcon +#region ;**** Directives created by AutoIt3Wrapper_GUI **** +#AutoIt3Wrapper_Icon=icon.ico +#AutoIt3Wrapper_Outfile=SaneRename for OTR.exe +#AutoIt3Wrapper_UseUpx=n +#AutoIt3Wrapper_Change2CUI=y +#AutoIt3Wrapper_Res_Comment=Umbenennungstool fόr Downloads vom OTR in das fόr Serien όbliche Format zur weiterverarbeitung durch Scraper +#AutoIt3Wrapper_Res_Description=Umbenennungstool fόr Downloads vom OTR in das fόr Serien όbliche Format zur weiterverarbeitung durch Scraper +#AutoIt3Wrapper_Res_Fileversion=0.2.0.15 +#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y +#AutoIt3Wrapper_Res_LegalCopyright=All rights reserved. Leroy Fφrster +#AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker +#AutoIt3Wrapper_Run_AU3Check=n +#endregion ;**** Directives created by AutoIt3Wrapper_GUI **** +#include +#include <_CSV2Array.au3> +#include +#include + +Global Static $apikey = "2C9BB45EFB08AD3B" +Global Static $productname = "SaneRename for OTR (ALPHA) v0.2" +Dim $titel + +w("") +w(" :: " & $productname & @CRLF & " :: by Leroy Foerster" & @CRLF & @CRLF) + +;~ Sleep(1000) + + +Func w($text) + ConsoleWrite($text & @CRLF & @CRLF) + Sleep(500) +EndFunc ;==>w + +Func ende($t) + ConsoleWrite($t & @LF) + MsgBox(0, "Fehler", $t) + Exit 3 +EndFunc ;==>ende + +$pfad = InputBox("","") +;~ $pfad = FileOpenDialog("Datei mit OTR-Benennungsschema [Titel_Datum_Zeit] auswδhlen", "", "Videodateien (*.avi;*.mp4;*.mpg;*.mpeg;*.divx;*.xvid;*.mkv)") +$datei = StringSplit($pfad, "\") +$datei = $datei[$datei[0]] +$dateiendung = StringRight($datei, 3) + +;; Datei in einzelne Felder, getrennt von _ (underscores) aufteilen + +$array = StringSplit($datei, "_", 2) + +$array_pos = 0 +For $i In $array + If StringIsDigit($array[0]) And $array_pos == 0 Then ; Prόfen, ob das erste Feld Cutlistnummern enthδlt, statt den Sendungsnamen + w("Erstes Feld ist eine Zahl (vermutlich Cutlist-Nummer) und wird ignoriert.") + + ElseIf StringRegExp($i, "\d+\.\d+\.\d+") Then ; Feld ist Datum YY.MM.TT? + $datum = StringRegExpReplace($i, "(\d+)\.(\d+)\.(\d+)", "$3.$2.$1") + + ElseIf StringRegExp($i, "\d+-\d+") Then ; Feld ist Uhrzeit? + $uhrzeit = StringRegExpReplace($i, "(\d+)-(\d+)", "\1:\2") ; Uhrzeit in ein schφnes Format bringen + ExitLoop ; Nach der Uhrzeit kommen keinen parsbaren Informationen mehr, der Loop wird verlassen + + Else + $titel &= $i & " " ; Das Feld passt zu keinem vorherigen Fall, es muss folglich zum Titel gehφren. Feld wird an bestehenden Titel angehδngt. + EndIf + + $array_pos += 1 +Next +$titel = StringStripWS($titel, 2) ; Entferne όberflόssiges Leerzeichen am Ende des Titels +$titel = StringRegExpReplace($titel, "(.*)(ae)(.*)", "\1δ\3") ; Mache aus AE ein Δ (Umlaute erstellen) +$titel = StringRegExpReplace($titel, "(.*)(ue)(.*)", "\1δ\3") ; Mache aus UE ein ά (Umlaute erstellen) +$titel = StringRegExpReplace($titel, "(.*)(oe)(.*)", "\1δ\3") ; Mache aus OE ein Φ (Umlaute erstellen) + +w(" Datum: " & @TAB & @TAB & $datum) +w(" Uhrzeit: " & @TAB & @TAB & $uhrzeit) +w(" Titel: " & @TAB & @TAB & $titel) + +;; ------------ Series ID abrufen anhand vom Titel der Serie -------------------- ;; +$series_db = "http://www.thetvdb.com/api/GetSeries.php?seriesname=" & $titel & "&language=de" +w("Lade Serieninfos von '" & $series_db & "' herunter...") +If Not InetGet($series_db, "serien.xml") Then Ende("Fehler beim Download von " & $series_db) +Dim $serien_xml[1] +_FileReadToArray("serien.xml", $serien_xml) +;~ FileDelete("serien.xml") + +$serien_xml_zeile_serie = _ArraySearch($serien_xml, $titel, -1, -1, -1, -1, 1) ; Nach Serientitel-Zeile suchen, von oben nach unten +If $serien_xml_zeile_serie = -1 Then Ende("Die Serie wurde nicht in der TVDB.COM gefunden.") +$serien_id = (_StringBetween($serien_xml[$serien_xml_zeile_serie - 2], ">", "", "", $episode_xml_zeile_episode, -1, -1, 1, 1) ; Nach SeasonNumber suchen, von der Zeile mit dem Episodentitel aus abwδrts +$season_nummer = (_StringBetween($episoden_xml[$episode_xml_zeile_season], ">", " column numbers in the first line +; Return Value ..: Success - 2-dim Array +; Failure - 0 +; @ERROR - 1: error file read +; @ERROR - 2: different number of columns / @EXTENDED = CSV-line +; - 3: parameter error +; Author(s) .....: Thorsten Willert +; Date ..........: Mon Dec 07 18:54:35 CET 2009 +; ============================================================================== +Func _CSV2Array($hFile, $cSeperator = "auto", $bFilterString = True, $iColumnMode = 0) + Local $s = FileRead($hFile) + If @error Then Return SetError(1) + + If $cSeperator = Default Then $cSeperator = "auto" + If Not $cSeperator Then $cSeperator = Opt("GUIDataSeparatorChar") + + ; searching the line-seperator and splitting the lines into an array + Local $aLines + If StringInStr($s, @CRLF) Then + $aLines = StringSplit($s, @CRLF, 1) + ElseIf StringInStr($s, @CR) Then + $aLines = StringSplit($s, @CR) + Else + $aLines = StringSplit($s, @LF) + EndIf + + ; searching the delimiter in the first line + Local $aTMP + If $cSeperator = "auto" Then + Local $iMax = 0 + Local $iC[5] = [0, 0, 0, 0, 0] + Local $sC[5] = [";", ",", @TAB, "|", " "] + + $aTMP = StringRegExp($aLines[1], ";", 3) + If Not @error Then $iC[0] = UBound($aTMP) + $aTMP = StringRegExp($aLines[1], ",", 3) + If Not @error Then $iC[1] = UBound($aTMP) + $aTMP = StringRegExp($aLines[1], "\t", 3) + If Not @error Then $iC[2] = UBound($aTMP) + $aTMP = StringRegExp($aLines[1], "\|", 3) + If Not @error Then $iC[3] = UBound($aTMP) + $aTMP = StringRegExp($aLines[1], "[ ]", 3) + If Not @error Then $iC[4] = UBound($aTMP) + + For $i = 0 To UBound($sC) - 1 + If $iC[$i] > $iMax Then + $iMax = $iC[$i] + $cSeperator = $sC[$i] + EndIf + Next + EndIf + + ; creating 2-dim array based on the number of data in the first line + $aTMP = StringSplit($aLines[1], $cSeperator) + Local $iCol = $aTMP[0] + Local $aRet[$aLines[0]][$iCol] + + ; splitting and filling the lines + For $i = 1 To $aLines[0] + $aTMP = StringSplit($aLines[$i], $cSeperator) + If @error Then ContinueLoop + If $aTMP[0] > $iCol Then + Switch $iColumnMode + Case 0 + Return SetError(2, $i) + Case 1 + ReDim $aRet[$aLines[0] - 1][$aTMP[0]] + Case 2 + $aTMP[0] = $iCol + Case Else + Return SetError(3) + EndSwitch + EndIf + For $j = 1 To $aTMP[0] + $aTMP[$j] = StringStripWS($aTMP[$j], 3) + If $bFilterString Then ; removing leading and trailing " or ' + $aTMP[$j] = StringRegExpReplace($aTMP[$j], '^("|'')(.*?)\1$', '$2') + EndIf + $aRet[$i - 1][$j - 1] = $aTMP[$j] + Next ; /cols + Next ; /lines + + Return $aRet +EndFunc ;==>_CSV2Array diff --git a/serien.xml b/serien.xml new file mode 100644 index 0000000..522e805 --- /dev/null +++ b/serien.xml @@ -0,0 +1,4 @@ + + + +