This commit is contained in:
mksdev 2022-11-19 22:32:01 -07:00 committed by GitHub
commit 1dc8840dbd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 34 additions and 26 deletions

View file

@ -149,7 +149,8 @@ class Connect(object):
if 'PrimaryImageTag' in self.user: if 'PrimaryImageTag' in self.user:
server_address = client.auth.get_server_info(client.auth.server_id)['address'] server_address = client.auth.get_server_info(client.auth.server_id)['address']
window('JellyfinUserImage', api.API(self.user, server_address).get_user_artwork(self.user['Id'])) api_key = client.auth.jellyfin_token()
window('JellyfinUserImage', api.API(self.user, server_address, api_key).get_user_artwork(self.user['Id']))
def select_servers(self, state=None): def select_servers(self, state=None):

View file

@ -529,7 +529,7 @@ def get_fanart(item_id, path, server_id=None, api_client=None):
xbmcvfs.mkdirs(directory) xbmcvfs.mkdirs(directory)
item = api_client.get_item(item_id) item = api_client.get_item(item_id)
obj = objects.map(item, 'Artwork') obj = objects.map(item, 'Artwork')
backdrops = api.API(item).get_all_artwork(obj) backdrops = api.API(item, None, api_client.config.data['auth.token']).get_all_artwork(obj)
tags = obj['BackdropTags'] tags = obj['BackdropTags']
for index, backdrop in enumerate(backdrops): for index, backdrop in enumerate(backdrops):

View file

@ -13,13 +13,14 @@ LOG = LazyLogger(__name__)
class API(object): class API(object):
def __init__(self, item, server=None): def __init__(self, item, server=None, api_key=None):
''' Get item information in special cases. ''' Get item information in special cases.
server is the server address, provide if your functions requires it. server is the server address, provide if your functions requires it.
''' '''
self.item = item self.item = item
self.server = server self.server = server
self.api_key = api_key
def get_playcount(self, played, playcount): def get_playcount(self, played, playcount):
@ -303,6 +304,8 @@ class API(object):
for index, tag in enumerate(tags): for index, tag in enumerate(tags):
artwork = "%s/Items/%s/Images/Backdrop/%s?Format=original&Tag=%s%s" % (self.server, item_id, index, tag, (query or "")) artwork = "%s/Items/%s/Images/Backdrop/%s?Format=original&Tag=%s%s" % (self.server, item_id, index, tag, (query or ""))
if self.api_key is not None:
artwork += "&api_key=%s" % self.api_key
backdrops.append(artwork) backdrops.append(artwork)
return backdrops return backdrops
@ -322,4 +325,7 @@ class API(object):
if query is not None: if query is not None:
url += query or "" url += query or ""
if self.api_key is not None:
url += "&api_key=%s" % self.api_key
return url return url

View file

@ -212,7 +212,7 @@ class PlayUtils(object):
self.info['SubtitleStreamIndex'] = self.info.get('SubtitleStreamIndex') or source.get('DefaultSubtitleStreamIndex') self.info['SubtitleStreamIndex'] = self.info.get('SubtitleStreamIndex') or source.get('DefaultSubtitleStreamIndex')
self.item['PlaybackInfo'].update(self.info) self.item['PlaybackInfo'].update(self.info)
API = api.API(self.item, self.info['ServerAddress']) API = api.API(self.item, self.info['ServerAddress'], self.api_client.config.data['auth.token'])
window('jellyfinfilename', value=API.get_file_path(source.get('Path'))) window('jellyfinfilename', value=API.get_file_path(source.get('Path')))
def live_stream(self, source): def live_stream(self, source):
@ -264,7 +264,7 @@ class PlayUtils(object):
def direct_play(self, source): def direct_play(self, source):
API = api.API(self.item, self.info['ServerAddress']) API = api.API(self.item, self.info['ServerAddress'], self.api_client.config.data['auth.token'])
self.info['Method'] = "DirectPlay" self.info['Method'] = "DirectPlay"
self.info['Path'] = API.get_file_path(source.get('Path')) self.info['Path'] = API.get_file_path(source.get('Path'))

