diff --git a/packages/addons/addon-depends/dtv-scan-tables/package.mk b/packages/addons/addon-depends/dtv-scan-tables/package.mk new file mode 100644 index 0000000000..733d5da365 --- /dev/null +++ b/packages/addons/addon-depends/dtv-scan-tables/package.mk @@ -0,0 +1,17 @@ +# SPDX-License-Identifier: GPL-2.0-only +# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="dtv-scan-tables" +PKG_VERSION="2022-04-30-57ed29822750" +PKG_SHA256="6a6268aa392459378fa3a13922fc015a3fa63ff822f4b0d64d33d71350a6ec9e" +PKG_LICENSE="GPL" +PKG_SITE="https://git.linuxtv.org/dtv-scan-tables.git" +PKG_URL="https://linuxtv.org/downloads/dtv-scan-tables/dtv-scan-tables-${PKG_VERSION}.tar.bz2" +PKG_DEPENDS_TARGET="toolchain" +PKG_LONGDESC="Digital TV scan tables." +PKG_TOOLCHAIN="manual" +PKG_BUILD_FLAGS="-sysroot" + +makeinstall_target() { + make -C share/dvb install DATADIR=${INSTALL}/usr/share +} diff --git a/packages/addons/addon-depends/tvh-dtv-scan-tables/package.mk b/packages/addons/addon-depends/tvh-dtv-scan-tables/package.mk deleted file mode 100644 index a0e136f661..0000000000 --- a/packages/addons/addon-depends/tvh-dtv-scan-tables/package.mk +++ /dev/null @@ -1,17 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv) - -PKG_NAME="tvh-dtv-scan-tables" -PKG_VERSION="6bb0a70a0dcb97d5457c1ef4a7ccce634ea419b0" -PKG_SHA256="a5f375d28e52ff3f527fecb7968f3ede6bc2e128d1ad78537ab4f0f7844edb45" -PKG_LICENSE="GPL" -PKG_SITE="https://github.com/tvheadend" -PKG_URL="https://github.com/tvheadend/dtv-scan-tables/archive/${PKG_VERSION}.tar.gz" -PKG_DEPENDS_TARGET="toolchain" -PKG_LONGDESC="Digital TV scan tables, a fork from Tvh to support more recent tables." -PKG_TOOLCHAIN="manual" -PKG_BUILD_FLAGS="-sysroot" - -makeinstall_target() { - make install DATADIR=${INSTALL}/usr/share -} diff --git a/packages/addons/service/tvheadend42/package.mk b/packages/addons/service/tvheadend42/package.mk index 220dd77b2a..c6bdc618d0 100644 --- a/packages/addons/service/tvheadend42/package.mk +++ b/packages/addons/service/tvheadend42/package.mk @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: GPL-2.0 +# SPDX-License-Identifier: GPL-2.0-only # Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv) PKG_NAME="tvheadend42" @@ -11,7 +11,7 @@ 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 pngquant:host Python3:host tvh-dtv-scan-tables" + libiconv openssl pngquant:host Python3:host dtv-scan-tables" PKG_DEPENDS_CONFIG="ffmpegx" PKG_SECTION="service" PKG_SHORTDESC="Tvheadend: a TV streaming server for Linux" @@ -129,6 +129,6 @@ addon() { # dvb-scan files mkdir -p ${ADDON_BUILD}/${PKG_ADDON_ID}/dvb-scan - cp -r $(get_install_dir tvh-dtv-scan-tables)/usr/share/dvbv5/* \ + cp -r $(get_install_dir dtv-scan-tables)/usr/share/dvbv5/* \ ${ADDON_BUILD}/${PKG_ADDON_ID}/dvb-scan } diff --git a/packages/addons/service/tvheadend42/source/download.py b/packages/addons/service/tvheadend42/source/download.py index eb672e0740..9be581bc48 100644 --- a/packages/addons/service/tvheadend42/source/download.py +++ b/packages/addons/service/tvheadend42/source/download.py @@ -1,67 +1,56 @@ -# SPDX-License-Identifier: GPL-2.0 +# SPDX-License-Identifier: GPL-2.0-only # 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 os import shutil -import sys +import urllib.request +import subprocess +import re +import xbmc, xbmcvfs, xbmcgui, xbmcaddon -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') +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__': +def clear_directory(directory): try: - if sys.argv[1] == 'getscantables': - dl = DownLoader() - dl.download(url, archive) - except IndexError: - pass + for file_name in os.listdir(directory): + file_path = os.path.join(directory, file_name) + if os.path.isfile(file_path): + os.unlink(file_path) + elif os.path.isdir(file_path): + shutil.rmtree(file_path) + except Exception as e: + xbmcgui.Dialog().notification(ADDON_NAME, LS(30041), xbmcgui.NOTIFICATION_INFO) + exit(1) + +def download_and_extract(url, destination, extract_path): + try: + # Download the file + urllib.request.urlretrieve(url, destination) + + # Extract the file to the specified directory, ignoring the root path + subprocess.run(["tar", "xf", destination, "--strip-components=3", "-C", extract_path]) + + except Exception as e: + xbmcgui.Dialog().notification(ADDON_NAME, LS(30040), xbmcgui.NOTIFICATION_INFO) + exit(1) + + +if __name__ == "__main__": + scan_tables_path = os.path.join(xbmcvfs.translatePath(xbmcaddon.Addon().getAddonInfo("path")), "dvb-scan") + download_url = "https://linuxtv.org/downloads/dtv-scan-tables/dtv-scan-tables-LATEST.tar.bz2" + downloaded_file_path = "/tmp/dtv-scan-tables-LATEST.tar.bz2" + + # Clear the contents of the dvb_scan directory + clear_directory(scan_tables_path) + + # Download and extract the file using subprocess + download_and_extract(download_url, downloaded_file_path, scan_tables_path) + + # Clean up the downloaded file + os.remove(downloaded_file_path) + + # Notify download complete + xbmcgui.Dialog().notification(ADDON_NAME, LS(30039), xbmcgui.NOTIFICATION_INFO) diff --git a/packages/addons/service/tvheadend42/source/resources/language/English/strings.po b/packages/addons/service/tvheadend42/source/resources/language/English/strings.po index 0fef20b349..9f74494037 100644 --- a/packages/addons/service/tvheadend42/source/resources/language/English/strings.po +++ b/packages/addons/service/tvheadend42/source/resources/language/English/strings.po @@ -172,11 +172,3 @@ msgstr "" msgctxt "#30041" msgid "Could not extract zip files" msgstr "" - -msgctxt "#30042" -msgid "Download Scan-Tables" -msgstr "" - -msgctxt "#30043" -msgid "Extract Scan-Tables" -msgstr "" diff --git a/packages/addons/service/tvheadend42/source/resources/settings.xml b/packages/addons/service/tvheadend42/source/resources/settings.xml index 12826f3283..1ffc89b94b 100644 --- a/packages/addons/service/tvheadend42/source/resources/settings.xml +++ b/packages/addons/service/tvheadend42/source/resources/settings.xml @@ -50,6 +50,6 @@ - + diff --git a/packages/addons/service/tvheadend43/package.mk b/packages/addons/service/tvheadend43/package.mk index 4026e1c645..c1a91f419b 100644 --- a/packages/addons/service/tvheadend43/package.mk +++ b/packages/addons/service/tvheadend43/package.mk @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: GPL-2.0 +# SPDX-License-Identifier: GPL-2.0-only # Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv) PKG_NAME="tvheadend43" @@ -11,7 +11,7 @@ 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" + libiconv openssl pcre2 pngquant:host Python3:host dtv-scan-tables" PKG_DEPENDS_CONFIG="ffmpegx" PKG_SECTION="service" PKG_SHORTDESC="Tvheadend: a TV streaming server for Linux" @@ -129,6 +129,6 @@ addon() { # dvb-scan files mkdir -p ${ADDON_BUILD}/${PKG_ADDON_ID}/dvb-scan - cp -r $(get_install_dir tvh-dtv-scan-tables)/usr/share/dvbv5/* \ + cp -r $(get_install_dir dtv-scan-tables)/usr/share/dvbv5/* \ ${ADDON_BUILD}/${PKG_ADDON_ID}/dvb-scan } diff --git a/packages/addons/service/tvheadend43/source/download.py b/packages/addons/service/tvheadend43/source/download.py index eb672e0740..9be581bc48 100644 --- a/packages/addons/service/tvheadend43/source/download.py +++ b/packages/addons/service/tvheadend43/source/download.py @@ -1,67 +1,56 @@ -# SPDX-License-Identifier: GPL-2.0 +# SPDX-License-Identifier: GPL-2.0-only # 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 os import shutil -import sys +import urllib.request +import subprocess +import re +import xbmc, xbmcvfs, xbmcgui, xbmcaddon -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') +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__': +def clear_directory(directory): try: - if sys.argv[1] == 'getscantables': - dl = DownLoader() - dl.download(url, archive) - except IndexError: - pass + for file_name in os.listdir(directory): + file_path = os.path.join(directory, file_name) + if os.path.isfile(file_path): + os.unlink(file_path) + elif os.path.isdir(file_path): + shutil.rmtree(file_path) + except Exception as e: + xbmcgui.Dialog().notification(ADDON_NAME, LS(30041), xbmcgui.NOTIFICATION_INFO) + exit(1) + +def download_and_extract(url, destination, extract_path): + try: + # Download the file + urllib.request.urlretrieve(url, destination) + + # Extract the file to the specified directory, ignoring the root path + subprocess.run(["tar", "xf", destination, "--strip-components=3", "-C", extract_path]) + + except Exception as e: + xbmcgui.Dialog().notification(ADDON_NAME, LS(30040), xbmcgui.NOTIFICATION_INFO) + exit(1) + + +if __name__ == "__main__": + scan_tables_path = os.path.join(xbmcvfs.translatePath(xbmcaddon.Addon().getAddonInfo("path")), "dvb-scan") + download_url = "https://linuxtv.org/downloads/dtv-scan-tables/dtv-scan-tables-LATEST.tar.bz2" + downloaded_file_path = "/tmp/dtv-scan-tables-LATEST.tar.bz2" + + # Clear the contents of the dvb_scan directory + clear_directory(scan_tables_path) + + # Download and extract the file using subprocess + download_and_extract(download_url, downloaded_file_path, scan_tables_path) + + # Clean up the downloaded file + os.remove(downloaded_file_path) + + # Notify download complete + xbmcgui.Dialog().notification(ADDON_NAME, LS(30039), xbmcgui.NOTIFICATION_INFO) diff --git a/packages/addons/service/tvheadend43/source/resources/language/English/strings.po b/packages/addons/service/tvheadend43/source/resources/language/English/strings.po index 3e854ccab1..e0fa4c7b00 100644 --- a/packages/addons/service/tvheadend43/source/resources/language/English/strings.po +++ b/packages/addons/service/tvheadend43/source/resources/language/English/strings.po @@ -172,11 +172,3 @@ msgstr "" msgctxt "#30041" msgid "Could not extract zip files" msgstr "" - -msgctxt "#30042" -msgid "Download Scan-Tables" -msgstr "" - -msgctxt "#30043" -msgid "Extract Scan-Tables" -msgstr "" diff --git a/packages/addons/service/tvheadend43/source/resources/settings.xml b/packages/addons/service/tvheadend43/source/resources/settings.xml index c8299c9cb0..883b500c2b 100644 --- a/packages/addons/service/tvheadend43/source/resources/settings.xml +++ b/packages/addons/service/tvheadend43/source/resources/settings.xml @@ -50,6 +50,6 @@ - +