diff --git a/packages/addons/driver/sundtek-mediatv/changelog.txt b/packages/addons/driver/sundtek-mediatv/changelog.txt index 0a1fe7a966..c69054dc1b 100644 --- a/packages/addons/driver/sundtek-mediatv/changelog.txt +++ b/packages/addons/driver/sundtek-mediatv/changelog.txt @@ -1,6 +1,6 @@ 4.3.4 fixed xbmc/kodi rebranding error - removed driver update option (can't run script from addon settings anymore) + some fixes 4.3.3 addon transformed to service addon new addon settings option to enable to check for new driver at boot diff --git a/packages/addons/driver/sundtek-mediatv/package.mk b/packages/addons/driver/sundtek-mediatv/package.mk index 9430e7d024..69345f19bf 100644 --- a/packages/addons/driver/sundtek-mediatv/package.mk +++ b/packages/addons/driver/sundtek-mediatv/package.mk @@ -47,10 +47,17 @@ make_target() { INSTALLER_URL="http://sundtek.de/media/netinst/armsysvhf/installer.tar.gz" ;; esac + wget -O installer.tar.gz $INSTALLER_URL + tar -xzf installer.tar.gz + chmod -R 755 opt/ etc/ + rm -f opt/bin/getinput.sh + rm -f opt/bin/lirc.sh + rm -fr opt/lib/pm/ + wget -O version.used http://sundtek.de/media/latest.phtml } diff --git a/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-mediatv.start b/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-mediatv.start index 457c43c3cc..3e343ef6d9 100644 --- a/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-mediatv.start +++ b/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-mediatv.start @@ -2,7 +2,7 @@ ################################################################################ # This file is part of OpenELEC - http://www.openelec.tv -# Copyright (C) 2009-2013 Stephan Raue (stephan@openelec.tv) +# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv) # # OpenELEC is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -78,7 +78,7 @@ if [ "$CHECK_BOOT" = "true" ]; then version_latest=$(cat version.latest) if [ "$version_used" != "$version_latest" ]; then # new version exist - kodi-send -a "Notification(Sundtek, \"New driver version exist, update manually\", 7000, $SUNDTEK_ADDON_DIR/icon.png)" + kodi-send -a "Notification(Sundtek, \"New driver version exist, update manually\", 4000, $SUNDTEK_ADDON_DIR/icon.png)" fi )& fi diff --git a/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-mediatv.stop b/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-mediatv.stop index 7c88bbf23e..02aeedebde 100644 --- a/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-mediatv.stop +++ b/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-mediatv.stop @@ -2,7 +2,7 @@ ################################################################################ # This file is part of OpenELEC - http://www.openelec.tv -# Copyright (C) 2009-2013 Stephan Raue (stephan@openelec.tv) +# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv) # # OpenELEC is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-update-driver.sh b/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-update-driver.sh index 5a7c87c9b9..bc4807e300 100644 --- a/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-update-driver.sh +++ b/packages/addons/driver/sundtek-mediatv/source/bin/sundtek-update-driver.sh @@ -24,18 +24,35 @@ SUNDTEK_ADDON_DIR="$HOME/.kodi/addons/driver.dvb.sundtek-mediatv" SUNDTEK_ADDON_HOME="$HOME/.kodi/userdata/addon_data/driver.dvb.sundtek-mediatv" SUNDTEK_ADDON_SETTINGS="$SUNDTEK_ADDON_HOME/settings.xml" -logger -t Sundtek "### Starting updating driver ###" -kodi-send -a "Notification(Sundtek, Starting updating driver, 2000, $SUNDTEK_ADDON_DIR/icon.png)" +trap_exit_install() { + kodi-send -a "Notification(Sundtek, Something went wrong. Cleaning..., 8000, $SUNDTEK_ADDON_DIR/icon.png)" + cd "$SUNDTEK_ADDON_DIR" + rm -fr tmp + exit 5 +} + +# kill process +systemctl stop driver.dvb.sundtek-mediatv +killall -9 mediaclient &>/dev/null +killall -9 mediasrv &>/dev/null + +# exit on errors +set -e + +trap trap_exit_install EXIT cd "$SUNDTEK_ADDON_DIR" rm -fr tmp mkdir tmp cd tmp +logger -t Sundtek "### Starting updating driver ###" +kodi-send -a "Notification(Sundtek, Starting updating driver, 2000, $SUNDTEK_ADDON_DIR/icon.png)" + wget -O ../version.used http://sundtek.de/media/latest.phtml if [ $? -ne 0 ]; then logger -t Sundtek "### Can't get latest version ###" - kodi-send -a "Notification(Sundtek, Can't get latest version, 8000, $SUNDTEK_ADDON_DIR/icon.png)" + kodi-send -a "Notification(Sundtek, Cant get latest version, 8000, $SUNDTEK_ADDON_DIR/icon.png)" cd .. rm -fr tmp/ exit 1 @@ -66,6 +83,7 @@ if [ $? -ne 0 ]; then rm -fr tmp/ exit 3 fi + logger -t Sundtek "### Extracting archive ###" kodi-send -a "Notification(Sundtek, Extracting archive, 2000, $SUNDTEK_ADDON_DIR/icon.png)" tar -xzf installer.tar.gz @@ -77,12 +95,12 @@ if [ $? -ne 0 ]; then exit 4 fi +# fix permissions chmod -R 755 opt/ etc/ -killall -9 mediaclient &>/dev/null -killall -9 mediasrv &>/dev/null - -chmod 755 opt/bin/* +rm -f opt/bin/getinput.sh +rm -f opt/bin/lirc.sh +rm -fr opt/lib/pm/ cp -Pa opt/bin/* ../bin/ cp -Pa opt/lib/* ../lib/ @@ -93,4 +111,9 @@ rm -fr tmp logger -t Sundtek "### Driver update finished ###" kodi-send -a "Notification(Sundtek, Driver update finished, 5000, $SUNDTEK_ADDON_DIR/icon.png)" kodi-send -a "Notification(Sundtek, Please reboot, 5000, $SUNDTEK_ADDON_DIR/icon.png)" + +trap - EXIT + +systemctl start driver.dvb.sundtek-mediatv + exit 0 diff --git a/packages/addons/driver/sundtek-mediatv/source/bin/userspace-driver.sh b/packages/addons/driver/sundtek-mediatv/source/bin/userspace-driver.sh index 23334ea890..92d194ce23 100644 --- a/packages/addons/driver/sundtek-mediatv/source/bin/userspace-driver.sh +++ b/packages/addons/driver/sundtek-mediatv/source/bin/userspace-driver.sh @@ -2,7 +2,7 @@ ################################################################################ # This file is part of OpenELEC - http://www.openelec.tv -# Copyright (C) 2009-2013 Stephan Raue (stephan@openelec.tv) +# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv) # # OpenELEC is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/packages/addons/driver/sundtek-mediatv/source/default.py b/packages/addons/driver/sundtek-mediatv/source/default.py index c466f0415a..b858c59827 100644 --- a/packages/addons/driver/sundtek-mediatv/source/default.py +++ b/packages/addons/driver/sundtek-mediatv/source/default.py @@ -15,29 +15,3 @@ # You should have received a copy of the GNU General Public License # along with OpenELEC. If not, see . ################################################################################ - -import os -import sys -import subprocess -import xbmcaddon - -__settings__ = xbmcaddon.Addon(id = 'driver.dvb.sundtek-mediatv') -__cwd__ = __settings__.getAddonInfo('path') -__resources_lib__ = xbmc.translatePath(os.path.join(__cwd__, 'resources', 'lib')) -__settings_xml__ = xbmc.translatePath(os.path.join(__cwd__, 'resources', 'settings.xml')) - -__mediaclient__ = xbmc.translatePath(os.path.join(__cwd__, 'bin', 'mediaclient')) -__mediaclient_e__ = __mediaclient__ + ' -e' -__update_sh__ = xbmc.translatePath(os.path.join(__cwd__, 'bin', 'sundtek-update-driver.sh')) - -if __name__ == "__main__" and len(sys.argv) == 2: - if sys.argv[1] == 'refresh_tuners': - sys.path.append(__resources_lib__) - from functions import refresh_sundtek_tuners - refresh_sundtek_tuners(__settings_xml__, __mediaclient_e__) - __settings__.openSettings() - elif sys.argv[1] == 'update_driver': - proc = subprocess.Popen([__update_sh__], shell = True) - return_code = proc.wait() - print "sundtek update driver return value" + str(return_code) - __settings__.openSettings() diff --git a/packages/addons/driver/sundtek-mediatv/source/resources/actions.py b/packages/addons/driver/sundtek-mediatv/source/resources/actions.py new file mode 100644 index 0000000000..6e32393e0b --- /dev/null +++ b/packages/addons/driver/sundtek-mediatv/source/resources/actions.py @@ -0,0 +1,45 @@ +################################################################################ +# This file is part of OpenELEC - http://www.openelec.tv +# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv) +# +# OpenELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# OpenELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenELEC. If not, see . +################################################################################ + +import os +import sys +import subprocess +import xbmcaddon + +__settings__ = xbmcaddon.Addon(id = 'driver.dvb.sundtek-mediatv') +__cwd__ = __settings__.getAddonInfo('path') +__resources_lib__ = xbmc.translatePath(os.path.join(__cwd__, 'resources', 'lib')) +__settings_xml__ = xbmc.translatePath(os.path.join(__cwd__, 'resources', 'settings.xml')) + +__mediaclient__ = xbmc.translatePath(os.path.join(__cwd__, 'bin', 'mediaclient')) +__mediaclient_e__ = __mediaclient__ + ' -e' +__update_sh__ = xbmc.translatePath(os.path.join(__cwd__, 'bin', 'sundtek-update-driver.sh')) + +if len(sys.argv) == 2: + if sys.argv[1] == 'refresh_tuners': + print "sundtek refresh tuners" + sys.path.append(__resources_lib__) + from functions import refresh_sundtek_tuners + refresh_sundtek_tuners(__settings_xml__, __mediaclient_e__) + __settings__.openSettings() + elif sys.argv[1] == 'update_driver': + print "sundtek update driver" + proc = subprocess.Popen([__update_sh__], shell = True) + return_code = proc.wait() + print "sundtek update driver return value " + str(return_code) + __settings__.openSettings() diff --git a/packages/addons/driver/sundtek-mediatv/source/resources/lib/functions.py b/packages/addons/driver/sundtek-mediatv/source/resources/lib/functions.py index bc34bf8e3b..04d8f73789 100644 --- a/packages/addons/driver/sundtek-mediatv/source/resources/lib/functions.py +++ b/packages/addons/driver/sundtek-mediatv/source/resources/lib/functions.py @@ -1,6 +1,6 @@ ################################################################################ # This file is part of OpenELEC - http://www.openelec.tv -# Copyright (C) 2009-2013 Stephan Raue (stephan@openelec.tv) +# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv) # # OpenELEC is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/packages/addons/driver/sundtek-mediatv/source/resources/lib/xmlpp.py b/packages/addons/driver/sundtek-mediatv/source/resources/lib/xmlpp.py index 342dcc01d7..5898b40b11 100644 --- a/packages/addons/driver/sundtek-mediatv/source/resources/lib/xmlpp.py +++ b/packages/addons/driver/sundtek-mediatv/source/resources/lib/xmlpp.py @@ -37,36 +37,39 @@ def _usage(this_file): return """SYNOPSIS: pretty print an XML document USAGE: python %s \n""" % this_file -def _pprint_line(indent_level, line, width=100, output=_sys.stdout): +def _pprint_line(indent_level, line, width=100, output=_sys.stdout, ignore_contents = False): if line.strip(): start = "" number_chars = 0 for l in range(indent_level): start = start + " " number_chars = number_chars + 1 - try: - elem_start = _re.findall("(\<\W{0,1}\w+:\w+) ?", line)[0] - elem_finished = _re.findall("([?|\]\]/]*\>)", line)[0] - #should not have * - attrs = _re.findall("(\S*?\=\".*?\")", line) - output.write(start + elem_start) - number_chars = len(start + elem_start) - for attr in attrs: - if (attrs.index(attr) + 1) == len(attrs): - number_chars = number_chars + len(elem_finished) - if (number_chars + len(attr) + 1) > width: - output.write("\n") - for i in range(len(start + elem_start) + 1): + if not ignore_contents: + try: + elem_start = _re.findall("(\<\W{0,1}\w+:\w+) ?", line)[0] + elem_finished = _re.findall("([?|\]\]/|\-\-]*\>)", line)[0] + #should not have * + attrs = _re.findall("(\S*?\=\".*?\")", line) + output.write(start + elem_start) + number_chars = len(start + elem_start) + for attr in attrs: + if (attrs.index(attr) + 1) == len(attrs): + number_chars = number_chars + len(elem_finished) + if (number_chars + len(attr) + 1) > width: + output.write("\n") + for i in range(len(start + elem_start) + 1): + output.write(" ") + number_chars = len(start + elem_start) + 1 + else: output.write(" ") - number_chars = len(start + elem_start) + 1 - else: - output.write(" ") - number_chars = number_chars + 1 - output.write(attr) - number_chars = number_chars + len(attr) - output.write(elem_finished + "\n") - except IndexError: - #give up pretty print this line + number_chars = number_chars + 1 + output.write(attr) + number_chars = number_chars + len(attr) + output.write(elem_finished + "\n") + except IndexError: + #give up pretty print this line + output.write(start + line + "\n") + else: output.write(start + line + "\n") @@ -80,7 +83,8 @@ def _get_next_elem(data): start_pos = data.find("<") end_pos = data.find(">") + 1 retval = data[start_pos:end_pos] - stopper = retval.rfind("/") + stopper = retval.rfind("/") + ignore_contents = False if stopper < retval.rfind("\""): stopper = -1 single = (stopper > -1 and ((retval.find(">") - stopper) < (stopper - retval.find("<")))) @@ -89,11 +93,19 @@ def _get_next_elem(data): ignore_question = retval.find(" -1 if ignore_excl: + ignore_contents = True cdata = retval.find(" -1 if cdata: end_pos = data.find("]]>") if end_pos > -1: end_pos = end_pos + len("]]>") + stopper = end_pos + else: + end_pos = data.find("-->") + if end_pos > -1: + end_pos = end_pos + len("-->") + stopper = end_pos + retval = data[start_pos:end_pos] elif ignore_question: end_pos = data.find("?>") + len("?>") @@ -101,11 +113,12 @@ def _get_next_elem(data): no_indent = ignore or single - #print retval, end_pos, start_pos, stopper > -1, no_indent + return start_pos, \ end_pos, \ stopper > -1, \ - no_indent + no_indent, \ + ignore_contents def get_pprint(xml, indent=4, width=80): """Returns the pretty printed xml """ @@ -116,6 +129,8 @@ def get_pprint(xml, indent=4, width=80): self.output += string out = out() pprint(xml, output=out, indent=indent, width=width) + + return out.output @@ -126,7 +141,7 @@ def pprint(xml, output=_sys.stdout, indent=4, width=80): Use indent to select indentation level. Default is 4 """ data = xml indent_level = 0 - start_pos, end_pos, is_stop, no_indent = _get_next_elem(data) + start_pos, end_pos, is_stop, no_indent, ignore_contents = _get_next_elem(data) while ((start_pos > -1 and end_pos > -1)): _pprint_elem_content(indent_level, data[:start_pos].strip(), output=output) @@ -136,7 +151,8 @@ def pprint(xml, output=_sys.stdout, indent=4, width=80): _pprint_line(indent_level, data[:end_pos - start_pos], width=width, - output=output) + output=output, + ignore_contents=ignore_contents) data = data[end_pos - start_pos:] if not is_stop and not no_indent : indent_level = indent_level + indent @@ -144,7 +160,7 @@ def pprint(xml, output=_sys.stdout, indent=4, width=80): if not data: break else: - start_pos, end_pos, is_stop, no_indent = _get_next_elem(data) + start_pos, end_pos, is_stop, no_indent, ignore_contents = _get_next_elem(data) if __name__ == "__main__": diff --git a/packages/addons/driver/sundtek-mediatv/source/resources/settings.xml b/packages/addons/driver/sundtek-mediatv/source/resources/settings.xml index ed726ace1e..31535caf84 100644 --- a/packages/addons/driver/sundtek-mediatv/source/resources/settings.xml +++ b/packages/addons/driver/sundtek-mediatv/source/resources/settings.xml @@ -27,13 +27,11 @@ - + -