View file

@ -651,7 +651,7 @@ class UpdateWorker(threading.Thread):
music.song(item) music.song(item)
if self.notify: if self.notify:
self.notify_output.put((item['Type'], api.API(item).get_naming())) self.notify_output.put((item['Type'], api.API(item, None, self.server.auth.jellyfin_token()).get_naming()))
except LibraryException as error: except LibraryException as error:
if error.status == 'StopCalled': if error.status == 'StopCalled':
break break

View file

@ -196,7 +196,7 @@ class Monitor(xbmc.Monitor):
for index, user in enumerate(session[0]['AdditionalUsers']): for index, user in enumerate(session[0]['AdditionalUsers']):
info = server.jellyfin.get_user(user['UserId']) info = server.jellyfin.get_user(user['UserId'])
image = api.API(info, server.config.data['auth.server']).get_user_artwork(user['UserId']) image = api.API(info, server.config.data['auth.server'], server.config.data['auth.token']).get_user_artwork(user['UserId'])
window('JellyfinAdditionalUserImage.%s' % index, image) window('JellyfinAdditionalUserImage.%s' % index, image)
window('JellyfinAdditionalUserPosition.%s' % user['UserId'], str(index)) window('JellyfinAdditionalUserPosition.%s' % user['UserId'], str(index))

View file

@ -226,7 +226,7 @@ class Actions(object):
def set_listitem(self, item, listitem, db_id=None, seektime=None, intro=False): def set_listitem(self, item, listitem, db_id=None, seektime=None, intro=False):
objects = Objects() objects = Objects()
API = api.API(item, self.server) API = api.API(item, self.server, self.api_client.config.data["auth.token"])
if item['Type'] in ('MusicArtist', 'MusicAlbum', 'Audio'): if item['Type'] in ('MusicArtist', 'MusicAlbum', 'Audio'):
@ -284,7 +284,7 @@ class Actions(object):
''' Set listitem for video content. That also include streams. ''' Set listitem for video content. That also include streams.
''' '''
API = api.API(item, self.server) API = api.API(item, self.server, self.api_client.config.data["auth.token"])
is_video = obj['MediaType'] in ('Video', 'Audio') # audiobook is_video = obj['MediaType'] in ('Video', 'Audio') # audiobook
obj['Genres'] = " / ".join(obj['Genres'] or []) obj['Genres'] = " / ".join(obj['Genres'] or [])
@ -476,7 +476,7 @@ class Actions(object):
''' Set listitem for channel content. ''' Set listitem for channel content.
''' '''
API = api.API(item, self.server) API = api.API(item, self.server, self.api_client.config.data["auth.token"])
obj['Title'] = "%s - %s" % (obj['Title'], obj['ProgramName']) obj['Title'] = "%s - %s" % (obj['Title'], obj['ProgramName'])
obj['Runtime'] = round(float((obj['Runtime'] or 0) / 10000000.0), 6) obj['Runtime'] = round(float((obj['Runtime'] or 0) / 10000000.0), 6)
@ -519,7 +519,7 @@ class Actions(object):
listitem.setContentLookup(False) listitem.setContentLookup(False)
def listitem_music(self, obj, listitem, item): def listitem_music(self, obj, listitem, item):
API = api.API(item, self.server) API = api.API(item, self.server, self.api_client.config.data["auth.token"])
obj['Runtime'] = round(float((obj['Runtime'] or 0) / 10000000.0), 6) obj['Runtime'] = round(float((obj['Runtime'] or 0) / 10000000.0), 6)
obj['PlayCount'] = API.get_playcount(obj['Played'], obj['PlayCount']) or 0 obj['PlayCount'] = API.get_playcount(obj['Played'], obj['PlayCount']) or 0
@ -576,7 +576,7 @@ class Actions(object):
listitem.setContentLookup(False) listitem.setContentLookup(False)
def listitem_photo(self, obj, listitem, item): def listitem_photo(self, obj, listitem, item):
API = api.API(item, self.server) API = api.API(item, self.server, self.api_client.config.data["auth.token"])
obj['Overview'] = API.get_overview(obj['Overview']) obj['Overview'] = API.get_overview(obj['Overview'])
obj['FileDate'] = "%s.%s.%s" % tuple(reversed(obj['FileDate'].split('T')[0].split('-'))) obj['FileDate'] = "%s.%s.%s" % tuple(reversed(obj['FileDate'].split('T')[0].split('-')))

View file

@ -47,7 +47,7 @@ class Movies(KodiDb):
If item exists, entry will be updated. If item exists, entry will be updated.
''' '''
server_address = self.server.auth.get_server_info(self.server.auth.server_id)['address'] server_address = self.server.auth.get_server_info(self.server.auth.server_id)['address']
API = api.API(item, server_address) API = api.API(item, server_address, self.server.auth.jellyfin_token())
obj = self.objects.map(item, 'Movie') obj = self.objects.map(item, 'Movie')
update = True update = True
@ -221,7 +221,7 @@ class Movies(KodiDb):
Process removals from boxset. Process removals from boxset.
''' '''
server_address = self.server.auth.get_server_info(self.server.auth.server_id)['address'] server_address = self.server.auth.get_server_info(self.server.auth.server_id)['address']
API = api.API(item, server_address) API = api.API(item, server_address, self.server.auth.jellyfin_token())
obj = self.objects.map(item, 'Boxset') obj = self.objects.map(item, 'Boxset')
obj['Overview'] = API.get_overview(obj['Overview']) obj['Overview'] = API.get_overview(obj['Overview'])
@ -299,7 +299,7 @@ class Movies(KodiDb):
Poster with progress bar Poster with progress bar
''' '''
server_address = self.server.auth.get_server_info(self.server.auth.server_id)['address'] server_address = self.server.auth.get_server_info(self.server.auth.server_id)['address']
API = api.API(item, server_address) API = api.API(item, server_address, self.server.auth.jellyfin_token())
obj = self.objects.map(item, 'MovieUserData') obj = self.objects.map(item, 'MovieUserData')
try: try:

View file

@ -44,7 +44,7 @@ class Music(KodiDb):
If item exists, entry will be updated. If item exists, entry will be updated.
''' '''
server_address = self.server.auth.get_server_info(self.server.auth.server_id)['address'] server_address = self.server.auth.get_server_info(self.server.auth.server_id)['address']
API = api.API(item, server_address) API = api.API(item, server_address, self.server.auth.jellyfin_token())
obj = self.objects.map(item, 'Artist') obj = self.objects.map(item, 'Artist')
update = True update = True
@ -118,7 +118,7 @@ class Music(KodiDb):
''' Update object to kodi. ''' Update object to kodi.
''' '''
server_address = self.server.auth.get_server_info(self.server.auth.server_id)['address'] server_address = self.server.auth.get_server_info(self.server.auth.server_id)['address']
API = api.API(item, server_address) API = api.API(item, server_address, self.server.auth.jellyfin_token())
obj = self.objects.map(item, 'Album') obj = self.objects.map(item, 'Album')
update = True update = True
@ -242,7 +242,7 @@ class Music(KodiDb):
''' Update object to kodi. ''' Update object to kodi.
''' '''
server_address = self.server.auth.get_server_info(self.server.auth.server_id)['address'] server_address = self.server.auth.get_server_info(self.server.auth.server_id)['address']
API = api.API(item, server_address) API = api.API(item, server_address, self.server.auth.jellyfin_token())
obj = self.objects.map(item, 'Song') obj = self.objects.map(item, 'Song')
update = True update = True

View file

@ -51,7 +51,7 @@ class MusicVideos(KodiDb):
from the sortname attribute. from the sortname attribute.
''' '''
server_address = self.server.auth.get_server_info(self.server.auth.server_id)['address'] server_address = self.server.auth.get_server_info(self.server.auth.server_id)['address']
API = api.API(item, server_address) API = api.API(item, server_address, self.server.auth.jellyfin_token())
obj = self.objects.map(item, 'MusicVideo') obj = self.objects.map(item, 'MusicVideo')
update = True update = True
@ -195,7 +195,7 @@ class MusicVideos(KodiDb):
Poster with progress bar Poster with progress bar
''' '''
server_address = self.server.auth.get_server_info(self.server.auth.server_id)['address'] server_address = self.server.auth.get_server_info(self.server.auth.server_id)['address']
API = api.API(item, server_address) API = api.API(item, server_address, self.server.auth.jellyfin_token())
obj = self.objects.map(item, 'MusicVideoUserData') obj = self.objects.map(item, 'MusicVideoUserData')
try: try:

