tvheadend43: initial package
This commit is contained in:
packages/addons/service/tvheadend43
addon.xmlchangelog.txt
icon
package.mkpatches
source
bin
default.pydefaults
download.pyresources
settings-default.xmlsleep.d
system.d
34
packages/addons/service/tvheadend43/addon.xml
Normal file
34
packages/addons/service/tvheadend43/addon.xml
Normal file
@ -0,0 +1,34 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<addon id="@PKG_ADDON_ID@"
|
||||
name="@ADDON_NAME@"
|
||||
version="@ADDON_VERSION@"
|
||||
provider-name="@PROVIDER_NAME@">
|
||||
<requires>
|
||||
<import addon="xbmc.python" version="3.0.0"/>
|
||||
@REQUIRES@
|
||||
</requires>
|
||||
<extension point="xbmc.service" library="default.py">
|
||||
<provides>@PKG_ADDON_PROVIDES@</provides>
|
||||
</extension>
|
||||
<extension point="xbmc.python.script" library="download.py">
|
||||
<provides>@PKG_ADDON_PROVIDES@</provides>
|
||||
</extension>
|
||||
<extension point="xbmc.addon.metadata">
|
||||
<summary>@PKG_SHORTDESC@</summary>
|
||||
<description>
|
||||
@PKG_LONGDESC@
|
||||
</description>
|
||||
<disclaimer>
|
||||
@PKG_DISCLAIMER@
|
||||
</disclaimer>
|
||||
<platform>all</platform>
|
||||
<news>
|
||||
@PKG_ADDON_NEWS@
|
||||
</news>
|
||||
<assets>
|
||||
<icon>resources/icon.png</icon>
|
||||
<fanart>resources/fanart.png</fanart>
|
||||
@PKG_ADDON_SCREENSHOT@
|
||||
</assets>
|
||||
</extension>
|
||||
</addon>
|
2
packages/addons/service/tvheadend43/changelog.txt
Normal file
2
packages/addons/service/tvheadend43/changelog.txt
Normal file
@ -0,0 +1,2 @@
|
||||
100
|
||||
- initial LibreELEC version
|
BIN
packages/addons/service/tvheadend43/icon/icon.png
Normal file
BIN
packages/addons/service/tvheadend43/icon/icon.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 16 KiB |
130
packages/addons/service/tvheadend43/package.mk
Normal file
130
packages/addons/service/tvheadend43/package.mk
Normal file
@ -0,0 +1,130 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="tvheadend43"
|
||||
PKG_VERSION="fe0e5f1f9c8fa175183cede9b3182fb25de2d367"
|
||||
PKG_SHA256="64f006c76f6bb6f17bc5420ff42b7d9ca2530ae9fdd1a835afa91c8acecad3b7"
|
||||
PKG_VERSION_NUMBER="4.3-1940"
|
||||
PKG_REV="100"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.tvheadend.org"
|
||||
PKG_URL="https://github.com/tvheadend/tvheadend/archive/${PKG_VERSION}.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain avahi comskip curl dvb-apps ffmpegx libdvbcsa libhdhomerun \
|
||||
libiconv openssl pcre2 pngquant:host Python3:host tvh-dtv-scan-tables"
|
||||
PKG_DEPENDS_CONFIG="ffmpegx"
|
||||
PKG_SECTION="service"
|
||||
PKG_SHORTDESC="Tvheadend: a TV streaming server for Linux"
|
||||
PKG_LONGDESC="Tvheadend (${PKG_VERSION_NUMBER}): is a TV streaming server for Linux supporting DVB-S/S2, DVB-C, DVB-T/T2, IPTV, SAT>IP, ATSC and ISDB-T"
|
||||
PKG_BUILD_FLAGS="-sysroot"
|
||||
|
||||
PKG_IS_ADDON="yes"
|
||||
PKG_ADDON_NAME="Tvheadend Server 4.3 (Alpha)"
|
||||
PKG_ADDON_TYPE="xbmc.service"
|
||||
|
||||
# basic transcoding options
|
||||
PKG_TVH_TRANSCODING="\
|
||||
--disable-ffmpeg_static \
|
||||
--disable-libfdkaac_static \
|
||||
--disable-libopus_static \
|
||||
--disable-libtheora \
|
||||
--disable-libtheora_static \
|
||||
--disable-libvorbis_static \
|
||||
--disable-libvpx_static \
|
||||
--disable-libx264_static \
|
||||
--disable-libx265_static \
|
||||
--enable-libav \
|
||||
--enable-libfdkaac \
|
||||
--enable-libopus \
|
||||
--enable-libvorbis \
|
||||
--enable-libvpx \
|
||||
--enable-libx264 \
|
||||
--enable-libx265"
|
||||
|
||||
# hw specific transcoding options
|
||||
if [ "$TARGET_ARCH" = x86_64 ]; then
|
||||
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libva"
|
||||
PKG_TVH_TRANSCODING="$PKG_TVH_TRANSCODING \
|
||||
--enable-vaapi"
|
||||
fi
|
||||
|
||||
# specific transcoding options
|
||||
if [[ "${TARGET_ARCH}" != "x86_64" ]]; then
|
||||
PKG_TVH_TRANSCODING="${PKG_TVH_TRANSCODING} \
|
||||
--disable-libvpx \
|
||||
--disable-libx265"
|
||||
fi
|
||||
|
||||
post_unpack() {
|
||||
sed -e 's/VER="0.0.0~unknown"/VER="'${PKG_VERSION_NUMBER}' ~ LibreELEC Tvh-addon v'${ADDON_VERSION}'.'${PKG_REV}'"/g' -i ${PKG_BUILD}/support/version
|
||||
sed -e 's|'/usr/bin/pngquant'|'${TOOLCHAIN}/bin/pngquant'|g' -i ${PKG_BUILD}/support/mkbundle
|
||||
}
|
||||
|
||||
pre_configure_target() {
|
||||
PKG_CONFIGURE_OPTS_TARGET="--prefix=/usr \
|
||||
--arch=${TARGET_ARCH} \
|
||||
--cpu=${TARGET_CPU} \
|
||||
--cc=${CC} \
|
||||
${PKG_TVH_TRANSCODING} \
|
||||
--enable-avahi \
|
||||
--enable-bundle \
|
||||
--disable-dbus_1 \
|
||||
--enable-dvbcsa \
|
||||
--disable-dvben50221 \
|
||||
--disable-dvbscan \
|
||||
--enable-hdhomerun_client \
|
||||
--disable-hdhomerun_static \
|
||||
--enable-epoll \
|
||||
--enable-inotify \
|
||||
--enable-pngquant \
|
||||
--disable-libmfx_static \
|
||||
--disable-nvenc \
|
||||
--disable-uriparser \
|
||||
--enable-tvhcsa \
|
||||
--enable-trace \
|
||||
--nowerror \
|
||||
--disable-bintray_cache \
|
||||
--python=${TOOLCHAIN}/bin/python"
|
||||
|
||||
# fails to build in subdirs
|
||||
cd ${PKG_BUILD}
|
||||
rm -rf .${TARGET_NAME}
|
||||
|
||||
# pass ffmpegx to build
|
||||
CFLAGS+=" -I$(get_install_dir ffmpegx)/usr/local/include"
|
||||
LDFLAGS+=" -L$(get_install_dir ffmpegx)/usr/local/lib"
|
||||
|
||||
# pass libhdhomerun to build
|
||||
CFLAGS+=" -I${SYSROOT_PREFIX}/usr/include/hdhomerun"
|
||||
|
||||
export CROSS_COMPILE="${TARGET_PREFIX}"
|
||||
export CFLAGS+=" -I${SYSROOT_PREFIX}/usr/include/iconv -L${SYSROOT_PREFIX}/usr/lib/iconv"
|
||||
}
|
||||
|
||||
post_make_target() {
|
||||
${CC} -O -fbuiltin -fomit-frame-pointer -fPIC -shared -o capmt_ca.so src/extra/capmt_ca.c -ldl
|
||||
}
|
||||
|
||||
post_makeinstall_target() {
|
||||
mkdir -p ${INSTALL}/usr/lib
|
||||
cp -p capmt_ca.so ${INSTALL}/usr/lib
|
||||
}
|
||||
|
||||
addon() {
|
||||
mkdir -p ${ADDON_BUILD}/${PKG_ADDON_ID}/bin
|
||||
|
||||
cp ${PKG_DIR}/addon.xml ${ADDON_BUILD}/${PKG_ADDON_ID}
|
||||
|
||||
# set only version (revision will be added by buildsystem)
|
||||
sed -e "s|@ADDON_VERSION@|${ADDON_VERSION}|g" \
|
||||
-i ${ADDON_BUILD}/${PKG_ADDON_ID}/addon.xml
|
||||
|
||||
cp -P ${PKG_INSTALL}/usr/bin/tvheadend ${ADDON_BUILD}/${PKG_ADDON_ID}/bin
|
||||
cp -P ${PKG_INSTALL}/usr/lib/capmt_ca.so ${ADDON_BUILD}/${PKG_ADDON_ID}/bin
|
||||
cp -P $(get_install_dir comskip)/usr/bin/comskip ${ADDON_BUILD}/${PKG_ADDON_ID}/bin
|
||||
|
||||
# dvb-scan files
|
||||
mkdir -p ${ADDON_BUILD}/${PKG_ADDON_ID}/dvb-scan
|
||||
cp -r $(get_install_dir tvh-dtv-scan-tables)/usr/share/dvbv5/* \
|
||||
${ADDON_BUILD}/${PKG_ADDON_ID}/dvb-scan
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
--- a/src/input/mpegts/scanfile.c
|
||||
+++ b/src/input/mpegts/scanfile.c
|
||||
@@ -921,7 +921,7 @@ scanfile_init ( const char *muxconf_path
|
||||
#elif defined(PLATFORM_FREEBSD)
|
||||
path = "/usr/local/share/dtv-scan-tables";
|
||||
#else
|
||||
- path = "/usr/share/dvb";
|
||||
+ path = "/storage/.kodi/addons/service.tvheadend43/dvb-scan";
|
||||
#endif
|
||||
|
||||
if (!initialized) {
|
@ -0,0 +1,35 @@
|
||||
fix libhdhomerun includes
|
||||
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -419,7 +419,7 @@ if enabled hdhomerun_static; then
|
||||
else
|
||||
|
||||
if enabled_or_auto hdhomerun_client; then
|
||||
- if check_cc_header 'libhdhomerun/hdhomerun' libhdhomerun; then
|
||||
+ if check_cc_header 'hdhomerun' libhdhomerun; then
|
||||
enable hdhomerun_client
|
||||
LDFLAGS="$LDFLAGS -lhdhomerun"
|
||||
fi
|
||||
--- a/src/input/mpegts/tvhdhomerun/tvhdhomerun.c
|
||||
+++ b/src/input/mpegts/tvhdhomerun/tvhdhomerun.c
|
||||
@@ -17,7 +17,7 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
-#include "libhdhomerun/hdhomerun.h"
|
||||
+#include "hdhomerun.h"
|
||||
|
||||
#include "tvheadend.h"
|
||||
#include "input.h"
|
||||
--- a/src/input/mpegts/tvhdhomerun/tvhdhomerun_frontend.c
|
||||
+++ b/src/input/mpegts/tvhdhomerun/tvhdhomerun_frontend.c
|
||||
@@ -17,7 +17,7 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
-#include "libhdhomerun/hdhomerun.h"
|
||||
+#include "hdhomerun.h"
|
||||
|
||||
#include <fcntl.h>
|
||||
#include "tvheadend.h"
|
76
packages/addons/service/tvheadend43/source/bin/tv_grab_file
Executable file
76
packages/addons/service/tvheadend43/source/bin/tv_grab_file
Executable file
@ -0,0 +1,76 @@
|
||||
#!/bin/sh
|
||||
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
if [ $# -lt 1 ]
|
||||
then
|
||||
. /etc/profile
|
||||
|
||||
ADDON_HOME="$HOME/.kodi/userdata/addon_data/service.tvheadend43"
|
||||
ADDON_SETTINGS="$ADDON_HOME/settings.xml"
|
||||
XML_SETTINGS_VER="$(xmlstarlet sel -t -m settings -v @version $ADDON_SETTINGS)"
|
||||
if [ "$XML_SETTINGS_VER" = "2" ]; then
|
||||
XMLTV_TYPE="$(xmlstarlet sel -t -v '/settings/setting[@id="XMLTV_TYPE"]' $ADDON_SETTINGS)"
|
||||
XMLTV_LOCATION_FILE="$(xmlstarlet sel -t -v '/settings/setting[@id="XMLTV_LOCATION_FILE"]' $ADDON_SETTINGS)"
|
||||
XMLTV_LOCATION_WEB="$(xmlstarlet sel -t -v '/settings/setting[@id="XMLTV_LOCATION_WEB"]' $ADDON_SETTINGS | xmlstarlet unesc)"
|
||||
XMLTV_LOCATION_SCRIPT="$(xmlstarlet sel -t -v '/settings/setting[@id="XMLTV_LOCATION_SCRIPT"]' $ADDON_SETTINGS)"
|
||||
else
|
||||
XMLTV_TYPE="$(xmlstarlet sel -t -m '/settings/setting[@id="XMLTV_TYPE"]' -v @value $ADDON_SETTINGS)"
|
||||
XMLTV_LOCATION_FILE="$(xmlstarlet sel -t -m '/settings/setting[@id="XMLTV_LOCATION_FILE"]' -v @value $ADDON_SETTINGS)"
|
||||
XMLTV_LOCATION_WEB="$(xmlstarlet sel -t -m '/settings/setting[@id="XMLTV_LOCATION_WEB"]' -v @value $ADDON_SETTINGS | xmlstarlet unesc)"
|
||||
XMLTV_LOCATION_SCRIPT="$(xmlstarlet sel -t -m '/settings/setting[@id="XMLTV_LOCATION_SCRIPT"]' -v @value $ADDON_SETTINGS)"
|
||||
fi
|
||||
|
||||
if [ "$XMLTV_TYPE" = "FILE" ]; then
|
||||
case "$XMLTV_LOCATION_FILE" in
|
||||
*.gz | *.bz2 | *.xz)
|
||||
zcat "$XMLTV_LOCATION_FILE"
|
||||
;;
|
||||
*)
|
||||
cat "$XMLTV_LOCATION_FILE"
|
||||
;;
|
||||
esac
|
||||
exit 0
|
||||
elif [ "$XMLTV_TYPE" = "SCRIPT" ]; then
|
||||
if [ -e "$XMLTV_LOCATION_SCRIPT" ] ; then
|
||||
exec "$XMLTV_LOCATION_SCRIPT"
|
||||
fi
|
||||
elif [ "$XMLTV_TYPE" = "WEB" ]; then
|
||||
case "$XMLTV_LOCATION_WEB" in
|
||||
*.gz | *.bz2 | *.xz)
|
||||
wget -qO - "$XMLTV_LOCATION_WEB" | zcat
|
||||
;;
|
||||
*)
|
||||
wget -qO - "$XMLTV_LOCATION_WEB"
|
||||
;;
|
||||
esac
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
dflag=
|
||||
vflag=
|
||||
cflag=
|
||||
|
||||
for a in "$@"
|
||||
do
|
||||
[ "$a" = "-d" -o "$a" = "--description" ] && dflag=1
|
||||
[ "$a" = "-v" -o "$a" = "--version" ] && vflag=1
|
||||
[ "$a" = "-c" -o "$a" = "--capabilities" ] && cflag=1
|
||||
done
|
||||
|
||||
if [ -n "$dflag" ]
|
||||
then
|
||||
echo "tv_grab_file is a simple grabber that can be configured through the addon settings from Kodi"
|
||||
fi
|
||||
|
||||
if [ -n "$vflag" ]
|
||||
then
|
||||
echo "1.0"
|
||||
fi
|
||||
|
||||
if [ -n "$cflag" ]
|
||||
then
|
||||
echo "baseline"
|
||||
fi
|
177
packages/addons/service/tvheadend43/source/bin/tvheadend43.start
Executable file
177
packages/addons/service/tvheadend43/source/bin/tvheadend43.start
Executable file
@ -0,0 +1,177 @@
|
||||
#!/bin/sh
|
||||
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
. /etc/profile
|
||||
|
||||
oe_setup_addon service.tvheadend43
|
||||
|
||||
ADDON_SETTINGS="$ADDON_HOME/settings.xml"
|
||||
|
||||
COMSKIP_DIR="$ADDON_HOME/comskip"
|
||||
COMSKIP_SETTINGS_FILE="$COMSKIP_DIR/comskip.ini"
|
||||
|
||||
DVR_SETTINGS_DIR="$ADDON_HOME/dvr/config"
|
||||
DVR_SETTINGS_FILE="$DVR_SETTINGS_DIR/8d0f5b7ae354d956d7fe5db25f5d0d24"
|
||||
|
||||
EPGGRAB_SETTINGS_DIR="$ADDON_HOME/epggrab"
|
||||
EPGGRAB_SETTINGS_FILE="$EPGGRAB_SETTINGS_DIR/config"
|
||||
|
||||
TIMESHIFT_SETTINGS_DIR="$ADDON_HOME/timeshift"
|
||||
TIMESHIFT_SETTINGS_FILE="$TIMESHIFT_SETTINGS_DIR/config"
|
||||
|
||||
TVH_SETTINGS_DIR="$ADDON_HOME"
|
||||
TVH_SETTINGS_FILE="$TVH_SETTINGS_DIR/config"
|
||||
|
||||
XMLTV_SETTINGS_DIR="$ADDON_HOME/xmltv"
|
||||
XMLTV_SETTINGS_FILE="$XMLTV_SETTINGS_DIR/config"
|
||||
|
||||
TIMESHIFT_DIR="$ADDON_HOME/cache/timeshift"
|
||||
XMLTV_FILE="$ADDON_DIR/bin/tv_grab_file"
|
||||
|
||||
chmod a+x $ADDON_DIR/bin/*
|
||||
|
||||
# workaround to support old 4.1.x version upgrade for Tvh after 4.1.2369
|
||||
if [ -f "$ADDON_HOME/dvr/config/dvr-config" ]; then
|
||||
rm $ADDON_HOME/dvr/config/dvr-config
|
||||
fi
|
||||
|
||||
# workaround to create default Tvh directories without entering samba share
|
||||
if [ ! -d "/storage/recordings" ]; then
|
||||
mkdir -p /storage/recordings /storage/picons/tvh /storage/picons/vdr
|
||||
fi
|
||||
|
||||
if [ -f "$ADDON_HOME/channel/config/config.tmp" ]; then
|
||||
rm $ADDON_HOME/channel/config/config.tmp
|
||||
fi
|
||||
|
||||
if [ -f "$ADDON_HOME/channel/config/tag.tmp" ]; then
|
||||
rm $ADDON_HOME/channel/config/tag.tmp
|
||||
fi
|
||||
|
||||
# copy config files to userdata
|
||||
if [ ! -f "$COMSKIP_SETTINGS_FILE" ]; then
|
||||
mkdir -p $COMSKIP_DIR
|
||||
cp $ADDON_DIR/defaults/comskip/comskip.ini $COMSKIP_SETTINGS_FILE
|
||||
fi
|
||||
|
||||
if [ ! -f "$DVR_SETTINGS_FILE" ]; then
|
||||
mkdir -p $DVR_SETTINGS_DIR
|
||||
cp $ADDON_DIR/defaults/dvr/config/8d0f5b7ae354d956d7fe5db25f5d0d24 $DVR_SETTINGS_FILE
|
||||
fi
|
||||
|
||||
if [ ! -f "$EPGGRAB_SETTINGS_FILE" ]; then
|
||||
mkdir -p $EPGGRAB_SETTINGS_DIR
|
||||
cp $ADDON_DIR/defaults/epggrab/config $EPGGRAB_SETTINGS_FILE
|
||||
fi
|
||||
|
||||
if [ ! -f "$TIMESHIFT_SETTINGS_FILE" ]; then
|
||||
mkdir -p $TIMESHIFT_DIR
|
||||
mkdir -p $TIMESHIFT_SETTINGS_DIR
|
||||
cp $ADDON_DIR/defaults/timeshift/config $TIMESHIFT_SETTINGS_FILE
|
||||
fi
|
||||
|
||||
if [ ! -f "$TVH_SETTINGS_FILE" ]; then
|
||||
mkdir -p $TVH_SETTINGS_DIR
|
||||
cp $ADDON_DIR/defaults/config $TVH_SETTINGS_FILE
|
||||
fi
|
||||
|
||||
if [ ! -f "$XMLTV_SETTINGS_FILE" ]; then
|
||||
mkdir -p $XMLTV_SETTINGS_DIR
|
||||
cp $ADDON_DIR/defaults/xmltv/config $XMLTV_SETTINGS_FILE
|
||||
fi
|
||||
|
||||
# delayed Tvh startup
|
||||
if [ "$WORKAROUND_SLEEP" == "true" ]; then
|
||||
sleep $WORKAROUND_SLEEP_TIME
|
||||
fi
|
||||
|
||||
# support FritzBox Sat>IP Server detection workaround for AVM-Repeater and AVM-6490
|
||||
if [ "$AVM_SATIP_SERVER" == "true" ]; then
|
||||
if [ "$AVM_DEVICE" == "AVM_Repeater" ]; then
|
||||
AVM_SATIP="--satip_xml http://${AVM_ROUTER_IP}:49000/satipdesc.xml"
|
||||
fi
|
||||
if [ "$AVM_DEVICE" == "AVM_6490" ]; then
|
||||
AVM_SATIP="--satip_xml http://${AVM_ROUTER_FAKE_IP}:49000/satipdesc.xml"
|
||||
AVM_NUM="4"
|
||||
fi
|
||||
|
||||
# add virtual ip as workaround for AVM limitation of one stream per ip
|
||||
# AVM-Repeater (2 tuners)
|
||||
ip address add ${AVM_IP1}/24 dev $AVM_ETH
|
||||
ip address add ${AVM_IP2}/24 dev $AVM_ETH
|
||||
|
||||
# AVM-6490 (4 tuners)
|
||||
if [ "$AVM_NUM" = "4" ]; then
|
||||
ip address add ${AVM_IP3}/24 dev $AVM_ETH
|
||||
ip address add ${AVM_IP4}/24 dev $AVM_ETH
|
||||
fi
|
||||
fi
|
||||
|
||||
# custom startup parameters
|
||||
if [ "$CUSTOM_START" != "true" ]; then
|
||||
CUSTOM_ARGS=""
|
||||
fi
|
||||
|
||||
# debug value generation
|
||||
if [ "$DEBUG_LOG_TRACE_1" != "NONE" ]; then
|
||||
DEBUG_LOG_ARG="$DEBUG_LOG_TRACE_1"
|
||||
fi
|
||||
|
||||
if [ "$DEBUG_LOG_TRACE_2" != "NONE" ]; then
|
||||
DEBUG_LOG_ARG="$DEBUG_LOG_ARG,$DEBUG_LOG_TRACE_2"
|
||||
fi
|
||||
|
||||
if [ "$DEBUG_LOG_TRACE_3" != "NONE" ]; then
|
||||
DEBUG_LOG_ARG="$DEBUG_LOG_ARG,$DEBUG_LOG_TRACE_3"
|
||||
fi
|
||||
|
||||
if [ "$DEBUG_LOG_TRACE_4" != "NONE" ]; then
|
||||
DEBUG_LOG_ARG="$DEBUG_LOG_ARG,$DEBUG_LOG_TRACE_4"
|
||||
fi
|
||||
|
||||
if [ "$DEBUG_LOG_TRACE_5" != "NONE" ]; then
|
||||
DEBUG_LOG_ARG="$DEBUG_LOG_ARG,$DEBUG_LOG_TRACE_5"
|
||||
fi
|
||||
|
||||
# if debuglog is activated and nothing selected to trace
|
||||
if [ -z "$DEBUG_LOG_ARG" ];then
|
||||
DEBUG_LOG_ARG="all"
|
||||
fi
|
||||
|
||||
# rename debuglog if already exist to prevent overwriting after crash
|
||||
if [ -f "${DEBUG_LOG_PATH}" ]; then
|
||||
cp ${DEBUG_LOG_PATH} ${DEBUG_LOG_PATH}_$(date '+%Y-%m-%d_%H.%M.%S').txt
|
||||
fi
|
||||
|
||||
# debug commandline
|
||||
if [ "$DEBUG_LOG" = "true" ]; then
|
||||
TVHEADEND_ARG="-B -C -u root -g video -c $ADDON_HOME $AVM_SATIP $CUSTOM_ARGS -l ${DEBUG_LOG_PATH} --trace $DEBUG_LOG_ARG"
|
||||
else
|
||||
TVHEADEND_ARG="-B -C -u root -g video -c $ADDON_HOME $AVM_SATIP $CUSTOM_ARGS"
|
||||
fi
|
||||
|
||||
# start userspace DVB driver/addon
|
||||
for driver_dvb in $(find /storage/.kodi/addons/driver.dvb.*/bin/userspace-driver.sh -type f 2>/dev/null); do
|
||||
driver_dvb_name=$(echo $driver_dvb | awk 'BEGIN {FS="/"} {printf("%s", $5)}')
|
||||
logger -t Tvheadend "### Loading userspace DVB driver: $driver_dvb_name ###"
|
||||
# use ". " because of variable export
|
||||
. $driver_dvb
|
||||
done
|
||||
|
||||
if [ "$WAIT_FOR_FEINIT" == "true" ] ; then
|
||||
while [ true ] ; do
|
||||
if [ -e /dev/dvb/adapter$((NUM_ADAPTERS-1))/frontend0 ] ; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
fi
|
||||
|
||||
if [ "$PRELOAD_CAPMT_CA" == "true" ] ; then
|
||||
logger -t Tvheadend "### Preloading capmt_ca.so library ###"
|
||||
LD_PRELOAD="$ADDON_DIR/bin/capmt_ca.so $LD_PRELOAD" exec $ADDON_DIR/bin/tvheadend $TVHEADEND_ARG &>$ADDON_LOG_FILE
|
||||
else
|
||||
exec $ADDON_DIR/bin/tvheadend $TVHEADEND_ARG &>$ADDON_LOG_FILE
|
||||
fi
|
20
packages/addons/service/tvheadend43/source/default.py
Normal file
20
packages/addons/service/tvheadend43/source/default.py
Normal file
@ -0,0 +1,20 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
import subprocess
|
||||
import xbmc
|
||||
import xbmcaddon
|
||||
|
||||
|
||||
class Monitor(xbmc.Monitor):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
xbmc.Monitor.__init__(self)
|
||||
self.id = xbmcaddon.Addon().getAddonInfo('id')
|
||||
|
||||
def onSettingsChanged(self):
|
||||
subprocess.call(['systemctl', 'restart', self.id])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
Monitor().waitForAbort()
|
@ -0,0 +1,83 @@
|
||||
; See comskip.txt in the distribution zip file for many settable parameters, read manual.html, tuning.html and debugwindow.html for how to tune and debug comskip
|
||||
edl_mode=3 ; the mode specified in the generated edl file, 0=cut, 3=commercial break
|
||||
mkv_time_offset=30.0 ; offset in seconds, to work around what appears to be an Kodi or ffmpeg bug
|
||||
always_keep_first_seconds=2 ; Kodi has a bug that causes a segfault if we don't keep the start of the stream, I'll fix that when I get a chance
|
||||
|
||||
detect_method=43 ; 1=black frame, 2=logo, 4=scene change, 8=fuzzy logic, 16=closed captions, 32=aspect ration, 64=silence, 128=cutscenes, 255=all
|
||||
validate_silence=1 ; Default, set to 0 to force using this clues if selected above.
|
||||
validate_uniform=1 ; Default, set to 0 to force using this clues (like pure white frames) if blackframe is selected above.
|
||||
validate_scenechange=1 ; Default, set to 0 to force using this clues if selected above.
|
||||
verbose=10 ; show a lot of extra info, level 5 is also OK, set to 0 to disable
|
||||
max_brightness=60 ; frame not black if any pixels checked are greater than this (scale 0 to 255)
|
||||
test_brightness=40 ; frame not pure black if any pixels checked are greater than this, will check average brightness (scale 0 to 255)
|
||||
max_avg_brightness=25 ; maximum average brightness for a dim frame to be considered black (scale 0 to 255) 0 means autosetting
|
||||
max_commercialbreak=600 ; maximum length in seconds to consider a segment a commercial break
|
||||
min_commercialbreak=25 ; minimum length in seconds to consider a segment a commercial break
|
||||
max_commercial_size=125 ; maximum time in seconds for a single commercial or multiple commercials if no breaks in between
|
||||
min_commercial_size=4 ; mimimum time in seconds for a single commercial
|
||||
min_show_segment_length=250 ; any segment longer than this will be scored towards show.
|
||||
non_uniformity=500 ; Set to 0 to disable cutpoints based on uniform frames
|
||||
max_volume=500 ; any frame with sound volume larger than this will not be regarded as black frame
|
||||
min_silence=12 ; Any deep silence longer than this amount of frames is a possible cutpoint
|
||||
ticker_tape=0 ; Amount of pixels from bottom to ignore in all processing
|
||||
logo_at_bottom=0 ; Set to 1 to search only for logo at the lower half of the video, do not combine with subtitle setting
|
||||
punish=0 ; Compare to average for sum of 1=brightness, 2=uniform 4=volume, 8=silence, 16=schange, set to 0 to disable
|
||||
punish_threshold=1.3 ; Multiply when amount is above average * punish_threshold
|
||||
punish_modifier=2 ; When above average * threshold multiply score by this value
|
||||
intelligent_brightness=0 ; Set to 1 to use a USA specific algorithm to tune some of the settings, not adviced outside the USA
|
||||
logo_percentile=0.92 ; if more then this amount of logo is found then logo detection will be disabled
|
||||
logo_threshold=0.75
|
||||
punish_no_logo=1 ; Default, set to 0 to avoid show segments without logo to be scored towards commercial
|
||||
aggressive_logo_rejection=0
|
||||
connect_blocks_with_logo=1 ; set to 1 if you want successive blocks with logo on the transition to be regarded as connected, set to 0 to disable
|
||||
logo_filter=0 ; set the size of the filter to apply to bad logo detection, 4 seems to be a good value.
|
||||
cut_on_ar_change=1 ; set to 1 if you want to cut also on aspect ratio changes when logo is present, set to 2 to force cuts on aspect ratio changes. set to 0 to disable
|
||||
delete_show_after_last_commercial=0 ; set to 1 if you want to delete the last block if its a show and after a commercial
|
||||
delete_show_before_or_after_current=0 ; set to 1 if you want to delete the previous and the next show in the recording, this can lead to the deletion of trailers of next show
|
||||
delete_block_after_commercial=0 ; set to max size of block in seconds to be discarded, set to 0 to disable
|
||||
remove_before=0 ; amount of seconds of show to be removed before ALL commercials
|
||||
remove_after=0 ; amount of seconds of show to be removed after ALL commercials
|
||||
shrink_logo=5 ; Reduce the duration of the logo with this amount of seconds
|
||||
after_logo=0 ; set to number of seconds after logo disappears comskip should start to search for silence to insert an additional cutpoint
|
||||
padding=0
|
||||
ms_audio_delay=5
|
||||
volume_slip=40
|
||||
skip_b_frames=0 ; Set to 1 to force Comskip to skip frames for higher processing speed.
|
||||
hardware_decode=0 ; Set to 1 to enable hardware accelerated video decoding, only available in donator version
|
||||
max_repair_size=200 ; Will repair maximum 200 missing MPEG frames in the timeline, set to 0 to disable repairing for players that don't use PTS.
|
||||
disable_heuristics=4 ; bit pattern for disabling heuristics, adding 1 disables heristics 1, adding 2 disables heristics 2, adding 4 disables heristics 3, 255 disables all heuristics
|
||||
delete_logo_file=0 ; set to 1 if you want comskip to tidy up after finishing
|
||||
output_framearray=0 ; create a big excel file for detailed analysis, set to 0 to disable
|
||||
output_data=0 ; create a dump of the user data channel, used for CC and XDS (such as V-Chip info). Can be use together with output_framearray to remote debug CC decoding
|
||||
output_videoredo=0 ; The old videoredo format
|
||||
output_videoredo3=0 ; The new videoredo v3 format.
|
||||
output_womble=0
|
||||
output_mls=0 ; set to 1 if you want MPeg Video Wizard bookmark file output
|
||||
output_cuttermaran=0
|
||||
output_mpeg2schnitt=0
|
||||
output_mpgtx=0
|
||||
output_dvrcut=0
|
||||
output_zoomplayer_chapter=0
|
||||
output_zoomplayer_cutlist=0
|
||||
output_edl=1
|
||||
output_dvrmstb=0 ; Set to 1 if you're running DVRMS-Toolbox
|
||||
output_edlx=0
|
||||
output_vcf=0
|
||||
output_bsplayer=0
|
||||
output_btv=0 ; set to 1 if you want Beyond TV chapter cutlist output
|
||||
output_projectx=0 ; set to 1 if you want ProjectX cutlist output (Xcl)
|
||||
output_avisynth=0
|
||||
output_vdr=1 ; set to 1 if you want Kodi to skipping commercials
|
||||
output_demux=0 ; set to 1 if you want comskip to demux the mpeg file while scanning
|
||||
sage_framenumber_bug=0
|
||||
sage_minute_bug=0
|
||||
live_tv=0 ; set to 1 if you use parallelprocessing and need the output while recording
|
||||
live_tv_retries=4 ; change to 16 when using live_tv in BTV, used for mpeg PS and TS
|
||||
dvrms_live_tv_retries=300 ; only used for dvr_ms
|
||||
standoff=0 ; change to 8000000 when using live_tv in BTV
|
||||
|
||||
cuttermaran_options="cut=\"true\" unattended=\"true\" muxResult=\"false\" snapToCutPoints=\"true\" closeApp=\"true\""
|
||||
mpeg2schnitt_options="mpeg2schnitt.exe /S /E /R25 /Z %2 %1"
|
||||
avisynth_options="LoadPlugin(\"MPEG2Dec3.dll\") \nMPEG2Source(\"%s\")\n"
|
||||
dvrcut_options="dvrcut \"%s.dvr-ms\" \"%s_clean.dvr-ms\" "
|
||||
windowtitle="Comskip - %s"
|
14
packages/addons/service/tvheadend43/source/defaults/config
Normal file
14
packages/addons/service/tvheadend43/source/defaults/config
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"wizard": "hello",
|
||||
"uilevel": 1,
|
||||
"uilevel_nochange": true,
|
||||
"ui_quicktips": true,
|
||||
"cookie_expires": 14,
|
||||
"caclient_ui": true,
|
||||
"epg_compress": true,
|
||||
"prefer_picon": true,
|
||||
"chiconpath": "file:///storage/picons/tvh/%C.png",
|
||||
"chiconscheme": 2,
|
||||
"piconpath": "file:///storage/picons/vdr/",
|
||||
"piconscheme": 1
|
||||
}
|
18
packages/addons/service/tvheadend43/source/defaults/dvr/config/8d0f5b7ae354d956d7fe5db25f5d0d24
Normal file
18
packages/addons/service/tvheadend43/source/defaults/dvr/config/8d0f5b7ae354d956d7fe5db25f5d0d24
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"storage": "/storage/recordings",
|
||||
"retention-days": 2147483646,
|
||||
"removal-days": 2147483647,
|
||||
"pre-extra-time": 0,
|
||||
"post-extra-time": 0,
|
||||
"day-dir": false,
|
||||
"channel-dir": false,
|
||||
"channel-in-title": true,
|
||||
"date-in-title": true,
|
||||
"time-in-title": true,
|
||||
"whitespace-in-title": false,
|
||||
"title-dir": true,
|
||||
"episode-in-title": true,
|
||||
"tag-files": true,
|
||||
"windows-compatible-filenames": true,
|
||||
"charset": "UTF-8"
|
||||
}
|
@ -0,0 +1,79 @@
|
||||
{
|
||||
"channel_rename": true,
|
||||
"channel_renumber": false,
|
||||
"channel_reicon": false,
|
||||
"epgdb_periodicsave": 2,
|
||||
"ota_initial": true,
|
||||
"modules": {
|
||||
"opentv-skyit": {
|
||||
"class": "epggrab_mod_ota",
|
||||
"name": "OpenTV: Sky Italia",
|
||||
"type": "Over-the-air",
|
||||
"enabled": true,
|
||||
"priority": 2
|
||||
},
|
||||
"opentv-skynz": {
|
||||
"class": "epggrab_mod_ota",
|
||||
"name": "OpenTV: Sky NZ",
|
||||
"type": "Over-the-air",
|
||||
"enabled": true,
|
||||
"priority": 2
|
||||
},
|
||||
"opentv-skyuk": {
|
||||
"class": "epggrab_mod_ota",
|
||||
"name": "OpenTV: Sky UK",
|
||||
"type": "Over-the-air",
|
||||
"enabled": true,
|
||||
"priority": 2
|
||||
},
|
||||
"opentv-ausat": {
|
||||
"class": "epggrab_mod_ota",
|
||||
"name": "OpenTV: Ausat",
|
||||
"type": "Over-the-air",
|
||||
"enabled": true,
|
||||
"priority": 2
|
||||
},
|
||||
"psip": {
|
||||
"class": "epggrab_mod_ota",
|
||||
"name": "PSIP: ATSC Grabber",
|
||||
"type": "Over-the-air",
|
||||
"enabled": true,
|
||||
"priority": 1
|
||||
},
|
||||
"Bulsatcom_39E": {
|
||||
"class": "epggrab_mod_ota",
|
||||
"name": "Bulsatcom: Bula 39E",
|
||||
"type": "Over-the-air",
|
||||
"enabled": true,
|
||||
"priority": 5
|
||||
},
|
||||
"viasat_baltic": {
|
||||
"class": "epggrab_mod_ota",
|
||||
"name": "VIASAT: Baltic",
|
||||
"type": "Over-the-air",
|
||||
"enabled": true,
|
||||
"priority": 5
|
||||
},
|
||||
"uk_freeview": {
|
||||
"class": "epggrab_mod_ota",
|
||||
"name": "UK: Freeview",
|
||||
"type": "Over-the-air",
|
||||
"enabled": true,
|
||||
"priority": 5
|
||||
},
|
||||
"uk_freesat": {
|
||||
"class": "epggrab_mod_ota",
|
||||
"name": "UK: Freesat",
|
||||
"type": "Over-the-air",
|
||||
"enabled": true,
|
||||
"priority": 5
|
||||
},
|
||||
"eit": {
|
||||
"class": "epggrab_mod_ota",
|
||||
"name": "EIT: DVB Grabber",
|
||||
"type": "Over-the-air",
|
||||
"enabled": true,
|
||||
"priority": 1
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
{
|
||||
"enabled": 0,
|
||||
"ondemand": 0,
|
||||
"path": "/storage/.kodi/userdata/addon_data/service.tvheadend43/cache/timeshift",
|
||||
"unlimited_period": 0,
|
||||
"max_period": 3600,
|
||||
"unlimited_size": 0,
|
||||
"max_size": 3072
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
{
|
||||
"grabbers": [
|
||||
{
|
||||
"path": "/storage/.kodi/addons/service.tvheadend43/bin/tv_grab_file",
|
||||
"description": "tv_grag_file is a simple grabber that just read the ~/.xmltv/tv_grab_file.xmltv file",
|
||||
"version": "0.1\n",
|
||||
"mtime": 1318774706,
|
||||
"capabilities": 1
|
||||
}
|
||||
],
|
||||
"grab-interval": 12,
|
||||
"grab-enabled": 1,
|
||||
"current-grabber": "/storage/.kodi/addons/service.tvheadend43/bin/tv_grab_file"
|
||||
}
|
67
packages/addons/service/tvheadend43/source/download.py
Normal file
67
packages/addons/service/tvheadend43/source/download.py
Normal file
@ -0,0 +1,67 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
import urllib.request, urllib.parse, urllib.error, os, zipfile
|
||||
from urllib.error import URLError
|
||||
import xbmc, xbmcvfs, xbmcgui, xbmcaddon
|
||||
import shutil
|
||||
import sys
|
||||
|
||||
url = 'https://github.com/tvheadend/dtv-scan-tables/archive/tvheadend.zip'
|
||||
temp = xbmcvfs.translatePath('special://temp')
|
||||
temp_folder = os.path.join(temp, 'dtv-scan-tables-tvheadend')
|
||||
dest_folder = os.path.join(xbmcvfs.translatePath(xbmcaddon.Addon().getAddonInfo('path')), 'dvb-scan')
|
||||
archive = os.path.join(temp, 'dtv_scantables.zip')
|
||||
|
||||
ADDON_NAME = xbmcaddon.Addon().getAddonInfo('name')
|
||||
LS = xbmcaddon.Addon().getLocalizedString
|
||||
SCANTABLES = ['atsc', 'channels-conf', 'dvb-c', 'dvb-s', 'dvb-t', 'isdb-t']
|
||||
|
||||
class DownLoader():
|
||||
|
||||
def __init__(self):
|
||||
self.dp = xbmcgui.DialogProgressBG()
|
||||
|
||||
def download(self, url, dest):
|
||||
try:
|
||||
self.dp.create(ADDON_NAME, LS(30042))
|
||||
urllib.request.urlretrieve(url, dest, reporthook=self._pbhook)
|
||||
self.dp.close()
|
||||
zip = zipfile.ZipFile(archive)
|
||||
if zip.testzip() is not None: raise zipfile.BadZipfile
|
||||
|
||||
if os.path.exists(temp_folder): shutil.rmtree(temp_folder)
|
||||
if os.path.exists(dest_folder): shutil.rmtree(dest_folder)
|
||||
|
||||
self.dp.create(ADDON_NAME, LS(30043))
|
||||
for idx, folder in enumerate(SCANTABLES):
|
||||
self._pbhook(idx, 1, len(SCANTABLES) - 1)
|
||||
for z in zip.filelist:
|
||||
if folder in z.filename: zip.extract(z.filename, temp)
|
||||
|
||||
self.dp.close()
|
||||
for folder in SCANTABLES:
|
||||
shutil.copytree(os.path.join(temp_folder, folder), os.path.join(dest_folder, folder))
|
||||
|
||||
xbmcgui.Dialog().notification(ADDON_NAME, LS(30039), xbmcgui.NOTIFICATION_INFO)
|
||||
except URLError as e:
|
||||
xbmc.log('Could not download file: %s' % e.reason, xbmc.LOGERROR)
|
||||
self.dp.close()
|
||||
xbmcgui.Dialog().notification(ADDON_NAME, LS(30040), xbmcgui.NOTIFICATION_ERROR)
|
||||
except zipfile.BadZipfile:
|
||||
xbmc.log('Could not extract files from zip, bad zipfile', xbmc.LOGERROR)
|
||||
xbmcgui.Dialog().notification(ADDON_NAME, LS(30041), xbmcgui.NOTIFICATION_ERROR)
|
||||
|
||||
def _pbhook(self, numblocks, blocksize, filesize):
|
||||
percent = int((numblocks * blocksize * 100) / filesize)
|
||||
self.dp.update(percent)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
try:
|
||||
if sys.argv[1] == 'getscantables':
|
||||
dl = DownLoader()
|
||||
dl.download(url, archive)
|
||||
except IndexError:
|
||||
pass
|
||||
|
@ -0,0 +1,182 @@
|
||||
# Kodi Media Center language file
|
||||
# Addon Name: tvheadend43
|
||||
# Addon id: service.tvheadend43
|
||||
# Addon Provider: Team LibreELEC
|
||||
msgid ""
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30000"
|
||||
msgid "XMLTV"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30001"
|
||||
msgid "DVB"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30002"
|
||||
msgid "DEBUG"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30003"
|
||||
msgid "FRITZ!Box Sat>IP"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30004"
|
||||
msgid "XMLTV Configuration"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30005"
|
||||
msgid "XMLTV source type"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30006"
|
||||
msgid "XMLTV File location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30007"
|
||||
msgid "XMLTV Web location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30008"
|
||||
msgid "XMLTV Script location"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30009"
|
||||
msgid "DVB Configuration"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30010"
|
||||
msgid "Unload DVB modules before suspend"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30011"
|
||||
msgid "Wait for frontend initialization"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30012"
|
||||
msgid "Number of adapters to wait for"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30013"
|
||||
msgid "Preload capmt_ca.so library"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30014"
|
||||
msgid "Delay the start of Tvheadend"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30015"
|
||||
msgid "Seconds delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30016"
|
||||
msgid "Custom start parameter"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30017"
|
||||
msgid "Parameter"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30018"
|
||||
msgid "FRITZ!Box Sat>IP server"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30019"
|
||||
msgid "AVM device"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30020"
|
||||
msgid "IP of the AVM Repeater"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30021"
|
||||
msgid "Router IP range (last digits are always .254)"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30022"
|
||||
msgid "Used network"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30023"
|
||||
msgid "Virtual IP #1"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30024"
|
||||
msgid "Virtual IP #2"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30025"
|
||||
msgid "Virtual IP #3"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30026"
|
||||
msgid "Virtual IP #4"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30027"
|
||||
msgid "TRACE Configuration"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30028"
|
||||
msgid "Path"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30029"
|
||||
msgid "Activate TRACE Debug"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30030"
|
||||
msgid "Debug Value #1"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30031"
|
||||
msgid "Debug Value #2"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30032"
|
||||
msgid "Debug Value #3"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30033"
|
||||
msgid "Debug Value #4"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30034"
|
||||
msgid "Debug Value #5"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30035"
|
||||
msgid "FRITZ!Box Configuration for FRITZ!OS 6.x (do not use for 7.x)"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30036"
|
||||
msgid "Scan Tables"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30037"
|
||||
msgid "Manage Scan-Tables"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30038"
|
||||
msgid "Download and install Scan-Tables"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30039"
|
||||
msgid "Download completed, tables installed"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30040"
|
||||
msgid "Could not download Scan-Tables"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30041"
|
||||
msgid "Could not extract zip files"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30042"
|
||||
msgid "Download Scan-Tables"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30043"
|
||||
msgid "Extract Scan-Tables"
|
||||
msgstr ""
|
Binary file not shown.
After ![]() (image error) Size: 128 KiB |
Binary file not shown.
After ![]() (image error) Size: 136 KiB |
Binary file not shown.
After ![]() (image error) Size: 167 KiB |
Binary file not shown.
After ![]() (image error) Size: 77 KiB |
@ -0,0 +1,55 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<settings>
|
||||
<!-- HTS TVHEADEND -->
|
||||
<category label="30000">
|
||||
<setting label="30004" type="lsep"/>
|
||||
<setting type="sep" />
|
||||
<setting id="XMLTV_TYPE" type="labelenum" label="30005" values="NONE|FILE|SCRIPT|WEB" sort="yes" default="NONE"/>
|
||||
<setting id="XMLTV_LOCATION_FILE" type="file" label="30006" default="" enable="eq(-1,0)"/>
|
||||
<setting id="XMLTV_LOCATION_WEB" type="text" label="30007" default="http://" enable="eq(-2,3)"/>
|
||||
<setting id="XMLTV_LOCATION_SCRIPT" type="file" label="30008" default="" enable="eq(-3,2)"/>
|
||||
</category>
|
||||
<category label="30001">
|
||||
<setting label="30009" type="lsep"/>
|
||||
<setting type="sep" />
|
||||
<setting id="WAIT_FOR_FEINIT" type="bool" label="30011" default="false" />
|
||||
<setting id="NUM_ADAPTERS" type="slider" range="1,16" option="int" label="30012" default="1" enable="eq(-1,true)" />
|
||||
<setting id="REMOVE_MODULES" type="text" label="30010" values="" default=""/>
|
||||
<setting id="PRELOAD_CAPMT_CA" type="bool" label="30013" default="false" />
|
||||
<setting id="WORKAROUND_SLEEP" type="bool" label="30014" default="false" />
|
||||
<setting id="WORKAROUND_SLEEP_TIME" type="slider" range="1,30" option="int" label="30015" default="1" enable="eq(-1,true)" />
|
||||
</category>
|
||||
<category label="30002">
|
||||
<setting label="30027" type="lsep"/>
|
||||
<setting type="sep" />
|
||||
<setting id="DEBUG_LOG" type="bool" label="30029" default="false" />
|
||||
<setting type="sep" />
|
||||
<setting id="DEBUG_LOG_PATH" type="text" label="30028" default="/storage/.kodi/userdata/addon_data/service.tvheadend43/debug.txt" enable="eq(-2,true)"/>
|
||||
<setting id="DEBUG_LOG_TRACE_1" type="select" default="NONE" visible="eq(-3,true)" enable="eq(-3,true)" label="30030" values="NONE|all|access|api|avahi|bat|bonjour|bouquet|caclient|capmt|channel|charset|config|CPU|cron|csa|cwc|dbus|descrambler|diseqc|dvb|dvbcam|dvr|epg|epgdb|epggrab|esfilter|fastscan|fsmonitor|globalheaders|gtimer|hevc|htsp|htsp-ans|htsp-req|htsp-sub|http|httpc|idnode|imagecache|iptv|iptv-pcr|libav|linuxdvb|lock|main|mkv|mpegts|mtimer|muxer|muxsched|opentv|parser|pass|pat|pmt|profile|psip|pyepg|rtsp|satip|satips|scanfile|service|service-mapper|settings|spawn|subscription|tbl|tbl-atsc|tbl-base|tbl-csa|tbl-eit|tbl-pass|tbl-satip|tbl-time|tcp|thread|time|timeshift|transcode|TS|tsfile|tsfix|tvhdhomerun|tvhpoll|upnp|url|uuid|webui|xmltv" />
|
||||
<setting id="DEBUG_LOG_TRACE_2" type="select" default="NONE" visible="eq(-4,true)" enable="!eq(-1,NONE)+eq(-4,true)" label="30031" values="NONE|access|api|avahi|bat|bonjour|bouquet|caclient|capmt|channel|charset|config|CPU|cron|csa|cwc|dbus|descrambler|diseqc|dvb|dvbcam|dvr|epg|epgdb|epggrab|esfilter|fastscan|fsmonitor|globalheaders|gtimer|hevc|htsp|htsp-ans|htsp-req|htsp-sub|http|httpc|idnode|imagecache|iptv|iptv-pcr|libav|linuxdvb|lock|main|mkv|mpegts|mtimer|muxer|muxsched|opentv|parser|pass|pat|pmt|profile|psip|pyepg|rtsp|satip|satips|scanfile|service|service-mapper|settings|spawn|subscription|tbl|tbl-atsc|tbl-base|tbl-csa|tbl-eit|tbl-pass|tbl-satip|tbl-time|tcp|thread|time|timeshift|transcode|TS|tsfile|tsfix|tvhdhomerun|tvhpoll|upnp|url|uuid|webui|xmltv" />
|
||||
<setting id="DEBUG_LOG_TRACE_3" type="select" default="NONE" visible="eq(-5,true)" enable="!eq(-1,NONE)+!eq(-2,NONE)+eq(-5,true)" label="30032" values="NONE|access|api|avahi|bat|bonjour|bouquet|caclient|capmt|channel|charset|config|CPU|cron|csa|cwc|dbus|descrambler|diseqc|dvb|dvbcam|dvr|epg|epgdb|epggrab|esfilter|fastscan|fsmonitor|globalheaders|gtimer|hevc|htsp|htsp-ans|htsp-req|htsp-sub|http|httpc|idnode|imagecache|iptv|iptv-pcr|libav|linuxdvb|lock|main|mkv|mpegts|mtimer|muxer|muxsched|opentv|parser|pass|pat|pmt|profile|psip|pyepg|rtsp|satip|satips|scanfile|service|service-mapper|settings|spawn|subscription|tbl|tbl-atsc|tbl-base|tbl-csa|tbl-eit|tbl-pass|tbl-satip|tbl-time|tcp|thread|time|timeshift|transcode|TS|tsfile|tsfix|tvhdhomerun|tvhpoll|upnp|url|uuid|webui|xmltv" />
|
||||
<setting id="DEBUG_LOG_TRACE_4" type="select" default="NONE" visible="eq(-6,true)" enable="!eq(-1,NONE)+!eq(-2,NONE)+!eq(-3,NONE)+eq(-6,true)" label="30033" values="NONE|access|api|avahi|bat|bonjour|bouquet|caclient|capmt|channel|charset|config|CPU|cron|csa|cwc|dbus|descrambler|diseqc|dvb|dvbcam|dvr|epg|epgdb|epggrab|esfilter|fastscan|fsmonitor|globalheaders|gtimer|hevc|htsp|htsp-ans|htsp-req|htsp-sub|http|httpc|idnode|imagecache|iptv|iptv-pcr|libav|linuxdvb|lock|main|mkv|mpegts|mtimer|muxer|muxsched|opentv|parser|pass|pat|pmt|profile|psip|pyepg|rtsp|satip|satips|scanfile|service|service-mapper|settings|spawn|subscription|tbl|tbl-atsc|tbl-base|tbl-csa|tbl-eit|tbl-pass|tbl-satip|tbl-time|tcp|thread|time|timeshift|transcode|TS|tsfile|tsfix|tvhdhomerun|tvhpoll|upnp|url|uuid|webui|xmltv" />
|
||||
<setting id="DEBUG_LOG_TRACE_5" type="select" default="NONE" visible="eq(-7,true)" enable="!eq(-1,NONE)+!eq(-2,NONE)+!eq(-3,NONE)+!eq(-4,NONE)+eq(-7,true)" label="30034" values="NONE|access|api|avahi|bat|bonjour|bouquet|caclient|capmt|channel|charset|config|CPU|cron|csa|cwc|dbus|descrambler|diseqc|dvb|dvbcam|dvr|epg|epgdb|epggrab|esfilter|fastscan|fsmonitor|globalheaders|gtimer|hevc|htsp|htsp-ans|htsp-req|htsp-sub|http|httpc|idnode|imagecache|iptv|iptv-pcr|libav|linuxdvb|lock|main|mkv|mpegts|mtimer|muxer|muxsched|opentv|parser|pass|pat|pmt|profile|psip|pyepg|rtsp|satip|satips|scanfile|service|service-mapper|settings|spawn|subscription|tbl|tbl-atsc|tbl-base|tbl-csa|tbl-eit|tbl-pass|tbl-satip|tbl-time|tcp|thread|time|timeshift|transcode|TS|tsfile|tsfix|tvhdhomerun|tvhpoll|upnp|url|uuid|webui|xmltv" />
|
||||
<setting type="sep" />
|
||||
<setting id="CUSTOM_START" type="bool" label="30016" default="false" />
|
||||
<setting id="CUSTOM_ARGS" type="text" label="30017" default="" enable="eq(-1,true)" />
|
||||
</category>
|
||||
<category label="30003">
|
||||
<setting label="30035" type="lsep"/>
|
||||
<setting type="sep" />
|
||||
<setting id="AVM_SATIP_SERVER" type="bool" label="30018" default="false"/>
|
||||
<setting id="AVM_DEVICE" type="labelenum" label="30019" values="AVM_Repeater|AVM_6490" visible="eq(-1,true)"/>
|
||||
<setting id="AVM_ROUTER_IP" type="ipaddress" label="30020" default="192.168.178.2" visible="eq(-2,true)+eq(-1,0)"/>
|
||||
<setting id="AVM_ROUTER_FAKE_IP" type="ipaddress" label="30021" default="192.168.178.254" visible="eq(-3,true)+eq(-2,1)"/>
|
||||
<setting id="AVM_ETH" type="labelenum" label="30022" default="eth0" visible="eq(-4,true)" values="eth0|wlan0|eth1|wlan1" />
|
||||
<setting type="sep" visible="eq(-5,true)"/>
|
||||
<setting id="AVM_IP1" type="ipaddress" label="30023" default="192.168.178.201" visible="eq(-6,true)"/>
|
||||
<setting id="AVM_IP2" type="ipaddress" label="30024" default="192.168.178.202" visible="eq(-7,true)"/>
|
||||
<setting id="AVM_IP3" type="ipaddress" label="30025" default="192.168.178.203" visible="eq(-8,true)+eq(-7,1)"/>
|
||||
<setting id="AVM_IP4" type="ipaddress" label="30026" default="192.168.178.204" visible="eq(-9,true)+eq(-8,1)"/>
|
||||
</category>
|
||||
<category label="30036">
|
||||
<setting label="30037" type="lsep"/>
|
||||
<setting id="DOWNLOAD_SCAN_TABLES" type="action" label="30038" option="close" action="RunScript(service.tvheadend43,getscantables)"/>
|
||||
</category>
|
||||
</settings>
|
@ -0,0 +1,31 @@
|
||||
<settings version="2">
|
||||
<setting id="AVM_DEVICE" default="true"></setting>
|
||||
<setting id="AVM_ETH" default="true">eth0</setting>
|
||||
<setting id="AVM_IP1" default="true">192.168.178.201</setting>
|
||||
<setting id="AVM_IP2" default="true">192.168.178.202</setting>
|
||||
<setting id="AVM_IP3" default="true">192.168.178.203</setting>
|
||||
<setting id="AVM_IP4" default="true">192.168.178.204</setting>
|
||||
<setting id="AVM_ROUTER_FAKE_IP" default="true">192.168.178.254</setting>
|
||||
<setting id="AVM_ROUTER_IP" default="true">192.168.178.2</setting>
|
||||
<setting id="AVM_SATIP_SERVER" default="true">false</setting>
|
||||
<setting id="CUSTOM_ARGS" default="true"></setting>
|
||||
<setting id="CUSTOM_START" default="true">false</setting>
|
||||
<setting id="DEBUG_LOG" default="true">false</setting>
|
||||
<setting id="DEBUG_LOG_PATH" default="true">/storage/.kodi/userdata/addon_data/service.tvheadend43/debug.txt</setting>
|
||||
<setting id="DEBUG_LOG_TRACE_1" default="true">NONE</setting>
|
||||
<setting id="DEBUG_LOG_TRACE_2" default="true">NONE</setting>
|
||||
<setting id="DEBUG_LOG_TRACE_3" default="true">NONE</setting>
|
||||
<setting id="DEBUG_LOG_TRACE_4" default="true">NONE</setting>
|
||||
<setting id="DEBUG_LOG_TRACE_5" default="true">NONE</setting>
|
||||
<setting id="DOWNLOAD_SCAN_TABLES" default="true"></setting>
|
||||
<setting id="NUM_ADAPTERS">1</setting>
|
||||
<setting id="PRELOAD_CAPMT_CA" default="true">false</setting>
|
||||
<setting id="REMOVE_MODULES" default="true"></setting>
|
||||
<setting id="WAIT_FOR_FEINIT" default="true">false</setting>
|
||||
<setting id="WORKAROUND_SLEEP" default="true">false</setting>
|
||||
<setting id="WORKAROUND_SLEEP_TIME">1</setting>
|
||||
<setting id="XMLTV_LOCATION_FILE" default="true"></setting>
|
||||
<setting id="XMLTV_LOCATION_SCRIPT" default="true"></setting>
|
||||
<setting id="XMLTV_LOCATION_WEB" default="true">http://</setting>
|
||||
<setting id="XMLTV_TYPE" default="true">NONE</setting>
|
||||
</settings>
|
29
packages/addons/service/tvheadend43/source/sleep.d/tvheadend.power
Executable file
29
packages/addons/service/tvheadend43/source/sleep.d/tvheadend.power
Executable file
@ -0,0 +1,29 @@
|
||||
#!/bin/sh
|
||||
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
. /etc/profile
|
||||
|
||||
oe_setup_addon service.tvheadend43
|
||||
|
||||
SERVICE="service.tvheadend43"
|
||||
|
||||
case "$1" in
|
||||
pre)
|
||||
if systemctl is-active "$SERVICE" &>/dev/null ; then
|
||||
systemctl stop "$SERVICE"
|
||||
for module in $REMOVE_MODULES ; do
|
||||
rmmod $module
|
||||
done
|
||||
fi
|
||||
;;
|
||||
post)
|
||||
if systemctl is-enabled "$SERVICE" &>/dev/null ; then
|
||||
for module in $REMOVE_MODULES ; do
|
||||
modprobe $module
|
||||
done
|
||||
systemctl start "$SERVICE"
|
||||
fi
|
||||
;;
|
||||
esac
|
@ -0,0 +1,13 @@
|
||||
[Unit]
|
||||
Description=TVHeadend43 Service
|
||||
After=network-online.service
|
||||
|
||||
[Service]
|
||||
ExecStart=/bin/sh -c "exec sh /storage/.kodi/addons/service.tvheadend43/bin/tvheadend43.start"
|
||||
TimeoutStopSec=2
|
||||
Restart=always
|
||||
RestartSec=2
|
||||
StartLimitInterval=0
|
||||
|
||||
[Install]
|
||||
WantedBy=kodi.target
|
Reference in New Issue
Block a user