A 4 éve
szülő
commit
2e53e781df
3 módosított fájl, 31 hozzáadás és 22 törlés
  1. 3 3
      src/consts.py
  2. 7 9
      src/playserver.py
  3. 21 10
      src/plugin.py

+ 3 - 3
src/consts.py

@@ -173,7 +173,6 @@ def get_storage(name):
 
 def load_session():
     internal_storage = get_storage("session")
-
     if not ("user_id" in internal_storage):
         return None, None
 
@@ -183,12 +182,12 @@ def load_session():
 def clear_session():
     global PORTAL_USERID, PORTAL_SESSION
 
-    output("Clear!!!!!")
-
     internal_storage = PLUGIN.get_storage("session")
     if not ("user_id" in internal_storage):
         return None, None
 
+    output("[SESSION] Clearing!!!!!")
+
     del internal_storage["user_id"]
     del internal_storage["session_hash"]
     internal_storage.sync()
@@ -218,6 +217,7 @@ def read_settings():
 
     PORTAL_USERNAME = PLUGIN.get_setting("username")
     PORTAL_PASSWORD = PLUGIN.get_setting("password")
+
     PORTAL_USERID, PORTAL_SESSION = load_session()
 
     API_URL = ""

+ 7 - 9
src/playserver.py

@@ -39,7 +39,7 @@ class __PlayServer__(object):
         self._episode_id = 0
         self._started = False
         self._last_progress = None
-
+        self._exit_requested = False
         self._running_since = 0
         self._times = {}
         self._player = xbmc.Player()
@@ -68,7 +68,7 @@ class __PlayServer__(object):
 
     def __play_end__(self, __episode_id__):
         self._started = False
-        
+
         if not __episode_id__ or not (__episode_id__ in self._times):
             return
 
@@ -94,7 +94,7 @@ class __PlayServer__(object):
             if not request:
                 return False
 
-            matches = re.search(r"^([^\s]+) /([^/]+)(?:/([^/]+))?/ HTTP", request, re.IGNORECASE | re.MULTILINE)
+            matches = re.search(r"^([^\s]+) /([^/]+)(?:/([^/]+))?/[^\s]* HTTP", request, re.IGNORECASE | re.MULTILINE)
             if matches:
                 output("[SERVER-" + str(self._port) + "] Request: %s" % str([matches.group(i + 1) for i in xrange(len(matches.groups()))]))
 
@@ -108,7 +108,7 @@ class __PlayServer__(object):
                 else:
                     if command == "exit":
                         __client_socket__.send("HTTP/1.1 200 OK\r\nContent-Length: 2\r\nContent-Type: text/plain\r\nConnection: close\r\n\r\nOK")
-
+                        self._exit_requested = True
                         output("[SERVER-" + str(self._port) + "] Playserver will be closed")
                         self._running = False
                         return True
@@ -331,7 +331,7 @@ class __PlayServer__(object):
                 if is_playing:
                     current_file = self._player.getPlayingFile()
 
-                aborted = monitor.abortRequested() > 0 or not self._running
+                aborted = monitor.abortRequested() > 0 or not self._running or self._exit_requested
                 output("[SERVER-" + str(self._port) + "] Idle abort: %s / file: %s" % (aborted, current_file))
 
                 self.__track__(aborted)
@@ -361,10 +361,8 @@ class __PlayServer__(object):
                 else:
                     current_file = None
 
-            #ifdef DEBUG
-            if server:
-                PLUGIN.notify("Playserver %s closed" % self._port)
-            #endif
+            if self._exit_requested or DEBUG:
+                PLUGIN.notify("Playserver wurde beendet")
 
             try:
                 if server:

+ 21 - 10
src/plugin.py

@@ -5,6 +5,7 @@ from consts import *
 import datetime
 import pprint
 import copy
+import urllib
 
 
 @PLUGIN.route("/empty/", name="empty", update=False, cache=True)
@@ -408,10 +409,7 @@ def play_episode(episode_id=0, ask_playlist=0):
 
     # Main Episode
     episode = episode_result["data"]
-    path = "http://127.0.0.1:%s/play/%s/" % (play_port, episode["id"])
-
     li = copy.copy(item)
-    li["path"] = path
     li["properties"] = {
         "MovieID": unicode(episode["id"])
     }
@@ -429,16 +427,14 @@ def play_episode(episode_id=0, ask_playlist=0):
         else:
             li["info"]["tagline"] = tagline
 
+    li["path"] = path = "http://127.0.0.1:%s/play/%s/%s.mkv" % (play_port, episode["id"], urllib.quote(li["label"]))
     li = PLUGIN._listitemify(li).as_xbmc_listitem()
     playlist.add(path, li)
 
     # Playlist episodes
     if "next_episodes" in episode_result["data"]:
         for episode in episode_result["data"]["next_episodes"]:
-            path = "http://127.0.0.1:%s/play/%s/" % (play_port, episode["id"])
-
             li = copy.copy(item)
-            li["path"] = path
             li["properties"] = {
                 "MovieID": unicode(episode["id"])
             }
@@ -456,9 +452,15 @@ def play_episode(episode_id=0, ask_playlist=0):
                 else:
                     li["info"]["tagline"] = tagline
 
+            li["path"] = path = "http://127.0.0.1:%s/play/%s/%s.mkv" % (play_port, episode["id"], urllib.quote(li["label"]))
             li = PLUGIN._listitemify(li).as_xbmc_listitem()
             playlist.add(path, li)
 
+    #ifdef DEBUG
+    for idx in range(playlist.size()):
+        output("[PLAY] %s - Item %s" % (idx, playlist[idx].getPath()))
+    #endif
+
     first = playlist[0]
     if first:
         episode_id = first.getProperty("MovieID")
@@ -653,7 +655,7 @@ def account_logout():
     return None
 
 
-@PLUGIN.route("/stop_playserver/", name="stop_playserver", cache=True)
+@PLUGIN.route("/stop_playserver/", name="stop_playserver", cache=False)
 def stop_playserver():
     server = get_storage("server")
     if server is None or not ("port" in server) or server["port"] == 0:
@@ -661,7 +663,7 @@ def stop_playserver():
 
     else:
         try:
-            client = socket.create_connection(("127.0.0.1", server["port"]), timeout=5)
+            client = socket.create_connection(("127.0.0.1", server["port"]), timeout=10)
             if client:
                 client.send("GET /exit/ HTTP/1.1")
                 client.close()
@@ -671,10 +673,13 @@ def stop_playserver():
         except:
             PLUGIN.notify("Playserver konnte nicht beendet werden!")
             output("[SERVER] Stop error: %s" % traceback.format_exc())
-            __PlayServer__.__save___(0, 0)
+
+        finally:
+            __PlayServer__.__save__(0, 0)
 
     return empty()
 
+
 # Main
 
 
@@ -921,10 +926,16 @@ def main():
 
 
 def __run():
+    output("==================================== START ====================================")
+
     try:
         PLUGIN.run()
-    finally:
+    except:
         hide_busy_dialog()
+        raise
+
+    finally:
+        output("==================================== END ====================================")
 
         try:
             os.chdir(os.path.dirname(os.path.abspath(__file__)))