View file

@ -55,7 +55,7 @@ class TVShows(KodiDb):
Apply series pooling. Apply series pooling.
''' '''
server_address = self.server.auth.get_server_info(self.server.auth.server_id)['address'] server_address = self.server.auth.get_server_info(self.server.auth.server_id)['address']
API = api.API(item, server_address) API = api.API(item, server_address, self.server.auth.jellyfin_token())
obj = self.objects.map(item, 'Series') obj = self.objects.map(item, 'Series')
update = True update = True
@ -219,7 +219,7 @@ class TVShows(KodiDb):
If the show is empty, try to remove it. If the show is empty, try to remove it.
''' '''
server_address = self.server.auth.get_server_info(self.server.auth.server_id)['address'] server_address = self.server.auth.get_server_info(self.server.auth.server_id)['address']
API = api.API(item, server_address) API = api.API(item, server_address, self.server.auth.jellyfin_token())
obj = self.objects.map(item, 'Season') obj = self.objects.map(item, 'Season')
obj['ShowId'] = show_id obj['ShowId'] = show_id
@ -255,7 +255,7 @@ class TVShows(KodiDb):
This is only required for plugin/episode. This is only required for plugin/episode.
''' '''
server_address = self.server.auth.get_server_info(self.server.auth.server_id)['address'] server_address = self.server.auth.get_server_info(self.server.auth.server_id)['address']
API = api.API(item, server_address) API = api.API(item, server_address, self.server.auth.jellyfin_token())
obj = self.objects.map(item, 'Episode') obj = self.objects.map(item, 'Episode')
update = True update = True
@ -464,7 +464,7 @@ class TVShows(KodiDb):
Create additional entry for widgets. This is only required for plugin/episode. Create additional entry for widgets. This is only required for plugin/episode.
''' '''
server_address = self.server.auth.get_server_info(self.server.auth.server_id)['address'] server_address = self.server.auth.get_server_info(self.server.auth.server_id)['address']
API = api.API(item, server_address) API = api.API(item, server_address, self.server.auth.jellyfin_token())
obj = self.objects.map(item, 'EpisodeUserData') obj = self.objects.map(item, 'EpisodeUserData')
try: try:

View file

@ -261,7 +261,7 @@ class Player(xbmc.Player):
break break
server_address = item['Server'].auth.get_server_info(item['Server'].auth.server_id)['address'] server_address = item['Server'].auth.get_server_info(item['Server'].auth.server_id)['address']
API = api.API(next_item, server_address) API = api.API(next_item, server_address, item['Server'].auth.jellyfin_token())
data = objects.map(next_item, "UpNext") data = objects.map(next_item, "UpNext")
artwork = API.get_all_artwork(objects.map(next_item, 'ArtworkParent'), True) artwork = API.get_all_artwork(objects.map(next_item, 'ArtworkParent'), True)
data['art'] = { data['art'] = {

View file

@ -858,7 +858,8 @@ class Views(object):
if library['Id'] == view_id and 'Primary' in library.get('ImageTags', {}): if library['Id'] == view_id and 'Primary' in library.get('ImageTags', {}):
server_address = self.server.auth.get_server_info(self.server.auth.server_id)['address'] server_address = self.server.auth.get_server_info(self.server.auth.server_id)['address']
artwork = api.API(None, server_address).get_artwork(view_id, 'Primary') api_key = self.server.auth.jellyfin_token()
artwork = api.API(None, server_address, api_key).get_artwork(view_id, 'Primary')
window('%s.artwork' % prop, artwork) window('%s.artwork' % prop, artwork)
break break