From 2d60480df3f5091e3f14d69b6ceb6f976624418a Mon Sep 17 00:00:00 2001
From: Matt <mcarlton00@gmail.com>
Date: Sat, 13 Mar 2021 20:13:40 -0500
Subject: [PATCH] Rework people sync to avoid exception program flow

---
 jellyfin_kodi/objects/kodi/kodi.py | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/jellyfin_kodi/objects/kodi/kodi.py b/jellyfin_kodi/objects/kodi/kodi.py
index 33dc864a..a6bb77c9 100644
--- a/jellyfin_kodi/objects/kodi/kodi.py
+++ b/jellyfin_kodi/objects/kodi/kodi.py
@@ -163,21 +163,22 @@ class Kodi(object):
         return self.cursor.lastrowid
 
     def _get_person(self, *args):
-        try:
+        '''Retrieve person from the database, or add them if they don't exist
+        '''
+        resp = self.cursor.execute(QU.get_person, args).fetchone()
+        if len(resp) > 0:
+            return resp[0]
+        else:
             return self.add_person(*args)
-        except IntegrityError:
-            # The person already exists in the database
-            # Now we can do the expensive operation of fetching the id
-            self.cursor.execute(QU.get_person, args)
-            return self.cursor.fetchone()[0]
 
     def get_person(self, *args):
-        try:
-            return self._people_cache[args]
-        except KeyError:
+        '''Retrieve person from cache, else forward to db query
+        '''
+        person_id = self._people_cache.get(args)
+        if not person_id:
             person_id = self._get_person(*args)
             self._people_cache[args] = person_id
-            return person_id
+        return person_id
 
     def add_genres(self, genres, *args):