mirror of
https://github.com/jellyfin/jellyfin-kodi.git
synced 2024-11-10 04:06:11 +00:00
Offline mode for views
This commit is contained in:
parent
9f355989a6
commit
6be4ffca3d
5 changed files with 61 additions and 7 deletions
|
@ -122,9 +122,27 @@ class Embydb_Functions():
|
|||
views.append({
|
||||
|
||||
'id': row[0],
|
||||
'name': row[1]
|
||||
'name': row[1],
|
||||
'mediatype': mediatype
|
||||
})
|
||||
|
||||
if mediatype in ('tvshows', 'movies'):
|
||||
query = ' '.join((
|
||||
"SELECT view_id, view_name",
|
||||
"FROM view",
|
||||
"WHERE media_type = ?"
|
||||
))
|
||||
|
||||
self.embycursor.execute(query, ("mixed",))
|
||||
rows = self.embycursor.fetchall()
|
||||
for row in rows:
|
||||
views.append({
|
||||
|
||||
'id': row[0],
|
||||
'name': row[1],
|
||||
'mediatype': "mixed"
|
||||
})
|
||||
|
||||
return views
|
||||
|
||||
def getView_byName(self, tagname):
|
||||
|
|
|
@ -372,6 +372,12 @@ class LibrarySync(threading.Thread):
|
|||
# Compare views, assign correct tags to items
|
||||
views.Views(cursor_emby, cursor_video).maintain()
|
||||
|
||||
def offline_mode_views(self):
|
||||
|
||||
with database.DatabaseConn('emby') as cursor_emby:
|
||||
with database.DatabaseConn() as cursor_video:
|
||||
views.Views(cursor_emby, cursor_video).offline_mode()
|
||||
|
||||
def movies(self, embycursor, kodicursor, pdialog):
|
||||
|
||||
# Get movies from emby
|
||||
|
|
|
@ -79,6 +79,9 @@ class Service(object):
|
|||
|
||||
# Clear video nodes properties
|
||||
VideoNodes().clearProperties()
|
||||
# assume offline mode
|
||||
log.info("Loading existing views...")
|
||||
librarysync.LibrarySync().offline_mode_views()
|
||||
|
||||
# Set the minimum database version
|
||||
window('emby_minDBVersion', value="1.1.63")
|
||||
|
|
|
@ -77,7 +77,7 @@ class UserClient(threading.Thread):
|
|||
def verify_server(self):
|
||||
|
||||
try:
|
||||
url = "%s/emby/system/info/public?format=json" % self.get_server()
|
||||
url = "%s/emby/system/info/public?format=json" % self.get_server() # tried system/public but can't get reliable response from the server?
|
||||
self.doutils.downloadUrl(url, authenticate=False)
|
||||
return True
|
||||
except Exception as error:
|
||||
|
@ -147,7 +147,7 @@ class UserClient(threading.Thread):
|
|||
user = self.doutils.downloadUrl("{server}/emby/Users/{UserId}?format=json")
|
||||
settings('username', value=user['Name'])
|
||||
self._user = user
|
||||
|
||||
window('emby.userinfo.json', user)
|
||||
if "PrimaryImageTag" in self._user:
|
||||
window('EmbyUserImage',
|
||||
value=artwork.Artwork().get_user_artwork(self._user['Id'], 'Primary'))
|
||||
|
|
|
@ -151,10 +151,14 @@ class Views(object):
|
|||
self.emby_db.addView(view_id, view_name, view_type, tag_id, group_series)
|
||||
|
||||
def is_grouped_series(self, view_id, view_type):
|
||||
try:
|
||||
return self.emby.get_view_options(view_id)['EnableAutomaticSeriesGrouping'] if view_type == "tvshows" else None
|
||||
except Exception as error: # Currently admin only api entrypoint
|
||||
log.error(error)
|
||||
|
||||
if window('emby.userinfo.json')['Policy']['IsAdministrator']:
|
||||
try:
|
||||
return self.emby.get_view_options(view_id)['EnableAutomaticSeriesGrouping'] if view_type == "tvshows" else None
|
||||
except Exception as error: # Currently admin only api entrypoint
|
||||
log.error(error)
|
||||
return None
|
||||
else:
|
||||
return None
|
||||
|
||||
def compare_view(self, media_type, view_id, view_name, view_type):
|
||||
|
@ -344,6 +348,29 @@ class Views(object):
|
|||
self.video_nodes.singleNode(index, tag, media_type, view_type)
|
||||
self.total_nodes += 1
|
||||
|
||||
def offline_mode(self):
|
||||
# Just reads from the db and populate views that way
|
||||
# total nodes for window properties
|
||||
self.video_nodes.clearProperties()
|
||||
|
||||
for media_type in ('movies', 'tvshows', 'musicvideos', 'homevideos', 'music', 'photos'):
|
||||
|
||||
self.nodes = list() # Prevent duplicate for nodes of the same type
|
||||
self.playlists = list() # Prevent duplicate for playlists of the same type
|
||||
|
||||
views = self.emby_db.getView_byType(media_type)
|
||||
for view in views:
|
||||
|
||||
try: # Make sure the view is in sorted views before proceeding
|
||||
self.sorted_views.index(view['name'])
|
||||
except ValueError:
|
||||
self.sorted_views.append(view['name'])
|
||||
|
||||
self.add_playlist_node(media_type, view['id'], view['name'], view['mediatype'])
|
||||
|
||||
self.add_single_nodes()
|
||||
window('Emby.nodes.total', str(self.total_nodes))
|
||||
|
||||
|
||||
class Playlist(object):
|
||||
|
||||
|
|
Loading…
Reference in a new issue