diff --git a/packages/addons/service/emby4/changelog.txt b/packages/addons/service/emby4/changelog.txt new file mode 100644 index 0000000000..fe01f1b4fe --- /dev/null +++ b/packages/addons/service/emby4/changelog.txt @@ -0,0 +1,2 @@ +100 +- Initial release diff --git a/packages/addons/service/emby4/icon/icon.png b/packages/addons/service/emby4/icon/icon.png new file mode 100644 index 0000000000..2674bc985b Binary files /dev/null and b/packages/addons/service/emby4/icon/icon.png differ diff --git a/packages/addons/service/emby4/package.mk b/packages/addons/service/emby4/package.mk new file mode 100644 index 0000000000..996560d407 --- /dev/null +++ b/packages/addons/service/emby4/package.mk @@ -0,0 +1,35 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="emby4" +PKG_VERSION="4.0.0.2" +PKG_SHA256="cac3de0f4b75d421719676377bae80274338a493e79c0498c8772e7e51cd8edf" +PKG_REV="100" +PKG_ARCH="any" +PKG_LICENSE="prop." +PKG_SITE="http://emby.media" +PKG_URL="https://github.com/MediaBrowser/Emby.Releases/releases/download/$PKG_VERSION/embyserver-netcore_$PKG_VERSION.zip" +PKG_SOURCE_DIR="system" +PKG_DEPENDS_TARGET="toolchain imagemagick" +PKG_SECTION="service" +PKG_SHORTDESC="Emby Server: a personal media server" +PKG_LONGDESC="Emby Server ($PKG_VERSION) brings your home videos, music, and photos together, automatically converting and streaming your media on-the-fly to any device" +PKG_TOOLCHAIN="manual" + +PKG_IS_ADDON="yes" +PKG_ADDON_NAME="Emby Server 4" +PKG_ADDON_TYPE="xbmc.service" +PKG_ADDON_REQUIRES="tools.ffmpeg-tools:0.0.0 tools.dotnet-runtime:0.0.0" +PKG_MAINTAINER="Anton Voyl (awiouy)" + +addon() { + mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/emby + cp -r $PKG_BUILD/* \ + -d $ADDON_BUILD/$PKG_ADDON_ID/emby + + mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/lib + cp -L $(get_build_dir imagemagick)/.install_pkg/usr/lib/libMagickCore-7.Q16HDRI.so.? \ + $ADDON_BUILD/$PKG_ADDON_ID/lib/ + cp -L $(get_build_dir imagemagick)/.install_pkg/usr/lib/libMagickWand-7.Q16HDRI.so \ + $ADDON_BUILD/$PKG_ADDON_ID/lib/CORE_RL_Wand_.so +} diff --git a/packages/addons/service/emby4/source/bin/emby4.start b/packages/addons/service/emby4/source/bin/emby4.start new file mode 100644 index 0000000000..fde212a96c --- /dev/null +++ b/packages/addons/service/emby4/source/bin/emby4.start @@ -0,0 +1,15 @@ +#!/bin/sh + +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv) + +. /etc/profile +oe_setup_addon service.emby4 + +LD_PRELOAD="$ADDON_DIR/lib/libMagickCore-7.Q16HDRI.so.6 \ + $ADDON_DIR/lib/CORE_RL_Wand_.so" \ +nice -n "$emby_nice" \ +le_dotnet $ADDON_DIR/emby/EmbyServer.dll \ + -programdata $ADDON_HOME \ + -ffmpeg /storage/.kodi/addons/tools.ffmpeg-tools/bin/ffmpeg \ + -ffprobe /storage/.kodi/addons/tools.ffmpeg-tools/bin/ffprobe diff --git a/packages/addons/service/emby4/source/default.py b/packages/addons/service/emby4/source/default.py new file mode 100644 index 0000000000..d45cf2a6dc --- /dev/null +++ b/packages/addons/service/emby4/source/default.py @@ -0,0 +1,46 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv) + +import json +import subprocess +import xbmc +import xbmcaddon +import xbmcgui + + +def jsonrpc(request): + return json.loads(xbmc.executeJSONRPC(json.dumps(request))) + + +def disable_conflicting(conficting, + message='{that} conflicts with {this} and has been disabled'): + is_enabled = {'jsonrpc': '2.0', 'method': 'Addons.GetAddonDetails', 'id': 1, + 'params': {'addonid': conficting, 'properties': ['enabled']}} + disable = {'jsonrpc': '2.0', 'method': 'Addons.SetAddonEnabled', 'id': 1, + 'params': {'addonid': conficting, 'enabled': False}} + try: + if jsonrpc(is_enabled)['result']['addon']['enabled']: + this = xbmcaddon.Addon().getAddonInfo('name') + that = xbmcaddon.Addon(conficting).getAddonInfo('name') + jsonrpc(disable) + dialog = xbmcgui.Dialog() + dialog.ok(this, message.format( + this=this, that=that)) + del dialog + except KeyError: + pass + + +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__': + disable_conflicting('service.emby') + Monitor().waitForAbort() diff --git a/packages/addons/service/emby4/source/resources/language/English/strings.po b/packages/addons/service/emby4/source/resources/language/English/strings.po new file mode 100644 index 0000000000..2e2eea991b --- /dev/null +++ b/packages/addons/service/emby4/source/resources/language/English/strings.po @@ -0,0 +1,14 @@ +# Kodi Media Center language file +# Addon Name: emby4 +# Addon id: service.emby4 +# Addon Provider: Team LibreELEC +msgid "" +msgstr "" + +msgctxt "#30000" +msgid "Configuration" +msgstr "" + +msgctxt "#30001" +msgid "Priority (nice, 0=max, 19=min)" +msgstr "" diff --git a/packages/addons/service/emby4/source/resources/settings.xml b/packages/addons/service/emby4/source/resources/settings.xml new file mode 100644 index 0000000000..2325485e41 --- /dev/null +++ b/packages/addons/service/emby4/source/resources/settings.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/packages/addons/service/emby4/source/settings-default.xml b/packages/addons/service/emby4/source/settings-default.xml new file mode 100644 index 0000000000..8d35529581 --- /dev/null +++ b/packages/addons/service/emby4/source/settings-default.xml @@ -0,0 +1,3 @@ + + 10 + diff --git a/packages/addons/service/emby4/source/system.d/service.emby4.service b/packages/addons/service/emby4/source/system.d/service.emby4.service new file mode 100644 index 0000000000..2a395f625b --- /dev/null +++ b/packages/addons/service/emby4/source/system.d/service.emby4.service @@ -0,0 +1,13 @@ +[Unit] +Description=Emby 4 - streaming server +Documentation=http://emby.media +Wants=kodi.service +After=kodi.service +Conflicts=service.emby.service + +[Service] +ExecStart=/bin/sh /storage/.kodi/addons/service.emby4/bin/emby4.start +Restart=always + +[Install] +WantedBy=kodi.service