diff --git a/addon.xml b/addon.xml
index 161574c8a24db2563362a3252cd8b5dc8ac2f6da..0cb4721b3160aa51af00ad2b28222b92104a71e1 100644
--- a/addon.xml
+++ b/addon.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="script.spotify.screensaver"
     name="Spotify Screensaver"
-    version="0.0.17"
+    version="0.0.18"
     provider-name="BenoƮt Harrault">
     <requires>
         <import addon="xbmc.python" version="2.25.0"/>
diff --git a/gui.py b/gui.py
index 4a0728e438cbfb059f4eeae8c0a6c2bc610de992..3b85d2416efbd58d8972226963aab309a5b3d542 100644
--- a/gui.py
+++ b/gui.py
@@ -121,7 +121,7 @@ class GUI(xbmcgui.WindowXMLDialog):
         self.log('spotify event: ' + spotify_event)
         event_split = spotify_event.split(':')
 
-        event_type = event_split[1]
+        event_type = event_split[1] if len(event_split) > 1 else ''
         event_value = event_split[2] if len(event_split) > 2 else ''
 
         if event_type == 'changed' or event_type == 'playing':
@@ -140,7 +140,7 @@ class GUI(xbmcgui.WindowXMLDialog):
         elif event_type == 'volume_set':
             self._unimplemented_event_type(event_type, event_value)
         else:
-            self.log('unknown event type: ' + event_type, xbmc.LOGERROR)
+            self._unknown_event_type(event_type, event_value)
 
     def _unimplemented_event_type(self, event_type, event_value):
         self.log(
@@ -148,6 +148,13 @@ class GUI(xbmcgui.WindowXMLDialog):
             + ' (value: ' + str(event_value) + ')'
         )
 
+    def _unknown_event_type(self, event_type, event_value):
+        self.log(
+            'unknown event type: "' + str(event_type) + '"'
+            + ' (value: "' + str(event_value) + '")',
+            xbmc.LOGERROR
+        )
+
     def _preload_images(self, track_id):
         self.log('preload images for track: ' + track_id)
 
@@ -327,11 +334,31 @@ class GUI(xbmcgui.WindowXMLDialog):
 
     def _get_last_spotify_event(self):
         last_event = ''
+
+        # open file
         try:
             f = open(LIBRESPOT_EVENT_FILE, 'r')
-            last_event = f.readlines()[-1]
-        finally:
-            f.close()
+        except Exception as e:
+            self.log(
+                'failed to get file ' + LIBRESPOT_EVENT_FILE + ': ' + str(e),
+                xbmc.LOGERROR
+            )
+            self.log('sleep 60s...', xbmc.LOGERROR)
+            xbmc.sleep(60000)
+        else:
+            # read file (last line)
+            try:
+                last_event = f.readlines()[-1]
+            except Exception as e:
+                self.log('failed to get content: ' + str(e), xbmc.LOGERROR)
+                self.log('sleep 10s...', xbmc.LOGERROR)
+                xbmc.sleep(10000)
+            else:
+                # close file
+                try:
+                    f.close()
+                except Exception as e:
+                    self.log('failed to close file: ' + str(e), xbmc.LOGERROR)
 
         last_event = ''.join(last_event.splitlines())
         return last_event