mirror of
https://github.com/jellyfin/jellyfin-kodi.git
synced 2024-12-26 02:36:10 +00:00
Merge pull request #201 from druscoe/in_progress_ui_updates
Allow for UI updates as the library is being sync'ed
This commit is contained in:
commit
2fbdd191d5
1 changed files with 67 additions and 64 deletions
|
@ -3,6 +3,7 @@ from __future__ import division, absolute_import, print_function, unicode_litera
|
||||||
|
|
||||||
##################################################################################################
|
##################################################################################################
|
||||||
|
|
||||||
|
from contextlib import contextmanager
|
||||||
import datetime
|
import datetime
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
@ -248,6 +249,13 @@ class FullSync(object):
|
||||||
|
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
@contextmanager
|
||||||
|
def video_database_locks(self):
|
||||||
|
with self.library.database_lock:
|
||||||
|
with Database() as videodb:
|
||||||
|
with Database('jellyfin') as jellyfindb:
|
||||||
|
yield videodb, jellyfindb
|
||||||
|
|
||||||
@progress()
|
@progress()
|
||||||
def movies(self, library, dialog):
|
def movies(self, library, dialog):
|
||||||
|
|
||||||
|
@ -255,14 +263,11 @@ class FullSync(object):
|
||||||
'''
|
'''
|
||||||
Movies = self.library.media['Movies']
|
Movies = self.library.media['Movies']
|
||||||
|
|
||||||
with self.library.database_lock:
|
|
||||||
with Database() as videodb:
|
|
||||||
with Database('jellyfin') as jellyfindb:
|
|
||||||
|
|
||||||
obj = Movies(self.server, jellyfindb, videodb, self.direct_path)
|
|
||||||
|
|
||||||
for items in server.get_items(library['Id'], "Movie", False, self.sync['RestorePoint'].get('params')):
|
for items in server.get_items(library['Id'], "Movie", False, self.sync['RestorePoint'].get('params')):
|
||||||
|
|
||||||
|
with self.video_database_locks() as (videodb, jellyfindb):
|
||||||
|
obj = Movies(self.server, jellyfindb, videodb, self.direct_path)
|
||||||
|
|
||||||
self.sync['RestorePoint'] = items['RestorePoint']
|
self.sync['RestorePoint'] = items['RestorePoint']
|
||||||
start_index = items['RestorePoint']['params']['StartIndex']
|
start_index = items['RestorePoint']['params']['StartIndex']
|
||||||
|
|
||||||
|
@ -273,6 +278,9 @@ class FullSync(object):
|
||||||
message=movie['Name'])
|
message=movie['Name'])
|
||||||
obj.movie(movie, library=library)
|
obj.movie(movie, library=library)
|
||||||
|
|
||||||
|
with self.video_database_locks() as (videodb, jellyfindb):
|
||||||
|
obj = Movies(self.server, jellyfindb, videodb, self.direct_path)
|
||||||
|
|
||||||
if self.update_library:
|
if self.update_library:
|
||||||
self.movies_compare(library, obj, jellyfindb)
|
self.movies_compare(library, obj, jellyfindb)
|
||||||
|
|
||||||
|
@ -296,13 +304,11 @@ class FullSync(object):
|
||||||
'''
|
'''
|
||||||
TVShows = self.library.media['TVShows']
|
TVShows = self.library.media['TVShows']
|
||||||
|
|
||||||
with self.library.database_lock:
|
|
||||||
with Database() as videodb:
|
|
||||||
with Database('jellyfin') as jellyfindb:
|
|
||||||
obj = TVShows(self.server, jellyfindb, videodb, self.direct_path, True)
|
|
||||||
|
|
||||||
for items in server.get_items(library['Id'], "Series", False, self.sync['RestorePoint'].get('params')):
|
for items in server.get_items(library['Id'], "Series", False, self.sync['RestorePoint'].get('params')):
|
||||||
|
|
||||||
|
with self.video_database_locks() as (videodb, jellyfindb):
|
||||||
|
obj = TVShows(self.server, jellyfindb, videodb, self.direct_path, True)
|
||||||
|
|
||||||
self.sync['RestorePoint'] = items['RestorePoint']
|
self.sync['RestorePoint'] = items['RestorePoint']
|
||||||
start_index = items['RestorePoint']['params']['StartIndex']
|
start_index = items['RestorePoint']['params']['StartIndex']
|
||||||
|
|
||||||
|
@ -320,6 +326,8 @@ class FullSync(object):
|
||||||
dialog.update(percent, message="%s/%s" % (message, episode['Name'][:10]))
|
dialog.update(percent, message="%s/%s" % (message, episode['Name'][:10]))
|
||||||
obj.episode(episode)
|
obj.episode(episode)
|
||||||
|
|
||||||
|
with self.video_database_locks() as (videodb, jellyfindb):
|
||||||
|
obj = TVShows(self.server, jellyfindb, videodb, self.direct_path, True)
|
||||||
if self.update_library:
|
if self.update_library:
|
||||||
self.tvshows_compare(library, obj, jellyfindb)
|
self.tvshows_compare(library, obj, jellyfindb)
|
||||||
|
|
||||||
|
@ -346,13 +354,11 @@ class FullSync(object):
|
||||||
'''
|
'''
|
||||||
MusicVideos = self.library.media['MusicVideos']
|
MusicVideos = self.library.media['MusicVideos']
|
||||||
|
|
||||||
with self.library.database_lock:
|
|
||||||
with Database() as videodb:
|
|
||||||
with Database('jellyfin') as jellyfindb:
|
|
||||||
obj = MusicVideos(self.server, jellyfindb, videodb, self.direct_path)
|
|
||||||
|
|
||||||
for items in server.get_items(library['Id'], "MusicVideo", False, self.sync['RestorePoint'].get('params')):
|
for items in server.get_items(library['Id'], "MusicVideo", False, self.sync['RestorePoint'].get('params')):
|
||||||
|
|
||||||
|
with self.video_database_locks() as (videodb, jellyfindb):
|
||||||
|
obj = MusicVideos(self.server, jellyfindb, videodb, self.direct_path)
|
||||||
|
|
||||||
self.sync['RestorePoint'] = items['RestorePoint']
|
self.sync['RestorePoint'] = items['RestorePoint']
|
||||||
start_index = items['RestorePoint']['params']['StartIndex']
|
start_index = items['RestorePoint']['params']['StartIndex']
|
||||||
|
|
||||||
|
@ -363,6 +369,8 @@ class FullSync(object):
|
||||||
message=mvideo['Name'])
|
message=mvideo['Name'])
|
||||||
obj.musicvideo(mvideo, library=library)
|
obj.musicvideo(mvideo, library=library)
|
||||||
|
|
||||||
|
with self.video_database_locks() as (videodb, jellyfindb):
|
||||||
|
obj = MusicVideos(self.server, jellyfindb, videodb, self.direct_path)
|
||||||
if self.update_library:
|
if self.update_library:
|
||||||
self.musicvideos_compare(library, obj, jellyfindb)
|
self.musicvideos_compare(library, obj, jellyfindb)
|
||||||
|
|
||||||
|
@ -447,13 +455,11 @@ class FullSync(object):
|
||||||
'''
|
'''
|
||||||
Movies = self.library.media['Movies']
|
Movies = self.library.media['Movies']
|
||||||
|
|
||||||
with self.library.database_lock:
|
|
||||||
with Database() as videodb:
|
|
||||||
with Database('jellyfin') as jellyfindb:
|
|
||||||
obj = Movies(self.server, jellyfindb, videodb, self.direct_path)
|
|
||||||
|
|
||||||
for items in server.get_items(library_id, "BoxSet", False, self.sync['RestorePoint'].get('params')):
|
for items in server.get_items(library_id, "BoxSet", False, self.sync['RestorePoint'].get('params')):
|
||||||
|
|
||||||
|
with self.video_database_locks() as (videodb, jellyfindb):
|
||||||
|
obj = Movies(self.server, jellyfindb, videodb, self.direct_path)
|
||||||
|
|
||||||
self.sync['RestorePoint'] = items['RestorePoint']
|
self.sync['RestorePoint'] = items['RestorePoint']
|
||||||
start_index = items['RestorePoint']['params']['StartIndex']
|
start_index = items['RestorePoint']['params']['StartIndex']
|
||||||
|
|
||||||
|
@ -470,10 +476,7 @@ class FullSync(object):
|
||||||
'''
|
'''
|
||||||
Movies = self.library.media['Movies']
|
Movies = self.library.media['Movies']
|
||||||
|
|
||||||
with self.library.database_lock:
|
with self.video_database_locks() as (videodb, jellyfindb):
|
||||||
with Database() as videodb:
|
|
||||||
with Database('jellyfin') as jellyfindb:
|
|
||||||
|
|
||||||
obj = Movies(self.server, jellyfindb, videodb, self.direct_path)
|
obj = Movies(self.server, jellyfindb, videodb, self.direct_path)
|
||||||
obj.boxsets_reset()
|
obj.boxsets_reset()
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue