Dateien hochladen nach „Build“

This commit is contained in:
Stephan 2018-10-24 09:05:50 +00:00
parent ba5fa972c3
commit 6e2e34aa64
4 changed files with 3520 additions and 0 deletions

91
Build/main.sh Normal file
View file

@ -0,0 +1,91 @@
#!/bin/bash
# main.sh
# Body:
# ---------------------------------------------------------------------
echo '
<div id="Content_1Col">
<div class="Content_1Col_full">
<br><br><p style="text-align:center"> <span style="color:#BD0010;font-weight:bold;font-size:1.1em; ">decodieren - schneiden - mp4 erstellen - umbenennen</span> </p>'
echo '
<span class="title">Beschreibung:</span>
<p style="text-align:left;"> <br>
SynOTR liefert einen kompletten Workflow für TV-Aufnahmen von <a href="http://www.onlinetvrecorder.com"
rel="external">onlineTVrecorder</a>
(OTR) auf einer Synology Diskstation (x86 / ARMv7 CPUs). Es wurde
gezielt auf Einfachheit hin entwickelt.</p>
<p style="text-align:left;"> <a href="http://www.onlinetvrecorder.com"
rel="external">onlineTVrecorder</a>
(OTR) ist der freie Videorecorder im Internet, der rund um die Uhr
ALLE Sendungen ALLER Sender aufzeichnet (naja, auf jeden Fall viele …
;-) ). Es werden über 100 TV-Sender aus Deutschland, USA, UK und
anderen Ländern aufgenommen. Du kannst diese Filme später gratis
herunterladen.<br>
<br>
<strong>Folgende Aufgaben werden durch synOTR automatisch
abgearbeitet:</strong></p>
<ul class="li_standard">
<li><span style="color:#0086E5;font-weight:bold; ">Verschlüsselte .otrkey-Dateien dekodieren</span></li>
<li><span style="color:#0086E5;font-weight:bold; ">automatische AC3-Tonspurintegration (BETA)</span></li>
<li><span style="color:#0086E5;font-weight:bold; ">Filme schneiden</span> (Quelle: cutlist.at)</li>
<li><span style="color:#0086E5;font-weight:bold; ">Filme nach eigenen Regeln umbenennen</span>
<div class="image-right"> </div>
<img class="imageStyle"
alt="LOGO_otr-serien.de"
src="images/otr-serien.de.svg"
style="float:right;padding:10px"
height="90"
width="90">
<div class="tab">Serien werden automatisch erkannt und der Sendungsname in einem
Videostation konformen Format umbenannt (Serientitel.S01.E01
Episodentitel … [individualisierbar]) ==&gt; <strong>VIELEN DANK</strong>
an Daniel Dieth von otr-serien.de für das zur Verfügungstellen seiner Website und seine Unterstützung.
Bitte unterstützt die Seite <a href="http://www.otr-serien.de" rel="external">www.otr-serien.de</a>.
Über die Seite lässt es sich auch sehr einfach nach bestimmten
Episoden suchen. Ihr habt eine ausgestrahlte Serienepisode, die dort
nicht automatisch erkannt wurde? Dann gebt doch bei der betroffenen
Episode eine Rückmeldung ab.<br>
<br>
<img class="imageStyle"
alt="LOGO_thetvdb.com"
src="images/thetvdb.svg"
style="float:right;padding:10px"
height="90"
width="90">
Viele weitere Serieninformationen stammen darüber hinaus von der Website www.thetvdb.com.
<br>
Bitte unterstützt diesen kostenlosen Service, indem ihr nach
Möglichkeit Informationen und Grafiken beitragt und ergänzt.<br>
<br>
Sollten keine Serieninformationen zu einer Sendung gefunden worden
sein, so wird die Standardumbenennung verwendet und die Infos in
einer Datenbank gesichert. Werden entsprechende Informationen auf
otr-serien.de ergänzt, so wird nachträglich die Standardumbenennung
in die Serienumbenennung vorgenommen (Suchzeit derzeit 7 Tage).
</div>
</li>
<li><span style="color:#0086E5;font-weight:bold; ">Konvertieren
der .avis in native .mp4s</span> (Mac OS tauglich)<br>
<div class="tab">Für den ersten Programmaufruf ist zu beachten, dass alle avi-Dateien
im Zielordner konvertiert werden, was eine sehr lange Zeit erfordern
kann. Das lässt sich vermeiden, wenn man in den Einstellungen auch
den Arbeitsordner definiert.</div></li>
</ul>
<br>
Lässt man sich fertige Aufnahmen per FTP-Push (z.B. Serien) auf das NAS
übertragen, hat man ohne Zutun fertig geschnittene Aufnahmen.<br>
<br>
Mein Ziel war es, jetzt eine kompakte Lösung anbieten zu können, die für
jedermann (vor allem auch Einsteiger) einfach nutzbar sein soll, ohne
dass sich jeder in die Materie einarbeiten muss. Es ist also nichts an
Skripten zu ändern, noch müssen zusätzliche Programme installiert
werden. Alle entsprechenden Programme sind in dem Paket enthalten.</div>
</div>
<br /></p><p style="text-align:center;"><br /><br /></p>'
echo '
</div>
</div><div class="clear"></div>'

