Files
jellycon/resources/lib/item_functions.py

573 lines
20 KiB
Python
Raw Normal View History

2017-12-25 18:22:23 +11:00
import sys
import os
import urllib
import time
import calendar
from datetime import datetime, timedelta
from collections import defaultdict
2017-12-25 18:22:23 +11:00
import xbmc
import xbmcaddon
import xbmcgui
2019-01-11 10:24:42 +11:00
from .utils import getArt, datetime_from_string
from .simple_logging import SimpleLogging
from .downloadutils import DownloadUtils
from .kodi_utils import HomeWindow
2017-12-25 18:22:23 +11:00
log = SimpleLogging(__name__)
kodi_version = int(xbmc.getInfoLabel('System.BuildVersion')[:2])
addon_instance = xbmcaddon.Addon()
2017-12-25 18:22:23 +11:00
addon_path = addon_instance.getAddonInfo('path')
PLUGINPATH = xbmc.translatePath(os.path.join(addon_path))
download_utils = DownloadUtils()
home_window = HomeWindow()
2017-12-25 18:22:23 +11:00
2017-12-26 21:04:14 +11:00
class ItemDetails():
name = None
id = None
etag = None
2017-12-26 21:04:14 +11:00
path = None
is_folder = False
plot = None
series_name = None
episode_number = 0
season_number = 0
track_number = 0
2018-11-11 15:08:07 +11:00
series_id = None
2017-12-26 21:04:14 +11:00
art = None
mpaa = None
rating = None
critic_rating = 0.0
2018-10-23 10:18:46 +11:00
community_rating = 0.0
2017-12-26 21:04:14 +11:00
year = None
premiere_date = ""
date_added = ""
location_type = None
studio = None
2018-10-14 13:17:57 +11:00
production_location = None
2018-11-06 08:05:01 +11:00
genres = None
2017-12-26 21:04:14 +11:00
play_count = 0
director = ""
writer = ""
channels = ""
video_codec = ""
aspect_ratio = 0.0
audio_codec = ""
height = 0
width = 0
cast = None
2018-04-20 09:47:36 +10:00
tagline = ""
status = None
2017-12-26 21:04:14 +11:00
resume_time = 0
duration = 0
recursive_item_count = 0
recursive_unplayed_items_count = 0
total_seasons = 0
total_episodes = 0
watched_episodes = 0
unwatched_episodes = 0
number_episodes = 0
original_title = None
item_type = None
subtitle_lang = ""
subtitle_available = False
total_items = 0
2017-12-26 21:04:14 +11:00
2018-01-21 11:20:45 +11:00
song_artist = ""
album_artist = ""
album_name = ""
program_channel_name = None
program_end_date = None
program_start_date = None
2017-12-26 21:04:14 +11:00
favorite = "false"
overlay = "0"
name_format = ""
mode = ""
baseline_itemname = None
2019-01-05 13:28:43 +11:00
2017-12-25 18:22:23 +11:00
def extract_item_info(item, gui_options):
2017-12-26 21:04:14 +11:00
item_details = ItemDetails()
2017-12-25 18:22:23 +11:00
2017-12-26 21:04:14 +11:00
item_details.id = item["Id"]
item_details.etag = item["Etag"]
2017-12-26 21:04:14 +11:00
item_details.is_folder = item["IsFolder"]
item_details.item_type = item["Type"]
item_details.location_type = item["LocationType"]
2018-01-21 11:20:45 +11:00
item_details.name = item["Name"]
item_details.original_title = item_details.name
2017-12-25 18:22:23 +11:00
2017-12-26 21:04:14 +11:00
if item_details.item_type == "Episode":
item_details.episode_number = item["IndexNumber"]
item_details.season_number = item["ParentIndexNumber"]
2018-12-27 11:39:30 +11:00
item_details.series_id = item["SeriesId"]
2017-12-26 21:04:14 +11:00
elif item_details.item_type == "Season":
2017-12-28 15:38:32 +11:00
item_details.season_number = item["IndexNumber"]
2018-11-11 15:08:07 +11:00
item_details.series_id = item["SeriesId"]
2017-12-25 18:22:23 +11:00
elif item_details.item_type == "Series":
item_details.status = item["Status"]
elif item_details.item_type == "Audio":
item_details.track_number = item["IndexNumber"]
2018-01-21 11:20:45 +11:00
item_details.album_name = item["Album"]
artists = item["Artists"]
if artists is not None and len(artists) > 0:
item_details.song_artist = artists[0] # get first artist
elif item_details.item_type == "MusicAlbum":
2018-01-21 11:20:45 +11:00
item_details.album_artist = item["AlbumArtist"]
item_details.album_name = item_details.name
if item_details.season_number is None:
item_details.season_number = 0
if item_details.episode_number is None:
item_details.episode_number = 0
if item["Taglines"] is not None and len(item["Taglines"]) > 0:
item_details.tagline = item["Taglines"][0]
# set the item name
2017-12-25 18:22:23 +11:00
# override with name format string from request
name_format = gui_options["name_format"]
name_format_type = gui_options["name_format_type"]
2017-12-26 21:04:14 +11:00
if name_format is not None and item_details.item_type == name_format_type:
2017-12-25 18:22:23 +11:00
nameInfo = {}
nameInfo["ItemName"] = item["Name"]
2017-12-28 15:38:32 +11:00
season_name = item["SeriesName"]
if season_name:
nameInfo["SeriesName"] = season_name
2017-12-28 15:38:32 +11:00
else:
nameInfo["SeriesName"] = ""
nameInfo["SeasonIndex"] = u"%02d" % item_details.season_number
nameInfo["EpisodeIndex"] = u"%02d" % item_details.episode_number
log.debug("FormatName: {0} | {1}", name_format, nameInfo)
item_details.name = unicode(name_format).format(**nameInfo).strip()
2017-12-25 18:22:23 +11:00
2017-12-28 15:38:32 +11:00
year = item["ProductionYear"]
prem_date = item["PremiereDate"]
2017-12-25 18:22:23 +11:00
2017-12-28 15:38:32 +11:00
if year is not None:
item_details.year = year
elif item_details.year is None and prem_date is not None:
item_details.year = int(prem_date[:4])
2017-12-25 18:22:23 +11:00
2017-12-28 15:38:32 +11:00
if prem_date is not None:
2017-12-26 21:04:14 +11:00
tokens = prem_date.split("T")
item_details.premiere_date = tokens[0]
2017-12-28 15:38:32 +11:00
create_date = item["DateCreated"]
if create_date is not None:
2017-12-26 21:04:14 +11:00
item_details.date_added = create_date.split('.')[0].replace('T', " ")
2017-12-25 18:22:23 +11:00
# add the premiered date for Upcoming TV
2017-12-26 21:04:14 +11:00
if item_details.location_type == "Virtual":
2017-12-28 15:38:32 +11:00
airtime = item["AirTime"]
2017-12-26 21:04:14 +11:00
item_details.name = item_details.name + ' - ' + item_details.premiere_date + ' - ' + str(airtime)
2017-12-25 18:22:23 +11:00
if item_details.item_type == "Program":
item_details.program_channel_name = item["ChannelName"]
item_details.program_start_date = item["StartDate"]
item_details.program_end_date = item["EndDate"]
2017-12-25 18:22:23 +11:00
# Process MediaStreams
2017-12-28 15:38:32 +11:00
mediaStreams = item["MediaStreams"]
2017-12-26 21:04:14 +11:00
if mediaStreams is not None:
2017-12-25 18:22:23 +11:00
for mediaStream in mediaStreams:
2017-12-26 21:04:14 +11:00
stream_type = mediaStream["Type"]
if stream_type == "Video":
2017-12-28 15:38:32 +11:00
item_details.video_codec = mediaStream["Codec"]
item_details.height = mediaStream["Height"]
item_details.width = mediaStream["Width"]
aspect = mediaStream["AspectRatio"]
2017-12-26 21:04:14 +11:00
if aspect is not None and len(aspect) >= 3:
2017-12-25 18:22:23 +11:00
try:
2017-12-26 21:04:14 +11:00
aspect_width, aspect_height = aspect.split(':')
item_details.aspect_ratio = float(aspect_width) / float(aspect_height)
2017-12-25 18:22:23 +11:00
except:
2017-12-26 21:04:14 +11:00
item_details.aspect_ratio = 1.85
if stream_type == "Audio":
2017-12-28 15:38:32 +11:00
item_details.audio_codec = mediaStream["Codec"]
item_details.channels = mediaStream["Channels"]
2017-12-26 21:04:14 +11:00
if stream_type == "Subtitle":
item_details.subtitle_available = True
2017-12-28 15:38:32 +11:00
sub_lang = mediaStream["Language"]
if sub_lang is not None:
item_details.subtitle_lang = sub_lang
2017-12-25 18:22:23 +11:00
# Process People
2017-12-28 15:38:32 +11:00
people = item["People"]
2017-12-26 21:04:14 +11:00
if people is not None:
2017-12-25 18:22:23 +11:00
cast = []
for person in people:
2017-12-26 21:04:14 +11:00
person_type = person["Type"]
if person_type == "Director":
item_details.director = item_details.director + person["Name"] + ' '
elif person_type == "Writing":
item_details.writer = person["Name"]
elif person_type == "Actor":
2018-12-27 11:39:30 +11:00
#log.debug("Person: {0}", person)
2017-12-26 21:04:14 +11:00
person_name = person["Name"]
person_role = person["Role"]
person_id = person["Id"]
2017-12-28 15:38:32 +11:00
person_tag = person["PrimaryImageTag"]
if person_tag is not None:
person_thumbnail = download_utils.imageUrl(person_id, "Primary", 0, 400, 400, person_tag, server = gui_options["server"])
2017-12-28 15:38:32 +11:00
else:
person_thumbnail = ""
2017-12-25 18:22:23 +11:00
person = {"name": person_name, "role": person_role, "thumbnail": person_thumbnail}
cast.append(person)
2017-12-26 21:04:14 +11:00
item_details.cast = cast
2017-12-25 18:22:23 +11:00
# Process Studios
2017-12-28 15:38:32 +11:00
studios = item["Studios"]
2017-12-26 21:04:14 +11:00
if studios is not None:
for studio in studios:
2018-10-14 13:17:57 +11:00
if item_details.studio == None: # Just take the first one
2017-12-26 21:04:14 +11:00
studio_name = studio["Name"]
item_details.studio = studio_name
2017-12-26 21:04:14 +11:00
break
2017-12-25 18:22:23 +11:00
2018-10-14 13:17:57 +11:00
# production location
prod_location = item["ProductionLocations"]
2018-11-05 11:41:02 +11:00
# log.debug("ProductionLocations : {0}", prod_location)
2018-10-14 13:17:57 +11:00
if prod_location and len(prod_location) > 0:
item_details.production_location = prod_location[0]
2017-12-25 18:22:23 +11:00
# Process Genres
2017-12-28 15:38:32 +11:00
genres = item["Genres"]
2018-02-25 22:39:41 +11:00
if genres is not None and len(genres) > 0:
2018-11-06 08:05:01 +11:00
item_details.genres = genres
2017-12-25 18:22:23 +11:00
# Process UserData
2017-12-28 15:38:32 +11:00
userData = item["UserData"]
if userData is None:
userData = defaultdict(lambda: None, {})
2017-12-28 15:38:32 +11:00
2017-12-26 21:04:14 +11:00
if userData["Played"] == True:
item_details.overlay = "6"
item_details.play_count = 1
else:
item_details.overlay = "7"
item_details.play_count = 0
2017-12-25 18:22:23 +11:00
2017-12-26 21:04:14 +11:00
if userData["IsFavorite"] == True:
item_details.overlay = "5"
item_details.favorite = "true"
else:
item_details.favorite = "false"
2017-12-28 15:38:32 +11:00
reasonableTicks = userData["PlaybackPositionTicks"]
if reasonableTicks is not None:
reasonableTicks = int(reasonableTicks) / 1000
2017-12-26 21:04:14 +11:00
item_details.resume_time = int(reasonableTicks / 10000)
2017-12-28 15:38:32 +11:00
item_details.series_name = item["SeriesName"]
item_details.plot = item["Overview"]
2017-12-26 21:04:14 +11:00
2017-12-28 15:38:32 +11:00
runtime = item["RunTimeTicks"]
if item_details.is_folder == False and runtime is not None:
2017-12-26 21:04:14 +11:00
item_details.duration = long(runtime) / 10000000
2017-12-28 15:38:32 +11:00
child_count = item["ChildCount"]
2017-12-26 21:04:14 +11:00
if child_count is not None:
item_details.total_seasons = child_count
2017-12-28 15:38:32 +11:00
recursive_item_count = item["RecursiveItemCount"]
2017-12-26 21:04:14 +11:00
if recursive_item_count is not None:
item_details.total_episodes = recursive_item_count
2017-12-28 15:38:32 +11:00
unplayed_item_count = userData["UnplayedItemCount"]
2017-12-26 21:04:14 +11:00
if unplayed_item_count is not None:
item_details.unwatched_episodes = unplayed_item_count
item_details.watched_episodes = item_details.total_episodes - unplayed_item_count
item_details.number_episodes = item_details.total_episodes
item_details.art = getArt(item, gui_options["server"])
2017-12-28 15:38:32 +11:00
item_details.rating = item["OfficialRating"]
item_details.mpaa = item["OfficialRating"]
2018-10-23 10:18:46 +11:00
item_details.community_rating = item["CommunityRating"]
if item_details.community_rating is None:
item_details.community_rating = 0.0
item_details.critic_rating = item["CriticRating"]
if item_details.critic_rating is None:
item_details.critic_rating = 0.0
2018-10-23 10:18:46 +11:00
item_details.location_type = item["LocationType"]
2017-12-28 15:38:32 +11:00
item_details.recursive_item_count = item["RecursiveItemCount"]
item_details.recursive_unplayed_items_count = userData["UnplayedItemCount"]
2017-12-26 21:04:14 +11:00
item_details.mode = "GET_CONTENT"
return item_details
2017-12-26 21:04:14 +11:00
def add_gui_item(url, item_details, display_options, folder=True):
2017-12-25 18:22:23 +11:00
2018-11-05 11:41:02 +11:00
log.debug("item_details: {0}", item_details.__dict__)
2017-12-25 18:22:23 +11:00
2017-12-26 21:04:14 +11:00
if not item_details.name:
return None
2017-12-25 18:22:23 +11:00
2017-12-26 21:04:14 +11:00
if item_details.mode:
mode = "&mode=%s" % item_details.mode
2017-12-25 18:22:23 +11:00
else:
2017-12-26 21:04:14 +11:00
mode = "&mode=0"
2017-12-25 18:22:23 +11:00
# Create the URL to pass to the item
if folder:
2017-12-26 21:04:14 +11:00
u = sys.argv[0] + "?url=" + urllib.quote(url) + mode + "&media_type=" + item_details.item_type
if item_details.name_format:
u += '&name_format=' + urllib.quote(item_details.name_format)
2017-12-25 18:22:23 +11:00
else:
u = sys.argv[0] + "?item_id=" + url + "&mode=PLAY" + "&session_id=" + home_window.getProperty("session_id")
2017-12-25 18:22:23 +11:00
# Create the ListItem that will be displayed
2017-12-26 21:04:14 +11:00
thumbPath = item_details.art["thumb"]
2017-12-25 18:22:23 +11:00
list_item_name = item_details.name
item_type = item_details.item_type.lower()
is_video = item_type not in ['musicalbum', 'audio', 'music']
2017-12-25 18:22:23 +11:00
# calculate percentage
cappedPercentage = 0
2017-12-26 21:04:14 +11:00
if item_details.resume_time > 0:
duration = float(item_details.duration)
2017-12-25 18:22:23 +11:00
if (duration > 0):
2017-12-26 21:04:14 +11:00
resume = float(item_details.resume_time)
2017-12-25 18:22:23 +11:00
percentage = int((resume / duration) * 100.0)
cappedPercentage = percentage
2017-12-26 21:04:14 +11:00
totalItems = item_details.total_episodes
2017-12-25 18:22:23 +11:00
if totalItems != 0:
2017-12-26 21:04:14 +11:00
watched = float(item_details.watched_episodes)
2017-12-25 18:22:23 +11:00
percentage = int((watched / float(totalItems)) * 100.0)
cappedPercentage = percentage
countsAdded = False
2017-12-26 21:04:14 +11:00
addCounts = display_options["addCounts"]
if addCounts and item_details.unwatched_episodes != 0:
2017-12-25 18:22:23 +11:00
countsAdded = True
list_item_name = list_item_name + (" (%s)" % item_details.unwatched_episodes)
2017-12-25 18:22:23 +11:00
2017-12-26 21:04:14 +11:00
addResumePercent = display_options["addResumePercent"]
if (not countsAdded
2017-12-25 18:22:23 +11:00
and addResumePercent
and cappedPercentage not in [0, 100]):
list_item_name = list_item_name + (" (%s%%)" % cappedPercentage)
2017-12-25 18:22:23 +11:00
2017-12-26 21:04:14 +11:00
subtitle_available = display_options["addSubtitleAvailable"]
if subtitle_available and item_details.subtitle_available:
list_item_name += " (cc)"
if item_details.item_type == "Program":
start_time = datetime_from_string(item_details.program_start_date)
end_time = datetime_from_string(item_details.program_end_date)
duration = (end_time - start_time).total_seconds()
time_done = (datetime.now() - start_time).total_seconds()
percentage_done = (float(time_done) / float(duration)) * 100.0
cappedPercentage = int(percentage_done)
start_time_string = start_time.strftime("%H:%M")
end_time_string = end_time.strftime("%H:%M")
item_details.duration = int(duration)
item_details.resume_time = int(time_done)
list_item_name = (item_details.program_channel_name +
" - " + list_item_name +
" - " + start_time_string + " to " + end_time_string +
" (" + str(int(percentage_done)) + "%)")
time_info = "Start : " + start_time_string + "\n"
time_info += "End : " + end_time_string + "\n"
time_info += "Complete : " + str(int(percentage_done)) + "%\n"
if item_details.plot:
item_details.plot = time_info + item_details.plot
else:
item_details.plot = time_info
2017-12-25 18:22:23 +11:00
if kodi_version > 17:
list_item = xbmcgui.ListItem(list_item_name, offscreen=True)
2017-12-25 18:22:23 +11:00
else:
list_item = xbmcgui.ListItem(list_item_name, iconImage=thumbPath, thumbnailImage=thumbPath)
2017-12-25 18:22:23 +11:00
2018-11-05 11:41:02 +11:00
#log.debug("Setting thumbnail as: {0}", thumbPath)
2017-12-25 18:22:23 +11:00
2018-11-13 11:58:50 +11:00
item_properties = {}
2017-12-25 18:22:23 +11:00
# calculate percentage
2018-11-13 11:58:50 +11:00
if cappedPercentage != 0:
item_properties["complete_percentage"] = str(cappedPercentage)
2017-12-25 18:22:23 +11:00
2018-11-13 11:58:50 +11:00
item_properties["IsPlayable"] = 'false'
if not folder and is_video:
2018-11-13 11:58:50 +11:00
item_properties["TotalTime"] = str(item_details.duration)
item_properties["ResumeTime"] = str(item_details.resume_time)
2017-12-26 21:04:14 +11:00
list_item.setArt(item_details.art)
2018-11-13 11:58:50 +11:00
item_properties["fanart_image"] = item_details.art['fanart'] # back compat
item_properties["discart"] = item_details.art['discart'] # not avail to setArt
item_properties["tvshow.poster"] = item_details.art['tvshow.poster'] # not avail to setArt
2017-12-26 21:04:14 +11:00
2018-12-27 11:39:30 +11:00
if item_details.series_id:
item_properties["series_id"] = item_details.series_id
2017-12-25 18:22:23 +11:00
# new way
2018-01-21 11:20:45 +11:00
info_labels = {}
2017-12-25 18:22:23 +11:00
# add cast
2017-12-26 21:04:14 +11:00
if item_details.cast is not None:
2017-12-25 18:22:23 +11:00
if kodi_version >= 17:
2017-12-26 21:04:14 +11:00
list_item.setCast(item_details.cast)
2017-12-25 18:22:23 +11:00
else:
2018-01-21 11:20:45 +11:00
info_labels['cast'] = info_labels['castandrole'] = [(cast_member['name'], cast_member['role']) for cast_member in item_details.cast]
2017-12-26 21:04:14 +11:00
info_labels["title"] = list_item_name
2018-01-21 11:20:45 +11:00
info_labels["duration"] = item_details.duration
info_labels["playcount"] = item_details.play_count
2017-12-26 21:04:14 +11:00
if item_details.favorite == 'true':
2018-01-21 11:20:45 +11:00
info_labels["top250"] = "1"
info_labels["rating"] = item_details.rating
info_labels["year"] = item_details.year
2018-11-06 08:05:01 +11:00
if item_details.genres is not None and len(item_details.genres) > 0:
genres_list = []
for genre in item_details.genres:
genres_list.append(urllib.quote(genre.encode('utf8')))
2018-11-13 11:58:50 +11:00
item_properties["genres"] = urllib.quote("|".join(genres_list))
2018-11-06 08:05:01 +11:00
info_labels["genre"] = "/".join(item_details.genres)
2017-12-26 21:04:14 +11:00
2017-12-25 18:22:23 +11:00
mediatype = 'video'
if item_type == 'movie':
2017-12-25 18:22:23 +11:00
mediatype = 'movie'
elif item_type == 'boxset':
mediatype = 'set'
2017-12-25 18:22:23 +11:00
elif item_type == 'series':
mediatype = 'tvshow'
elif item_type == 'season':
mediatype = 'season'
elif item_type == 'episode':
mediatype = 'episode'
elif item_type == 'musicalbum':
mediatype = 'album'
2018-01-19 14:12:15 +11:00
elif item_type == 'musicartist':
mediatype = 'artist'
elif item_type == 'audio' or item_type == 'music':
mediatype = 'song'
2017-12-25 18:22:23 +11:00
2018-01-21 11:20:45 +11:00
info_labels["mediatype"] = mediatype
2017-12-25 18:22:23 +11:00
if item_type == 'episode':
2018-01-21 11:20:45 +11:00
info_labels["episode"] = item_details.episode_number
info_labels["season"] = item_details.season_number
info_labels["tvshowtitle"] = item_details.series_name
2017-12-25 18:22:23 +11:00
elif item_type == 'season':
info_labels["season"] = item_details.season_number
info_labels["episode"] = item_details.total_episodes
info_labels["tvshowtitle"] = item_details.series_name
elif item_type == "series":
info_labels["episode"] = item_details.total_episodes
info_labels["season"] = item_details.total_seasons
info_labels["status"] = item_details.status
info_labels["tvshowtitle"] = item_details.name
if is_video:
info_labels["Overlay"] = item_details.overlay
info_labels["tagline"] = item_details.tagline
info_labels["studio"] = item_details.studio
info_labels["premiered"] = item_details.premiere_date
info_labels["plot"] = item_details.plot
info_labels["director"] = item_details.director
info_labels["writer"] = item_details.writer
info_labels["dateadded"] = item_details.date_added
info_labels["country"] = item_details.production_location
info_labels["mpaa"] = item_details.mpaa
if display_options["addUserRatings"]:
info_labels["userrating"] = item_details.critic_rating
if item_type == 'movie':
info_labels["trailer"] = "plugin://plugin.video.embycon?mode=playTrailer&id=" + item_details.id
2018-01-21 11:20:45 +11:00
list_item.setInfo('video', info_labels)
log.debug("info_labels: {0}", info_labels)
list_item.addStreamInfo('video',
{'duration': item_details.duration,
'aspect': item_details.aspect_ratio,
'codec': item_details.video_codec,
'width': item_details.width,
'height': item_details.height})
list_item.addStreamInfo('audio',
{'codec': item_details.audio_codec,
'channels': item_details.channels})
2018-11-13 11:58:50 +11:00
item_properties["TotalSeasons"] = str(item_details.total_seasons)
item_properties["TotalEpisodes"] = str(item_details.total_episodes)
item_properties["WatchedEpisodes"] = str(item_details.watched_episodes)
item_properties["UnWatchedEpisodes"] = str(item_details.unwatched_episodes)
2018-12-14 14:46:00 +11:00
item_properties["NumEpisodes"] = str(item_details.number_episodes)
if item_details.subtitle_lang != '':
list_item.addStreamInfo('subtitle', {'language': item_details.subtitle_lang})
2018-10-23 10:18:46 +11:00
list_item.setRating("imdb", item_details.community_rating, 0, True)
2018-11-05 11:41:02 +11:00
# list_item.setRating("rt", item_details.critic_rating, 0, False)
2018-11-13 11:58:50 +11:00
item_properties["TotalTime"] = str(item_details.duration)
else:
2018-01-21 11:20:45 +11:00
info_labels["tracknumber"] = item_details.track_number
if item_details.album_artist:
info_labels["artist"] = item_details.album_artist
elif item_details.song_artist:
info_labels["artist"] = item_details.song_artist
info_labels["album"] = item_details.album_name
log.debug("info_labels: {0}", info_labels)
list_item.setInfo('music', info_labels)
2017-12-26 21:04:14 +11:00
2018-01-21 11:20:45 +11:00
list_item.setContentLookup(False)
2018-11-13 11:58:50 +11:00
item_properties["ItemType"] = item_details.item_type
item_properties["id"] = item_details.id
2017-12-25 18:22:23 +11:00
if item_details.baseline_itemname is not None:
2018-11-13 11:58:50 +11:00
item_properties["suggested_from_watching"] = item_details.baseline_itemname
2018-12-10 09:18:00 +11:00
#log.debug("item_properties: {0}", item_properties)
2018-11-13 11:58:50 +11:00
if kodi_version > 17:
list_item.setProperties(item_properties)
else:
for key, value in item_properties.iteritems():
list_item.setProperty(key, value)
2017-12-25 18:22:23 +11:00
return (u, list_item, folder)