diff --git a/script.moonlight/LICENSE.txt b/LICENSE.txt similarity index 100% rename from script.moonlight/LICENSE.txt rename to LICENSE.txt diff --git a/script.moonlight/addon.py b/script.moonlight/addon.py index 610884e..2ad7b34 100644 --- a/script.moonlight/addon.py +++ b/script.moonlight/addon.py @@ -9,7 +9,7 @@ import urlparse import sys import os -from resources.moonlight import LibGameStream +from lib.moonlight import LibGameStream base_url = sys.argv[0] addon_handle = int(sys.argv[1]) @@ -25,22 +25,22 @@ def build_url(query): def index(): gs = LibGameStream(addon.getAddonInfo("path") + "/lib") - + address = addon.getSetting("MOON_SERVER_IP") if address == "0.0.0.0": address = gs.discover_server() - + if not gs.connect_server(address, os.path.join(addon_base_path, "keys")): dialog = xbmcgui.Dialog() dialog.ok("Error", "Failed connect to server (%s)" % (address)) return - + if not gs.isPaired(): pin = "%d%d%d%d" % (random.randint(0,9), random.randint(0,9), random.randint(0,9), random.randint(0,9)) - + dialog = xbmcgui.Dialog() dialog.notification("PIN code", "Insert the pin code in server: %s" % pin, xbmcgui.NOTIFICATION_INFO, 10000) - + if gs.pair(pin): dialog = xbmcgui.Dialog() dialog.ok("Paired", "Succesfully paired") @@ -48,24 +48,24 @@ def index(): dialog = xbmcgui.Dialog() dialog.ok("Error", "Failed to pair to server, try again") return - + for appId, name in gs.applist(): base_path = os.path.join(addon_base_path, "images") - + if not os.path.exists(base_path): os.makedirs(base_path) - + poster_path = os.path.join(base_path, str(appId) + ".png") - + if not os.path.isfile(poster_path): gs.poster(appId, base_path) xbmc.sleep(100) - - xbmcplugin.addDirectoryItem(handle=addon_handle, + + xbmcplugin.addDirectoryItem(handle=addon_handle, url=build_url({"mode": "stream", "app": name}), listitem=xbmcgui.ListItem(label=name, thumbnailImage=poster_path), isFolder=False) - + xbmcplugin.endOfDirectory(addon_handle) def stream(app = None): diff --git a/script.moonlight/bin/mappings/default.conf b/script.moonlight/bin/mappings/default.conf deleted file mode 100644 index a3e318c..0000000 --- a/script.moonlight/bin/mappings/default.conf +++ /dev/null @@ -1,32 +0,0 @@ -abs_x = 0 -abs_y = 1 -abs_z = 2 -abs_rx = 3 -abs_ry = 4 -abs_rz = 5 -abs_deadzone = 0 -abs_dpad_y = 16 -abs_dpad_x = 17 -reverse_x = false -reverse_y = true -reverse_rx = false -reverse_ry = true -reverse_dpad_y = false -reverse_dpad_x = false -btn_south = 304 -btn_east = 305 -btn_north = 307 -btn_west = 308 -btn_select = 314 -btn_start = 315 -btn_mode = 316 -btn_thumbl = 317 -btn_thumbr = 318 -btn_tl = 310 -btn_tr = 311 -btn_tl2 = 312 -btn_tr2 = 313 -btn_dpad_up = 544 -btn_dpad_down = 545 -btn_dpad_left = 546 -btn_dpad_right = 547 diff --git a/script.moonlight/bin/mappings/dualshock3.conf b/script.moonlight/bin/mappings/dualshock3.conf deleted file mode 100644 index acb5739..0000000 --- a/script.moonlight/bin/mappings/dualshock3.conf +++ /dev/null @@ -1,32 +0,0 @@ -abs_x = 0 -abs_y = 1 -abs_z = -1 -abs_rx = 2 -abs_ry = 3 -abs_rz = -1 -abs_deadzone = 0 -abs_dpad_x = -1 -abs_dpad_y = -1 -reverse_x = false -reverse_y = false -reverse_rx = false -reverse_ry = false -reverse_dpad_x = false -reverse_dpad_y = false -btn_west = 303 -btn_south = 302 -btn_north = 300 -btn_east = 301 -btn_select = 288 -btn_start = 291 -btn_mode = 304 -btn_thumbl = 289 -btn_thumbr = 290 -btn_tl = 298 -btn_tr = 299 -btn_tl2 = 296 -btn_tr2 = 297 -btn_dpad_up = 292 -btn_dpad_down = 294 -btn_dpad_left = 295 -btn_dpad_right = 293 \ No newline at end of file diff --git a/script.moonlight/bin/mappings/dualshock3alt.conf b/script.moonlight/bin/mappings/dualshock3alt.conf deleted file mode 100644 index fdd40f0..0000000 --- a/script.moonlight/bin/mappings/dualshock3alt.conf +++ /dev/null @@ -1,32 +0,0 @@ -abs_x = 0 -abs_y = 1 -abs_z = 48 -abs_rx = 2 -abs_ry = 5 -abs_rz = 49 -abs_deadzone = 0 -abs_dpad_x = -1 -abs_dpad_y = -1 -reverse_x = false -reverse_y = true -reverse_rx = false -reverse_ry = true -reverse_dpad_x = false -reverse_dpad_y = false -btn_west = 303 -btn_south = 302 -btn_north = 300 -btn_east = 301 -btn_select = 288 -btn_start = 291 -btn_mode = 304 -btn_thumbl = 289 -btn_thumbr = 290 -btn_tl = 298 -btn_tr = 299 -btn_tl2 = 296 -btn_tr2 = 297 -btn_dpad_up = 292 -btn_dpad_down = 294 -btn_dpad_left = 295 -btn_dpad_right = 293 \ No newline at end of file diff --git a/script.moonlight/bin/mappings/dualshock4.conf b/script.moonlight/bin/mappings/dualshock4.conf deleted file mode 100644 index 8d6a4b9..0000000 --- a/script.moonlight/bin/mappings/dualshock4.conf +++ /dev/null @@ -1,32 +0,0 @@ -abs_x = 0 -abs_y = 1 -abs_z = 3 -abs_rx = 2 -abs_ry = 5 -abs_rz = 4 -abs_deadzone = 0 -abs_dpad_x = 16 -abs_dpad_y = 17 -reverse_x = false -reverse_y = true -reverse_rx = false -reverse_ry = true -reverse_dpad_x = false -reverse_dpad_y = false -btn_west = 304 -btn_south = 305 -btn_north = 307 -btn_east = 306 -btn_select = 312 -btn_start = 313 -btn_mode = 316 -btn_thumbl = 314 -btn_thumbr = 315 -btn_tl = 308 -btn_tr = 309 -btn_tl2 = 310 -btn_tr2 = 311 -btn_dpad_up = -1 -btn_dpad_down = -1 -btn_dpad_left = -1 -btn_dpad_right = -1 diff --git a/script.moonlight/bin/mappings/rumblepad2.conf b/script.moonlight/bin/mappings/rumblepad2.conf deleted file mode 100644 index 6cd1258..0000000 --- a/script.moonlight/bin/mappings/rumblepad2.conf +++ /dev/null @@ -1,31 +0,0 @@ -abs_x = 0 -abs_y = 1 -abs_z = -1 -reverse_x = false -reverse_y = true -abs_rx = 2 -abs_ry = 5 -abs_rz = -1 -reverse_rx = false -reverse_ry = true -abs_dpad_x = 16 -abs_dpad_y = 17 -reverse_dpad_x = false -reverse_dpad_y = false -btn_north = 291 -btn_east = 290 -btn_south = 289 -btn_west = 288 -btn_select = 297 -btn_start = 296 -btn_mode = 0 -btn_thumbl = 298 -btn_thumbr = 299 -btn_tl = 292 -btn_tr = 293 -btn_tl2 = 294 -btn_tr2 = 295 -btn_dpad_up = -1 -btn_dpad_down = -1 -btn_dpad_left = -1 -btn_dpad_right = -1 diff --git a/script.moonlight/bin/mappings/xbox360.conf b/script.moonlight/bin/mappings/xbox360.conf deleted file mode 100644 index 37480b2..0000000 --- a/script.moonlight/bin/mappings/xbox360.conf +++ /dev/null @@ -1,32 +0,0 @@ -abs_x = 0 -abs_y = 1 -abs_z = 2 -abs_rx = 3 -abs_ry = 4 -abs_rz = 5 -abs_deadzone = 0 -abs_dpad_x = 16 -abs_dpad_y = 17 -reverse_x = false -reverse_y = true -reverse_rx = false -reverse_ry = true -reverse_dpad_x = false -reverse_dpad_y = false -btn_east = 305 -btn_south = 304 -btn_north = 308 -btn_west = 307 -btn_select = 314 -btn_start = 315 -btn_mode = 316 -btn_thumbl = 317 -btn_thumbr = 318 -btn_tl = 310 -btn_tr = 311 -btn_tl2 = -1 -btn_tr2 = -1 -btn_dpad_up = -1 -btn_dpad_down = -1 -btn_dpad_left = -1 -btn_dpad_right = -1 diff --git a/script.moonlight/bin/moonlight b/script.moonlight/bin/moonlight deleted file mode 100644 index 5437bd0..0000000 Binary files a/script.moonlight/bin/moonlight and /dev/null differ diff --git a/script.moonlight/bin/service.sh b/script.moonlight/bin/moonlight.sh similarity index 84% rename from script.moonlight/bin/service.sh rename to script.moonlight/bin/moonlight.sh index 4a4ae38..967c6e0 100644 --- a/script.moonlight/bin/service.sh +++ b/script.moonlight/bin/moonlight.sh @@ -4,18 +4,13 @@ oe_setup_addon script.moonlight -chmod a+x $ADDON_DIR/bin/* +while [ 1 ]; do + if [ -f $ADDON_DIR/start_moonlight.tmp ]; then -while [ 1 ] -do - if [ -f $ADDON_DIR/start_moonlight.tmp ] - then - oe_setup_addon script.moonlight - MOONLIGHT_APP=`cat $ADDON_DIR/start_moonlight.tmp` - + rm $ADDON_DIR/start_moonlight.tmp - + MOONLIGHT_ARG="stream" if [ "$MOON_PACKETSIZE" != "0" ]; then @@ -59,36 +54,34 @@ do if [ "$MOON_REMOTE" = "true" ]; then MOONLIGHT_ARG="$MOONLIGHT_ARG -remote" fi - + if [ "$MOON_AUDIO" != "sysdefault" ]; then MOONLIGHT_ARG="$MOONLIGHT_ARG -audio $MOON_AUDIO" fi if [ "$MOON_MAPPING" != "" ]; then - MOONLIGHT_ARG="$MOONLIGHT_ARG -mapping \"${ADDON_DIR}/bin/mappings/${MOON_MAPPING}.conf\"" + MOONLIGHT_ARG="$MOONLIGHT_ARG -mapping \"${ADDON_DIR}/share/moonlight/mappings/${MOON_MAPPING}.conf\"" fi - + if [ "$MOONLIGHT_APP" != "" ]; then MOONLIGHT_ARG="$MOONLIGHT_ARG -app \"${MOONLIGHT_APP}\"" fi - + MOONLIGHT_ARG="$MOONLIGHT_ARG -keydir \"${ADDON_HOME}/keys\"" if [ "$MOON_SERVER_IP" != "0.0.0.0" ]; then MOONLIGHT_ARG="$MOONLIGHT_ARG $MOON_SERVER_IP" fi - - if pgrep "kodi.bin" > /dev/null - then + + if pgrep "kodi.bin" > /dev/null; then systemctl stop kodi fi - - modprobe snd_bcm2835 + + modprobe snd_bcm2835 || : echo $MOONLIGHT_ARG >> $ADDON_LOG_FILE /bin/sh -c "${ADDON_DIR}/bin/moonlight ${MOONLIGHT_ARG} > ${ADDON_LOG_FILE} 2>&1" - rmmod snd_bcm2835 + rmmod snd_bcm2835 || : systemctl start kodi fi - sleep 1 done diff --git a/script.moonlight/resources/__init__.py b/script.moonlight/lib/__init__.py similarity index 100% rename from script.moonlight/resources/__init__.py rename to script.moonlight/lib/__init__.py diff --git a/script.moonlight/lib/libcrypto.so.32 b/script.moonlight/lib/libcrypto.so.32 deleted file mode 100644 index a45dc96..0000000 Binary files a/script.moonlight/lib/libcrypto.so.32 and /dev/null differ diff --git a/script.moonlight/lib/libevdev.so.2.1.12 b/script.moonlight/lib/libevdev.so.2.1.12 deleted file mode 100644 index 2137280..0000000 Binary files a/script.moonlight/lib/libevdev.so.2.1.12 and /dev/null differ diff --git a/script.moonlight/lib/libgamestream.so.0 b/script.moonlight/lib/libgamestream.so.0 deleted file mode 100644 index f4f6c37..0000000 Binary files a/script.moonlight/lib/libgamestream.so.0 and /dev/null differ diff --git a/script.moonlight/lib/libmoonlight-common.so.0 b/script.moonlight/lib/libmoonlight-common.so.0 deleted file mode 100644 index 0d5caed..0000000 Binary files a/script.moonlight/lib/libmoonlight-common.so.0 and /dev/null differ diff --git a/script.moonlight/lib/libmoonlight-pi.so b/script.moonlight/lib/libmoonlight-pi.so deleted file mode 100644 index c54bc4a..0000000 Binary files a/script.moonlight/lib/libmoonlight-pi.so and /dev/null differ diff --git a/script.moonlight/lib/libopus.so.0 b/script.moonlight/lib/libopus.so.0 deleted file mode 100644 index 70aa5d9..0000000 Binary files a/script.moonlight/lib/libopus.so.0 and /dev/null differ diff --git a/script.moonlight/lib/libssl.so.32 b/script.moonlight/lib/libssl.so.32 deleted file mode 100644 index 7ada851..0000000 Binary files a/script.moonlight/lib/libssl.so.32 and /dev/null differ diff --git a/script.moonlight/resources/moonlight.py b/script.moonlight/lib/moonlight.py similarity index 94% rename from script.moonlight/resources/moonlight.py rename to script.moonlight/lib/moonlight.py index 49ca01c..5fde41c 100644 --- a/script.moonlight/resources/moonlight.py +++ b/script.moonlight/lib/moonlight.py @@ -38,76 +38,75 @@ class LibGameStream: self.connected = False self.address = "" self.key_dir = "" - + def discover_server(self): addr = ctypes.create_string_buffer('\000' * 40) self.gslib.gs_discover_server(addr) return addr.value - + def connect_server(self, address, key_dir = ""): self.server = ctypes.pointer(SERVER_DATA(address, False, False, 0, 0)) self.address = address - + if key_dir == "": if "XDG_CONFIG_DIR" in os.environ: key_dir = os.path.join(os.environ["XDG_CONFIG_DIR"], "moonlight") else: key_dir = os.path.join(os.environ["HOME"], ".cache", "moonlight") - - self.key_dir = key_dir + + self.key_dir = key_dir ret = self.gslib.gs_init(self.server, ctypes.c_char_p(key_dir)) if ret == GS_OK: self.connected = True return True return False - + def isPaired(self): if not self.connected: return False - + return self.server[0].paired - + def applist(self): if not self.connected: return None - + lst = [] applst_ptr = ctypes.POINTER(APP_LIST) applst = applst_ptr() - + ret = self.gslib.gs_applist(self.server, ctypes.byref(applst)) if ret != GS_OK: return None - + while applst: lst.append((applst[0].id, applst[0].name)) applst = applst[0].next - + return lst - + def poster(self, appId, toFolder): unique_id = "" with open(os.path.join(self.key_dir, "uniqueid.dat"), "r") as f: unique_id = f.read() - + uid = uuid4() url = "https://%s:47984/appasset?uniqueid=%s&uuid=%s&appid=%d&AssetType=2&AssetIdx=0" % (self.address, unique_id, str(uid), appId) - + self.gslib.http_create_data.restype = ctypes.POINTER(_HTTP_DATA) data = self.gslib.http_create_data(); self.gslib.http_request(ctypes.c_char_p(url), data) - + barray = bytearray(data[0].memory[0:data[0].size]) - + with open(os.path.join(toFolder, str(appId) + ".png"), "wb") as f: f.write(barray) - + self.gslib.http_free_data(data); - + def pair(self, pin): if not self.connected: return None - + ret = self.gslib.gs_pair(self.server, ctypes.c_char_p(pin)) return ret == GS_OK - \ No newline at end of file diff --git a/script.moonlight/service.py b/script.moonlight/service.py deleted file mode 100644 index 792d600..0000000 --- a/script.moonlight/service.py +++ /dev/null @@ -1 +0,0 @@ -# diff --git a/script.moonlight/system.d/script.moonlight.service b/script.moonlight/system.d/script.moonlight.service index 432d6cd..068b3af 100644 --- a/script.moonlight/system.d/script.moonlight.service +++ b/script.moonlight/system.d/script.moonlight.service @@ -4,11 +4,11 @@ After=graphical.target [Service] Type=idle -ExecStart=/bin/sh -c "exec sh /storage/.kodi/addons/script.moonlight/bin/service.sh" +ExecStart=/bin/sh -c "exec sh /storage/.kodi/addons/script.moonlight/bin/moonlight.sh" TimeoutStopSec=1 Restart=always RestartSec=2 StartLimitInterval=0 [Install] -WantedBy=kodi.target \ No newline at end of file +WantedBy=kodi.target