279
Build/status.sh Normal file
View file

@ -0,0 +1,279 @@
#!/bin/bash
# status.sh
# APPDIR=$(cd $(dirname $0);pwd)
# CONFIG=app/etc/Konfiguration.txt
# source ${APPDIR}/${CONFIG}
if [ -z "$WORKDIR" ] ; then
WORKDIR="${DESTDIR}"
fi
if [ $OTRcutactiv = "off" ] ; then
DECODIR="$WORKDIR"
else
DECODIR="${WORKDIR%/}/_decodiert"
fi
# last Log: (ToDo: nicht nur letztes Log, sondern per ListBox beliebiges Logfile auswählen)
# ---------------------------------------------------------------------
func_main_LastLog () {
if [ -z $WORKDIR ] ; then
WORKDIR="${DESTDIR%/}/"
else
WORKDIR="${WORKDIR%/}/"
fi
DECODIR="${WORKDIR%/}/_decodiert"
if [ $OTRcutactiv = "off" ] ; then
DECODIR="$WORKDIR"
echo "ist off"
fi
lastLog=`ls -tr ${DECODIR%/}/_LOGsynOTR | grep ".log" | tail -1`
lastLogPath="${DECODIR%/}/_LOGsynOTR/$lastLog"
}
# Info der Datenbank auslesen:
# ---------------------------------------------------------------------
ColorLQ="#990099"
ColorSD="#3366CC"
ColorHQ="#DC3912"
ColorHD="#FF9900"
ColorAC3="#109618"
dbpath="/usr/syno/synoman/webman/3rdparty/synOTR/app/etc/synOTR.sqlite"
if [ -f "$dbpath" ] ; then
firstrun=$(sqlite3 "$dbpath" "SELECT timestamp FROM raw WHERE rowid=1")
rowcount=$(sqlite3 "$dbpath" "SELECT COUNT(*) FROM raw")
dbsize=$(ls -lh "$dbpath" | awk '{ print $5 }')
# Anzahl HD-Filme:
#sSQL="SELECT count(rowid) FROM raw WHERE file_original LIKE '%HD.avi' OR file_original LIKE '%HD.mp4' "
CountHD=0
# sSQL="SELECT count(rowid) FROM raw WHERE format='HD' "
sSQL="SELECT count(rowid) FROM raw WHERE format='HD' OR ((file_original LIKE '%HD.avi' OR file_original LIKE '%HD.mp4') AND format IS NULL) "
CountHD=`sqlite3 -separator $'\t' "$dbpath" "$sSQL"`
# Anzahl AC3-Filme:
CountAC3=0
sSQL="SELECT count(rowid) FROM raw WHERE file_original LIKE '%HD.ac3' "
CountAC3=`sqlite3 -separator $'\t' "$dbpath" "$sSQL"`
# Anzahl HQ-Filme:
CountHQ=0
sSQL="SELECT count(rowid) FROM raw WHERE format='HQ' OR ((file_original LIKE '%HQ.avi' OR file_original LIKE '%HQ.mp4') AND format IS NULL) "
CountHQ=`sqlite3 -separator $'\t' "$dbpath" "$sSQL"`
# Anzahl Standard-Filme:
CountSD=0
#sSQL="SELECT count(rowid) FROM raw WHERE format='SD' "
sSQL="SELECT count(rowid) FROM raw WHERE format='SD' OR (file_original LIKE '%mpg.avi' AND format IS NULL) "
CountSD=`sqlite3 -separator $'\t' "$dbpath" "$sSQL"`
# Anzahl LQ-Filme:
CountLQ=0
#sSQL="SELECT count(rowid) FROM raw WHERE format='LQ' "
sSQL="SELECT count(rowid) FROM raw WHERE format='LQ' OR (file_original LIKE '%mpg.mp4' AND format IS NULL) "
CountLQ=`sqlite3 -separator $'\t' "$dbpath" "$sSQL"`
# Anzahl Serien (Episoden):
CountEpisode=0
sSQL="SELECT count(rowid) FROM raw WHERE serie_episode <> '' " # OR (file_original LIKE '%mpg.mp4' AND format IS NULL) "
CountEpisode=`sqlite3 -separator $'\t' "$dbpath" "$sSQL"`
fi
# Dateistatus auslesen:
# ---------------------------------------------------------------------
# .otrkey-Files:
count_otrkey=0
for i in $(find "$OTRkeydir" -maxdepth 1 -name "*.otrkey" -type f)
do
count_otrkey=$(( count_otrkey + 1 ))
done
# wait of cutlist:
count_waitofcutlist=0
for i in $(find "$DECODIR" -maxdepth 1 -name "*.avi" -o -name "*.mp4" -type f)
do
count_waitofcutlist=$(( count_waitofcutlist + 1 ))
done
# manueller synOTR-Start:
# ---------------------------------------------------------------------
if [[ "$page" == "status-run-synotr" ]]; then
echo '
<div class="Content_1Col_full">'
/usr/syno/synoman/webman/3rdparty/synOTR/synOTR-start.sh
func_main_LastLog
# echo $refreshtime
echo '<meta http-equiv="refresh" content="2; URL=index.cgi?page=status"></div>'
fi
# synOTR beenden erzwingen:
# ---------------------------------------------------------------------
if [[ "$page" == "status-kill-synotr" ]]; then
killall synOTR.sh
echo '<meta http-equiv="refresh" content="0; URL=index.cgi?page=status">'
fi
if [[ "$page" == "status" ]]; then
# Chart-JavaScript:
echo "<script type='text/javascript'>
// https://developers.google.com/chart/interactive/docs/basic_customizing_chart
// Load the Visualization API and the corechart package.
google.charts.load('current', {'packages':['corechart']});
// Set a callback to run when the Google Visualization API is loaded.
google.charts.setOnLoadCallback(drawChart);
// Callback that creates and populates a data table, instantiates the pie chart, passes in the data and draws it.
function drawChart() {
// Create the data table.
var data = new google.visualization.DataTable();
data.addColumn('string', 'Filmtyp');
data.addColumn('number', 'Anzahl');
data.addRows([
['LQ-Filme', "$CountLQ" ],
['SD-Filme', "$CountSD" ],
['HQ-Filme', "$CountHQ" ],
['HD-Filme', "$CountHD" ],
['AC3-Filme', "$CountAC3" ]
]);
// Set chart options
var options = { 'title':'none',
'width':200,
'height':200,
'chartArea':{ left:20,
top:10,
width:'90%',
height:'85%'
},
'is3D':false,
'legend': 'none',
'pieSliceText': 'none',
'slices': { 0: {color: '"$ColorLQ"' },
1: {color: '"$ColorSD"' },
2: {color: '"$ColorHQ"' },
3: {color: '"$ColorHD"' },
4: {color: '"$ColorAC3"' }
}
};
// Instantiate and draw our chart, passing in some options.
var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>"
# Body:
# ---------------------------------------------------------------------
echo ' <div class="Content_1Col_full">
<div class="title">'
if [[ "$count_otrkey" == 0 ]] && [[ "$count_waitofcutlist" == 0 ]]; then
echo '<div class="image-right"> </div>
<img class="imageStyle"
src="images/status_green@geimist.svg"
height="120"
width="120"
style="float:right;padding: 10px">'
else
echo '<div class="image-right"> </div>
<img class="imageStyle"
src="images/sanduhr_blue@geimist.svg"
height="120"
width="120"
style="float:right;padding: 10px">'
fi
echo ' synOTR Statusseite</div>
<br><br><br><p class="center"><button name="page" class="blue_button" value="status-run-synotr">jetzt manuellen synOTR Durchlauf starten</button></p><br />'
# Abschnitt LOG-Protokoll:
echo '<fieldset>
<hr style="border-style: dashed; size: 1px;">
<br />
<details><p>
<summary>
<span class="detailsitem">LOG-Protokoll:</span>
</summary></p>
<p>
Hier werden die LOGs zu finden sein …
<br>(noch nicht implementiert)
</p>
</details>
</fieldset>'
# Abschnitt Status / Statistik:
echo '<fieldset>
<hr style="border-style: dashed; size: 1px;">
<br />
<details><p>
<summary>
<span class="detailsitem">Status:</span>
</summary></p>'
echo '<table style="width: 700px;" >
<tr>
<th style="width: 1;"></th><th style="width: 250px;"></th><th></th><th style="width: 250px;"></th>
</tr>
<tr>
<td class="td_color" colspan="2"><b>Offene Aufgaben:</b></td><td></td><td></td>
</tr>'
if [[ "$count_otrkey" == 0 ]]; then
echo '<tr><td class="td_color"></td><td><span style="color:#0086E5;font-weight:normal; ">Dateien zu dekodieren: </span></td>
<td><span style="color:green;font-weight: bold;">Alles erledigt</span></td></tr>'
else
echo '<tr><td class="td_color"></td><td><span style="color:#0086E5;font-weight:normal; ">Dateien zu dekodieren: </span></td>
<td><span style="color:#BD0010;font-weight: bold;">'$count_otrkey'</span></td></tr>'
fi
if [[ "$count_waitofcutlist" == 0 ]]; then
echo '<tr><td class="td_color"></td><td><span style="color:#0086E5;font-weight:normal; ">Filme, die auf Cutlist warten: </span></td>
<td><span style="color:green;font-weight: bold;">Alles erledigt</span></td></tr>'
else
echo '<tr><td class="td_color"></td><td><span style="color:#0086E5;font-weight:normal; ">Filme, die auf Cutlist warten: </span></td>
<td><span style="color:#BD0010;font-weight: bold;">'$count_waitofcutlist'</span></td></tr>'
fi
if [[ "$rowcount" != "0" ]]; then
echo '<tr><td class="td_color" colspan="2"><br><b>Auswertung der Datenbank:</b></td><td></td></tr>'
echo '<tr><td class="td_color" bgcolor='$ColorLQ'></td><td><span style="color:#0086E5;font-weight:normal; ">Anzahl der LQ-Filme:</td><td><span style="color:green;font-weight: bold;">'$CountLQ'</span></td><td rowspan="8">
<!--Div that will hold the pie chart-->
<div id="chart_div"></div><noscript>Sie haben JavaScript deaktiviert. Daher ist hier kein Diagramm zu sehen.</noscript>
</td></tr>'
echo '<tr><td class="td_color" bgcolor='$ColorSD'></td><td><span style="color:#0086E5;font-weight:normal; ">Anzahl der SD-Filme:</td><td><span style="color:green;font-weight: bold;">'$CountSD'</span></td></tr>'
echo '<tr><td class="td_color" bgcolor='$ColorHQ'></td><td><span style="color:#0086E5;font-weight:normal; ">Anzahl der HQ-Filme:</td><td><span style="color:green;font-weight: bold;">'$CountHQ'</span></td></tr>'
echo '<tr><td class="td_color" bgcolor='$ColorHD'></td><td><span style="color:#0086E5;font-weight:normal; ">Anzahl der HD-Filme:</td><td><span style="color:green;font-weight: bold;">'$CountHD'</span></td></tr>'
echo '<tr><td class="td_color" bgcolor='$ColorAC3'></td><td><span style="color:#0086E5;font-weight:normal; ">Anzahl der AC3-Filme:</td><td><span style="color:green;font-weight: bold;">'$CountAC3'</span></td></tr>'
# echo '<tr><td></td></tr>'
echo '<tr><td class="td_color" bgcolor=#fff></td><td><br><span style="color:#0086E5;font-weight:normal; ">Erkannte Serienepisoden:</td><td><br><span style="color:green;font-weight: bold;">'$CountEpisode'</span></td></tr>'
echo '<tr><td class="td_color" bgcolor=#fff></td><td><span style="color:#0086E5;font-weight:normal; ">Gesamt seit '$firstrun':</td><td><span style="color:green;font-weight: bold;">'$rowcount'</span></td></tr>'
echo '<tr><td class="td_color" bgcolor=#fff></td><td><span style="color:#0086E5;font-weight:normal; ">Datenbankgröße:</td><td><span style="color:green;font-weight: bold;">'$dbsize'B</span></td></tr>'
fi
echo '
</table>
<!-- <p>Hier wird in Zukunft noch eine Statusübersicht / Statistik zu finden sein …<br>
- https://developers.google.com/chart/interactive/docs/quick_start<br>
- http://jsfiddle.net/api/post/jquery/1.6/ (http://elycharts.com/examples) </p>
<br><div class="tab"><p>'$dbinfo'</p></div>-->
</details>
<br>
<hr style="border-style: dashed; size: 1px;">
</fieldset>'
echo '
</div>
</div>
<br /></p><p style="text-align:center;"><br /><br /></p>'
echo '</div><div class="clear"></div>'
fi

65
Build/synOTR-start.sh Normal file
View file

@ -0,0 +1,65 @@
#!/bin/sh
# wechselt in synOTR-Verzeichnis und startet synOTR mit bzw. ohne LOG (je nach Konfiguration)
# Arbeitsverzeichnis auslesen und hineinwechseln:
APPDIR=$(cd $(dirname $0);pwd)
cd ${APPDIR}
# Konfigurationsdatei einbinden:
CONFIG=app/etc/Konfiguration.txt
. ./$CONFIG
# check if script is already active
# ps x|grep synOTR.sh|grep -v grep >/dev/null
# if [ $? != "1" ] ; then
# echo "synOTR läuft bereits!"
# exit
# fi
synOTR_pid=`pidof synOTR.sh`
if [ ! -z "$synOTR_pid" ] ; then
echo '<p class="center"><span style="color: #BD0010;"><b>synOTR läuft bereits!</b><br>(Prozess-ID: '$synOTR_pid')</span></p>'
echo '<br /><p class="center"><button name="page" value="status-kill-synotr" style="color: #BD0010;">(Beenden erzwingen?)</button></p><br />'
exit
else
echo '<p class="title">synOTR wurde gestartet ...</p><br><br><br><br>
<center><table id="system_msg" style="width: 40%;table-align: center;">
<tr>
<th style="width: 20%;"><img class="imageStyle" alt="status_loading" src="images/status_loading.gif" style="float:left;"></th>
<th style="width: 80%;"><p class="center"><span style="color: #424242;font-weight:normal;">Bitte warten, bis die Dateien<br>fertig abgearbeitet wurden.</span></p></th>
</tr>
</table></center>'
fi
# Variablenkorrektur für ältere Konfiguration.txt und Slash anpassen:
if [ -z $DESTDIR ] ; then
DESTDIR="${destdir%/}/"
fi
if [ -z $WORKDIR ] ; then
# WORKDIR="${destdir%/}/"
WORKDIR="${DESTDIR%/}/"
# echo "Variable WORKDIR nicht gesetzt. Es wird im Ausgabeordner gearbeitet!"
else
WORKDIR="${WORKDIR%/}/"
fi
# LOGlevel=0 => Logging inaktiv / 1 => normal / 2 => erweitert
if [ $LOGlevel = "0" ] ; then
./synOTR.sh
else
DECODIR="${WORKDIR%/}/_decodiert"
if [ ! -d "$DESTDIR" ] || [ "$DESTDIR" = "/" ]; then
echo '
<p class="center"><span style="color: #BD0010;"><b>! ! ! Zielverzeichnis in der Konfiguration prüfen ! ! !</b><br>Programmlauf wird beendet.<br></span></p>'
exit
fi
if [ $OTRcutactiv = "off" ] ; then
DECODIR="$WORKDIR"
fi
mkdir -p "${DECODIR%/}/_LOGsynOTR"
./synOTR.sh >> ${DECODIR%/}/_LOGsynOTR/synOTR_`date +%Y`-`date +%m`-`date +%d`_`date +%H`-`date +%M`.log 2>&1
fi

3085
Build/synOTR.sh Normal file

File diff suppressed because it is too large Load diff