Get missing fanart on Kodi startup
This commit is contained in:
parent
6eb786416d
commit
1cc0f8a6c6
2 changed files with 50 additions and 4 deletions
|
@ -347,6 +347,8 @@ class ProcessFanartThread(Thread):
|
|||
cls.getfanart(xml[0], kodiId, item['mediaType'], allartworks)
|
||||
# signals to queue job is done
|
||||
log.debug('Done getting fanart for Plex id %s' % item['itemId'])
|
||||
with plexdb.Get_Plex_DB() as plex_db:
|
||||
plex_db.set_fanart_synched(item['itemId'])
|
||||
queue.task_done()
|
||||
log.info("---===### Stopped FanartSync ###===---")
|
||||
|
||||
|
@ -545,7 +547,8 @@ class LibrarySync(Thread):
|
|||
kodi_fileid INTEGER,
|
||||
kodi_pathid INTEGER,
|
||||
parent_id INTEGER,
|
||||
checksum INTEGER)
|
||||
checksum INTEGER,
|
||||
fanart_synced INTEGER)
|
||||
''')
|
||||
plex_db.plexcursor.execute('''
|
||||
CREATE TABLE IF NOT EXISTS view(
|
||||
|
@ -1833,6 +1836,20 @@ class LibrarySync(Thread):
|
|||
for url in artwork.get_uncached_artwork():
|
||||
artwork.ARTWORK_QUEUE.put(
|
||||
artwork.double_urlencode(tryEncode((url))))
|
||||
if settings('FanartTV') == 'true':
|
||||
# Start getting additional missing artwork
|
||||
with plexdb.Get_Plex_DB() as plex_db:
|
||||
missing_fanart = plex_db.get_missing_fanart()
|
||||
log.debug('Trying to get %s additional fanart'
|
||||
% len(missing_fanart))
|
||||
for item in missing_fanart:
|
||||
self.fanartqueue.put({
|
||||
'itemId': item['plex_id'],
|
||||
'mediaType': item['kodi_type'],
|
||||
'class': v.ITEMTYPE_FROM_KODITYPE[
|
||||
item['kodi_type']],
|
||||
'refresh': True
|
||||
})
|
||||
log.info('Refreshing video nodes and playlists now')
|
||||
deletePlaylists()
|
||||
deleteNodes()
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
from utils import kodiSQL
|
||||
import logging
|
||||
import variables as v
|
||||
|
||||
###############################################################################
|
||||
|
||||
|
@ -334,12 +335,12 @@ class Plex_DB_Functions():
|
|||
query = '''
|
||||
INSERT OR REPLACE INTO plex(
|
||||
plex_id, kodi_id, kodi_fileid, kodi_pathid, plex_type,
|
||||
kodi_type, parent_id, checksum, view_id)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
||||
kodi_type, parent_id, checksum, view_id, fanart_synced)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
||||
'''
|
||||
self.plexcursor.execute(query, (plex_id, kodi_id, kodi_fileid,
|
||||
kodi_pathid, plex_type, kodi_type,
|
||||
parent_id, checksum, view_id))
|
||||
parent_id, checksum, view_id, 0))
|
||||
|
||||
def updateReference(self, plex_id, checksum):
|
||||
"""
|
||||
|
@ -416,3 +417,31 @@ class Plex_DB_Functions():
|
|||
'plex_type': plex_type
|
||||
})
|
||||
return result
|
||||
|
||||
def set_fanart_synched(self, plex_id):
|
||||
"""
|
||||
Sets the fanart_synced flag to 1 for plex_id
|
||||
"""
|
||||
query = '''UPDATE plex SET fanart_synced = 1 WHERE plex_id = ?'''
|
||||
self.plexcursor.execute(query, (plex_id,))
|
||||
|
||||
def get_missing_fanart(self):
|
||||
"""
|
||||
Returns a list of {'plex_id': x, 'kodi_type': y} where fanart_synced
|
||||
flag is set to 0
|
||||
|
||||
This only for plex_type is either movie or TV show
|
||||
"""
|
||||
query = '''
|
||||
SELECT plex_id, kodi_type FROM plex
|
||||
WHERE fanart_synced = ?
|
||||
AND (plex_type = ? OR plex_type = ?)
|
||||
'''
|
||||
self.plexcursor.execute(query,
|
||||
(0, v.PLEX_TYPE_MOVIE, v.PLEX_TYPE_SHOW))
|
||||
rows = self.plexcursor.fetchall()
|
||||
result = []
|
||||
for row in rows:
|
||||
result.append({'plex_id': row[0],
|
||||
'kodi_type': row[1]})
|
||||
return result
|
||||
|
|
Loading…
Reference in a new issue