From d0dda4a03f7853f217ad3e1f131e19c9fc5d5238 Mon Sep 17 00:00:00 2001 From: Jonny007-MKD Date: Sun, 27 Jul 2014 02:59:45 +0200 Subject: [PATCH] Converted Script.au3 to saneRenamix.sh --- Script.au3 | 176 ------------------------------------------------- saneRenamix.sh | 156 +++++++++++++++++++++++++++++++++++++++++++ serien.xml | 4 -- 3 files changed, 156 insertions(+), 180 deletions(-) delete mode 100644 Script.au3 create mode 100755 saneRenamix.sh delete mode 100644 serien.xml diff --git a/Script.au3 b/Script.au3 deleted file mode 100644 index 0b1da09..0000000 --- a/Script.au3 +++ /dev/null @@ -1,176 +0,0 @@ -;; 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], ">", "/dev/null +if [ $? -ne 2 ]; then + fields=${fields##$firstField } +fi + +fieldsTitle=${fields%% [0-9][0-9].*} # Cut off everything after the title: date, hour, sender, ... +fieldsSender=${fields##*-[0-9][0-9]} # Cut off everything bevor the sender: title, date, time, ... + +fieldsDate=${fields%%$fieldsSender} # Cut off the sender +fieldsDate=${fieldsDate##$fieldsTitle } # Cut off the title, now we do have the date and time +fieldsTime=${fieldsDate##* } +fieldsDate=${fieldsDate%% *} + +fieldsDateInv=$(date +%d.%m.%Y --date="${fieldsDate//./-}") # Convert YY.MM.DD to DD.MM.YY +fieldsTime=${fieldsTime/-/:} # Convert HH-MM to HH:MM + +fieldsTitle=${fieldsTitle// s /\'s } # Replace a single s with 's +if [ "$lang" == "de" ]; then + fieldsTitle=${fieldsTitle//Ae/Ä} # Replace Umlauts + fieldsTitle=${fieldsTitle//Oe/Ö} + fieldsTitle=${fieldsTitle//Ue/Ü} + fieldsTitle=${fieldsTitle//ae/ä} + fieldsTitle=${fieldsTitle//oe/ö} + fieldsTitle=${fieldsTitle//ue/ü} +fi + + +echo -e " Work dir:\t$PWD" +echo -e " Datum:\t$fieldsDateInv" +echo -e " Uhrzeit:\t$fieldsTime" +echo -e " Titel:\t$fieldsTitle" + +# ------------ Series ID abrufen anhand vom Titel der Serie -------------------- ;; +series_db="https://www.thetvdb.com/api/GetSeries.php?seriesname=$fieldsTitle&language=$lang" +wget "$series_db" -O "$PWD/series.xml" -o /dev/null +error=$? +if [ $error -ne 0 ]; then + echo "Downloading $series_db failed (Exit code: $error)!" + exit 2 +fi + +series_id=$(grep -m 1 "seriesid" $PWD/series.xml) # Get series id (needed later) +if [ -z "$series_id" ]; then + echo -e " TVDB:\tSeries NOT found!" + exit 3 +fi + +series_title=$(grep -m 1 "SeriesName" $PWD/series.xml) # Get series name from TvDB (for user) +series_alias=$(grep -m 1 "AliasName" $PWD/series.xml) +series_id=${series_id%<*} # Remove XML tags +series_id=${series_id#*>} +series_title=${series_title%<*} +series_title=${series_title#*>} +series_alias=${series_alias%<*} +series_alias=${series_alias#*>} + +echo -e " TVDB:\tSeries found.\tID: $series_id" +echo -e "\t\t\t\tName: $series_title" +if [ -n "$series_alias" ]; then + echo -e "\t\t\t\tAlias: $series_alias" +fi + +# ------------ EPG vom jeweiligen Tag herunterladen, durchsuchen anhand der Ausstrahlungszeit ------------- ;; +# Download OTR EPG data and search for series and time +if [ ! -f "$PWD/epg-$fieldsDate.csv" ]; then # didnt cache this file + rm -f "$PWD/epg-*.csv" 2> /dev/null + epg_datei="https://www.onlinetvrecorder.com/epg/csv/epg_20${fieldsDate//./_}.csv" + wget "$epg_datei" -O "$PWD/epg-$fieldsDate.csv" -o /dev/null + error=$? + if [ $error -ne 0 ]; then + echo "Downloading $epg_datei failed (Exit code: $error)!" + exit 4 + fi +fi + +epg="$(grep "$series_title" "$PWD/epg-$fieldsDate.csv" | grep "$fieldsTime")" +if [ -z "$epg" ]; then + echo " EPG:\tSeries not found in EPG data" + exit 5 +fi + + +# Parse EPG data +OLDIFS=$IFS +IFS=";" +read epg_id epg_start epg_end epg_duration epg_sender epg_title epg_type epg_text epg_genre epg_fsk epg_language epg_weekday epg_additional epg_rpt epg_downloadlink epg_infolink epg_programlink <<< "$epg" +IFS=$OLDIFS + + +episode_title="${epg_text%%.*}" # Text begins with episode title +if [ -z "$episode_title" ]; then + echo " EPG:\tNo Episode title found" + exit 5 +fi +echo -e " EPG:\tEpisode title:\t$episode_title" + + +# Download Episode list of series +episode_db="https://www.thetvdb.com/api/$apikey/series/$series_id/all/$lang.xml" +wget $episode_db -O "$PWD/episodes.xml" -o /dev/null +error=$? +if [ $error -ne 0 ]; then + echo "Downloading $episode_db failed (Exit code: $error)!" + exit 6 +fi + +episode_info=$(grep "$episode_title" "$PWD/episodes.xml" -B 10) # Get XML data of episode +episode_number=$(echo -e "$episode_info" | grep -m 1 "episodenumber") # Get episode number +episode_season=$(echo -e "$episode_info" | grep -m 1 "season") # Get season number +episode_number=${episode_number%<*} # remove xml tags +episode_number=${episode_number#*>} +episode_season=${episode_season%<*} +episode_season=${episode_season#*>} + +# add leading zero +if [ $episode_number -le 9 ]; then + episode_number="0$episode_number" +fi +if [ $episode_season -le 9 ]; then + episode_season="0$episode_season" +fi + +echo -e " TvDB: Season:\t$episode_season" +echo -e " Episode:\t$episode_number" + +echo "S${episode_season}E${episode_number}" diff --git a/serien.xml b/serien.xml deleted file mode 100644 index 522e805..0000000 --- a/serien.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - -