Files
jellycon/resources/lib/menu_functions.py

1141 lines
49 KiB
Python
Raw Normal View History

2018-05-08 14:29:21 +10:00
# coding=utf-8
# Gnu General Public License - see LICENSE.TXT
import sys
import json
import urllib
import xbmcplugin
import xbmcaddon
2019-01-11 10:24:42 +11:00
from .downloadutils import DownloadUtils
from .kodi_utils import addMenuDirectoryItem, HomeWindow
from .simple_logging import SimpleLogging
from .translation import string_load
from .datamanager import DataManager
from .utils import getArt
log = SimpleLogging(__name__)
downloadUtils = DownloadUtils()
__addon__ = xbmcaddon.Addon()
def showMoviePages(params):
log.debug("showMoviePages: {0}", params)
parent_id = params.get("parent_id")
2018-09-18 14:29:54 +10:00
settings = xbmcaddon.Addon()
group_movies = settings.getSetting('group_movies') == "true"
url = ('{server}/emby/Users/{userid}/Items' +
'?IsVirtualUnaired=false' +
2018-09-18 14:29:54 +10:00
'&CollapseBoxSetItems=' + str(group_movies) +
'&GroupItemsIntoCollections=' + str(group_movies) +
'&Recursive=true' +
2018-09-18 14:29:54 +10:00
"&IncludeItemTypes=Movie"
'&IsMissing=False' +
'&ImageTypeLimit=0' +
'&format=json')
if parent_id:
url += "&ParentId=" + parent_id
data_manager = DataManager()
result = data_manager.GetContent(url)
if result is None:
return
total_results = result.get("TotalRecordCount", 0)
log.debug("showMoviePages TotalRecordCount {0}", total_results)
if result == 0:
return
page_limit = int(settings.getSetting('moviePageSize'))
if page_limit == 0:
page_limit = 20
start_index = 0
collections = []
while start_index < total_results:
item_url = ("{server}/emby/Users/{userid}/Items" +
"?IsVirtualUnaired=false" +
2018-09-18 14:29:54 +10:00
'&CollapseBoxSetItems=' + str(group_movies) +
'&GroupItemsIntoCollections=' + str(group_movies) +
"&Recursive=true" +
"&IsMissing=False" +
2018-09-18 14:29:54 +10:00
"&IncludeItemTypes=Movie"
"&Fields={field_filters}" +
"&ImageTypeLimit=1" +
"&SortBy=Name" +
"&SortOrder=Ascending" +
"&format=json")
if parent_id:
item_url += "&ParentId=" + parent_id
item_url += "&StartIndex=" + str(start_index) + "&Limit=" + str(page_limit)
page_upper = start_index + page_limit
if page_upper > total_results:
page_upper = total_results
item_data = {}
item_data['title'] = "Page (" + str(start_index + 1) + " - " + str(page_upper) + ")"
item_data['path'] = item_url
item_data['media_type'] = 'movies'
collections.append(item_data)
start_index = start_index + page_limit
for collection in collections:
content_url = urllib.quote(collection['path'])
url = sys.argv[0] + ("?url=" + content_url +
"&mode=GET_CONTENT" +
"&media_type=" + collection["media_type"])
log.debug("addMenuDirectoryItem: {0} - {1} - {2}", collection.get('title'), url, collection.get("art"))
2018-10-26 14:04:54 +11:00
addMenuDirectoryItem(collection.get('title', string_load(30250)), url, art=collection.get("art"))
xbmcplugin.endOfDirectory(int(sys.argv[1]))
def showGenreList(params):
log.debug("showGenreList: {0}", params)
server = downloadUtils.getServer()
if server is None:
return
parent_id = params.get("parent_id")
item_type = params.get("item_type")
2017-09-03 22:16:45 +10:00
kodi_type = "Movies"
emby_type = "Movie"
if item_type is not None and item_type == "tvshow":
2017-09-03 22:16:45 +10:00
emby_type = "Series"
kodi_type = "tvshows"
2017-12-28 15:38:32 +11:00
url = ("{server}/emby/Genres?" +
"SortBy=Name" +
"&SortOrder=Ascending" +
"&IncludeItemTypes=" + emby_type +
"&Recursive=true" +
"&UserId={userid}")
if parent_id is not None:
url += "&parentid=" + parent_id
2017-12-28 15:38:32 +11:00
data_manager = DataManager()
result = data_manager.GetContent(url)
if result is not None:
result = result.get("Items")
else:
result = []
2018-09-18 14:29:54 +10:00
settings = xbmcaddon.Addon()
group_movies = settings.getSetting('group_movies') == "true"
collections = []
2018-02-26 18:16:19 +11:00
xbmcplugin.setContent(int(sys.argv[1]), 'genres')
for genre in result:
art = getArt(item=genre, server=server)
item_data = {}
item_data['title'] = genre.get("Name")
2017-09-03 22:16:45 +10:00
item_data['media_type'] = kodi_type
item_data['art'] = art
url = ("{server}/emby/Users/{userid}/Items" +
"?Fields={field_filters}" +
"&Recursive=true" +
2018-09-18 14:29:54 +10:00
'&CollapseBoxSetItems=' + str(group_movies) +
'&GroupItemsIntoCollections=' + str(group_movies) +
"&GenreIds=" + genre.get("Id") +
"&IncludeItemTypes=" + emby_type +
"&ImageTypeLimit=1")
if parent_id is not None:
url += "&parentid=" + parent_id
item_data['path'] = url
collections.append(item_data)
for collection in collections:
url = sys.argv[0] + ("?url=" + urllib.quote(collection['path']) +
2017-05-20 15:12:38 +10:00
"&mode=GET_CONTENT" +
"&media_type=" + collection["media_type"])
log.debug("addMenuDirectoryItem: {0} - {1} - {2}", collection.get('title'), url, collection.get("art"))
2018-10-26 14:04:54 +11:00
addMenuDirectoryItem(collection.get('title', string_load(30250)), url, art=collection.get("art"))
xbmcplugin.endOfDirectory(int(sys.argv[1]))
def showMovieAlphaList():
2017-07-08 10:34:30 +10:00
log.debug("== ENTER: showMovieAlphaList() ==")
settings = xbmcaddon.Addon()
server = downloadUtils.getServer()
if server is None:
return
collections = []
item_data = {}
item_data['title'] = "#"
2017-05-20 15:12:38 +10:00
item_data['media_type'] = "Movies"
item_data['path'] = ('{server}/emby/Users/{userid}/Items' +
'?Fields={field_filters}' +
'&Recursive=true' +
'&NameLessThan=A' +
'&IncludeItemTypes=Movie' +
'&ImageTypeLimit=1' +
'&format=json')
collections.append(item_data)
2018-09-18 14:29:54 +10:00
group_movies = settings.getSetting('group_movies') == "true"
alphaList = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "Y", "Z"]
for alphaName in alphaList:
item_data = {}
item_data['title'] = alphaName
2017-05-20 15:12:38 +10:00
item_data['media_type'] = "Movies"
item_data['path'] = ('{server}/emby/Users/{userid}/Items' +
'?Fields={field_filters}' +
2018-09-18 14:29:54 +10:00
'&CollapseBoxSetItems=' + str(group_movies) +
'&GroupItemsIntoCollections=' + str(group_movies) +
'&Recursive=true' +
'&NameStartsWith=' + alphaName +
'&IncludeItemTypes=Movie' +
"&SortBy=Name" +
"&SortOrder=Ascending" +
'&ImageTypeLimit=1&format=json')
collections.append(item_data)
for collection in collections:
url = (sys.argv[0] + "?url=" + urllib.quote(collection['path']) +
"&mode=GET_CONTENT&media_type=" + collection["media_type"])
log.debug("addMenuDirectoryItem: {0} ({1})", collection.get('title'), url)
2018-10-26 14:04:54 +11:00
addMenuDirectoryItem(collection.get('title', string_load(30250)), url)
xbmcplugin.endOfDirectory(int(sys.argv[1]))
def displaySections():
2017-07-08 10:34:30 +10:00
log.debug("== ENTER: displaySections() ==")
xbmcplugin.setContent(int(sys.argv[1]), 'files')
server = downloadUtils.getServer()
if server is None:
return
# Add collections
collections = getCollections()
if collections:
for collection in collections:
if collection.get("item_type") == "plugin_link":
plugin_path = collection['path']
2018-10-26 14:04:54 +11:00
addMenuDirectoryItem(collection.get('title', string_load(30250)),
plugin_path,
art=collection.get("art"))
else:
url = (sys.argv[0] + "?url=" + urllib.quote(collection['path']) +
"&mode=GET_CONTENT&media_type=" + collection["media_type"])
if collection.get("name_format") is not None:
url += "&name_format=" + urllib.quote(collection.get("name_format"))
2018-11-18 13:16:47 +11:00
if not collection.get("use_cache", True):
url += "&use_cache=false"
log.debug("addMenuDirectoryItem: {0} ({1})", collection.get('title'), url)
2018-10-26 14:04:54 +11:00
addMenuDirectoryItem(collection.get('title', string_load(30250)),
url,
art=collection.get("art"))
2018-10-26 14:04:54 +11:00
addMenuDirectoryItem(string_load(30251), "plugin://plugin.video.embycon/?mode=GENRES&item_type=movie")
addMenuDirectoryItem(string_load(30252), "plugin://plugin.video.embycon/?mode=MOVIE_ALPHA")
addMenuDirectoryItem("Movie (Pages)", "plugin://plugin.video.embycon/?mode=MOVIE_PAGES")
2018-10-26 14:04:54 +11:00
addMenuDirectoryItem(string_load(30289), "plugin://plugin.video.embycon/?mode=GENRES&item_type=tvshow")
addMenuDirectoryItem(string_load(30246), "plugin://plugin.video.embycon/?mode=SEARCH")
2018-10-26 14:04:54 +11:00
addMenuDirectoryItem(string_load(30017), "plugin://plugin.video.embycon/?mode=SHOW_SERVER_SESSIONS")
addMenuDirectoryItem(string_load(30253), "plugin://plugin.video.embycon/?mode=CHANGE_USER")
2018-10-26 14:04:54 +11:00
addMenuDirectoryItem(string_load(30011), "plugin://plugin.video.embycon/?mode=DETECT_SERVER_USER")
addMenuDirectoryItem(string_load(30254), "plugin://plugin.video.embycon/?mode=SHOW_SETTINGS")
2017-12-17 10:48:44 +11:00
# only add these if we have other collection which means we have a valid server conn
if collections:
2018-10-26 14:04:54 +11:00
addMenuDirectoryItem(string_load(30293), "plugin://plugin.video.embycon/?mode=CACHE_ARTWORK")
addMenuDirectoryItem(string_load(30247), "plugin://plugin.video.embycon/?mode=WIDGETS")
xbmcplugin.endOfDirectory(int(sys.argv[1]))
def getCollections():
2017-07-08 10:34:30 +10:00
log.debug("== ENTER: getCollections ==")
server = downloadUtils.getServer()
if server is None:
return []
userid = downloadUtils.getUserId()
2018-08-04 16:49:37 +10:00
if userid is None or len(userid) == 0:
2017-07-08 10:34:30 +10:00
log.debug("No userid so returning []")
return []
2017-12-28 15:38:32 +11:00
data_manager = DataManager()
result = data_manager.GetContent("{server}/emby/Users/{userid}/Items/Root?format=json")
2017-06-23 09:55:28 +10:00
if result is None:
return []
parentid = result.get("Id")
log.debug("parentid: {0}", parentid)
2018-05-09 13:24:02 +10:00
htmlpath = "{server}/emby/Users/{userid}/Views?format=json"
2018-08-04 16:49:37 +10:00
# htmlpath = "{server}/emby/Users/{userid}/items?ParentId=" + parentid + "&Sortby=SortName&format=json"
2017-12-28 15:38:32 +11:00
result = data_manager.GetContent(htmlpath)
if result is not None:
result = result.get("Items")
else:
result = []
2017-12-28 15:38:32 +11:00
collections = []
2018-09-18 14:29:54 +10:00
settings = xbmcaddon.Addon()
group_movies = settings.getSetting('group_movies') == "true"
2018-11-18 13:16:47 +11:00
show_x_filtered_items = settings.getSetting("show_x_filtered_items")
2018-09-18 14:29:54 +10:00
for item in result:
item_name = item.get("Name")
collection_type = item.get('CollectionType', None)
2018-05-09 13:24:02 +10:00
type = item.get('Type', None)
log.debug("CollectionType: {0}", collection_type)
log.debug("Title: {0}", item_name)
art = getArt(item=item, server=server)
art['landscape'] = downloadUtils.getArtwork(item, "Primary", server=server)
if collection_type == "music":
item_data = {}
2018-10-26 14:04:54 +11:00
item_data['title'] = item_name + string_load(30320)
item_data['art'] = art
item_data['media_type'] = 'MusicAlbums'
item_data['path'] = ('{server}/emby/Users/{userid}/Items' +
'?Recursive=true' +
'&ParentId=' + item.get("Id") +
'&IncludeItemTypes=MusicAlbum' +
'&ImageTypeLimit=1' +
'&EnableImageTypes=Primary,Backdrop,Banner,Thumb' +
'&SortBy=Name' +
'&SortOrder=Ascending' +
'&format=json')
collections.append(item_data)
item_data = {}
item_data['title'] = item_name + string_load(30268) + " (" + show_x_filtered_items + ")"
item_data['art'] = art
item_data['media_type'] = 'MusicAlbums'
item_data['path'] = ('{server}/emby/Users/{userid}/Items/Latest' +
'?IncludeItemTypes=Audio' +
'&ParentId=' + item.get("Id") +
'&ImageTypeLimit=1' +
'&Limit={ItemLimit}' +
'&EnableImageTypes=Primary,Backdrop,Banner,Thumb' +
'&SortBy=Name' +
'&SortOrder=Ascending' +
'&format=json')
collections.append(item_data)
item_data = {}
item_data['title'] = item_name + string_load(30349) + " (" + show_x_filtered_items + ")"
item_data['art'] = art
item_data['media_type'] = 'MusicAlbum'
item_data['path'] = ('{server}/emby/Users/{userid}/Items' +
'?SortBy=DatePlayed' +
'&SortOrder=Descending' +
'&IncludeItemTypes=Audio' +
'&Limit={ItemLimit}' +
'&Recursive=true' +
'&ParentId=' + item.get("Id") +
'&ImageTypeLimit=1' +
'&EnableImageTypes=Primary,Backdrop,Banner,Thumb' +
'&Filters=IsPlayed' +
'&format=json')
collections.append(item_data)
item_data = {}
2018-11-29 09:44:59 +11:00
item_data['title'] = item_name + string_load(30353) + " (" + show_x_filtered_items + ")"
item_data['art'] = art
item_data['media_type'] = 'MusicAlbum'
item_data['path'] = ('{server}/emby/Users/{userid}/Items' +
'?SortBy=PlayCount' +
'&SortOrder=Descending' +
'&IncludeItemTypes=Audio' +
'&Limit={ItemLimit}' +
'&Recursive=true' +
'&ParentId=' + item.get("Id") +
'&ImageTypeLimit=1' +
'&EnableImageTypes=Primary,Backdrop,Banner,Thumb' +
'&Filters=IsPlayed' +
'&format=json')
collections.append(item_data)
2018-11-29 09:44:59 +11:00
item_data = {}
item_data['title'] = item_name + string_load(30321)
item_data['art'] = art
item_data['media_type'] = 'MusicArtists'
item_data['path'] = ('{server}/emby/Artists/AlbumArtists' +
'?Recursive=true' +
'&ParentId=' + item.get("Id") +
'&ImageTypeLimit=1' +
'&EnableImageTypes=Primary,Backdrop,Banner,Thumb' +
'&SortBy=Name' +
'&SortOrder=Ascending' +
'&format=json')
collections.append(item_data)
2018-12-09 13:42:01 +11:00
if collection_type in ["livetv"]:
collections.append({
2018-12-09 13:49:46 +11:00
'title': item_name + string_load(30360),
2018-12-09 13:42:01 +11:00
'art': art,
'path': ('{server}/emby/LiveTv/Channels' +
'?UserId={userid}' +
'&Recursive=false' +
'&Fields={field_filters}' +
'&ImageTypeLimit=1' +
'&EnableTotalRecordCount=false' +
'&format=json'),
'media_type': collection_type})
collections.append({
2018-12-09 13:49:46 +11:00
'title': item_name + string_load(30361),
2018-12-09 13:42:01 +11:00
'art': art,
'path': ('{server}/emby/LiveTv/Programs/Recommended' +
'?UserId={userid}' +
'&IsAiring=true' +
'&Fields=ChannelInfo,{field_filters}' +
2018-12-09 13:42:01 +11:00
'&ImageTypeLimit=1' +
'&EnableTotalRecordCount=false' +
'&format=json'),
'media_type': collection_type})
collections.append({
2018-12-09 13:49:46 +11:00
'title': item_name + string_load(30362),
2018-12-09 13:42:01 +11:00
'art': art,
'path': ('{server}/emby/LiveTv/Recordings' +
'?UserId={userid}' +
'&Recursive=false' +
'&Fields={field_filters}' +
'&ImageTypeLimit=1' +
'&EnableTotalRecordCount=false' +
'&format=json'),
'media_type': collection_type})
2018-08-04 16:49:37 +10:00
if collection_type in ["homevideos"]:
collections.append({
'title': item_name,
'art': art,
'path': ('{server}/emby/Users/{userid}/Items' +
'?ParentId=' + item.get("Id") +
'&IsVirtualUnaired=false' +
'&Recursive=false' +
'&IsMissing=False' +
'&Fields={field_filters}' +
'&ImageTypeLimit=1' +
'&SortBy=Name' +
'&SortOrder=Ascending' +
'&format=json'),
'media_type': collection_type})
collections.append({
'title': item_name + string_load(30267) + " (" + show_x_filtered_items + ")",
'art': art,
'use_cache': False,
'path': ('{server}/emby/Users/{userid}/Items' +
'?ParentId=' + item.get("Id") +
'&Limit={ItemLimit}' +
'&SortBy=DatePlayed' +
'&SortOrder=Descending' +
'&IsVirtualUnaired=false' +
'&IsMissing=False' +
'&Fields={field_filters}' +
'&Filters=IsResumable' +
'&Recursive=true' +
'&ImageTypeLimit=1' +
'&format=json'),
'media_type': collection_type})
collections.append({
'title': item_name + string_load(30268) + " (" + show_x_filtered_items + ")",
'art': art,
'use_cache': False,
'path': ('{server}/emby/Users/{userid}/Items' +
'?ParentId=' + item.get("Id") +
'&CollapseBoxSetItems=false' +
'&GroupItemsIntoCollections=false' +
'&Recursive=true' +
'&Limit={ItemLimit}' +
'&IsVirtualUnaired=false' +
'&IsMissing=False' +
'&Fields={field_filters}' +
'&SortBy=DateCreated' +
'&SortOrder=Descending' +
'&Filters=IsUnplayed,IsNotFolder' +
'&IsPlayed=false' +
'&ImageTypeLimit=1' +
'&format=json'),
'media_type': collection_type})
2018-09-18 14:29:54 +10:00
if collection_type in ["boxsets"]:
collections.append({
'title': item_name,
'art': art,
'path': ('{server}/emby/Users/{userid}/Items' +
'?ParentId=' + item.get("Id") +
'&IsVirtualUnaired=false' +
'&IncludeItemTypes=Boxset' +
'&CollapseBoxSetItems=' + str(group_movies) +
'&GroupItemsIntoCollections=' + str(group_movies) +
'&Recursive=true' +
'&IsMissing=False' +
'&Fields={field_filters}' +
'&ImageTypeLimit=1' +
'&SortBy=Name' +
'&SortOrder=Ascending' +
'&format=json'),
'media_type': collection_type})
if collection_type in ["movies"]:
collections.append({
'title': item_name,
'art': art,
'path': ('{server}/emby/Users/{userid}/Items' +
'?ParentId=' + item.get("Id") +
'&IsVirtualUnaired=false' +
2018-09-18 14:29:54 +10:00
'&IncludeItemTypes=Movie' +
'&CollapseBoxSetItems=' + str(group_movies) +
'&GroupItemsIntoCollections=' + str(group_movies) +
2018-03-09 16:10:45 +11:00
'&Recursive=true' +
'&IsMissing=False' +
'&Fields={field_filters}' +
'&ImageTypeLimit=1' +
'&SortBy=Name' +
'&SortOrder=Ascending' +
'&format=json'),
'media_type': collection_type})
if collection_type == "tvshows":
collections.append({
'title': item_name,
'art': art,
'path': ('{server}/emby/Users/{userid}/Items' +
'?ParentId=' + item.get("Id") +
'&IsVirtualUnaired=false' +
'&IsMissing=False' +
'&Fields={field_filters}' +
'&Recursive=true' +
'&IncludeItemTypes=Series' +
'&ImageTypeLimit=1' +
'&SortBy=Name' +
'&SortOrder=Ascending' +
'&format=json'),
'media_type': collection_type})
2018-11-18 13:16:47 +11:00
2017-06-27 09:41:14 +10:00
collections.append({
2018-10-26 14:04:54 +11:00
'title': item_name + string_load(30285),
'art': art,
2017-06-27 09:41:14 +10:00
'path': ('{server}/emby/Users/{userid}/Items' +
'?ParentId=' + item.get("Id") +
'&IsVirtualUnaired=false' +
'&IsMissing=False' +
'&Fields={field_filters}' +
2017-06-27 09:41:14 +10:00
'&Filters=IsUnplayed' +
'&IsPlayed=false' +
2017-06-27 09:41:14 +10:00
'&Recursive=true' +
'&IncludeItemTypes=Series' +
'&SortBy=Name' +
'&SortOrder=Ascending' +
2017-06-27 09:41:14 +10:00
'&ImageTypeLimit=1' +
'&format=json'),
'media_type': 'tvshows'})
2018-11-18 13:16:47 +11:00
collections.append({
2018-11-18 13:16:47 +11:00
'title': item_name + string_load(30267) + " (" + show_x_filtered_items + ")",
'art': art,
2018-11-18 13:16:47 +11:00
'use_cache': False,
'path': ('{server}/emby/Users/{userid}/Items' +
'?ParentId=' + item.get("Id") +
'&Limit={ItemLimit}' +
'&SortBy=DatePlayed' +
'&SortOrder=Descending' +
'&IsVirtualUnaired=false' +
'&IsMissing=False' +
'&Fields={field_filters}' +
'&Filters=IsResumable' +
'&Recursive=true' +
'&IncludeItemTypes=Episode' +
'&ImageTypeLimit=1' +
'&format=json'),
'media_type': 'Episodes',
'name_format': 'Episode|episode_name_format'})
2018-11-18 13:16:47 +11:00
collections.append({
2018-11-18 13:16:47 +11:00
'title': item_name + string_load(30288) + " (" + show_x_filtered_items + ")",
'art': art,
2018-11-18 13:16:47 +11:00
'use_cache': False,
'path': ('{server}/emby/Users/{userid}/Items/Latest' +
'?ParentId=' + item.get("Id") +
'&Limit={ItemLimit}' +
'&IsVirtualUnaired=false' +
'&IsMissing=False' +
'&Fields={field_filters}' +
'&SortBy=DateCreated' +
'&SortOrder=Descending' +
'&Filters=IsUnplayed' +
'&IsPlayed=false' +
'&Recursive=true' +
'&IncludeItemTypes=Episode' +
'&ImageTypeLimit=1' +
'&format=json'),
'media_type': 'Episodes',
'name_format': 'Episode|episode_name_format'})
2018-11-18 13:16:47 +11:00
collections.append({
2018-11-18 13:16:47 +11:00
'title': item_name + string_load(30268) + " (" + show_x_filtered_items + ")",
'art': art,
2018-11-18 13:16:47 +11:00
'use_cache': False,
'path': ('{server}/emby/Users/{userid}/Items' +
'?ParentId=' + item.get("Id") +
'&Limit={ItemLimit}' +
'&IsVirtualUnaired=false' +
'&IsMissing=False' +
'&Fields={field_filters}' +
'&SortBy=DateCreated' +
'&SortOrder=Descending' +
'&Filters=IsUnplayed,IsNotFolder' +
'&IsPlayed=false' +
'&Recursive=true' +
'&IncludeItemTypes=Episode' +
'&ImageTypeLimit=1' +
'&format=json'),
'media_type': 'Episodes',
'name_format': 'Episode|episode_name_format'})
2018-11-18 13:16:47 +11:00
collections.append({
2018-11-18 13:16:47 +11:00
'title': item_name + string_load(30278) + " (" + show_x_filtered_items + ")",
'art': art,
2018-11-18 13:16:47 +11:00
'use_cache': False,
'path': ('{server}/emby/Shows/NextUp/?Userid={userid}' +
'&ParentId=' + item.get("Id") +
'&Limit={ItemLimit}' +
'&Recursive=true' +
'&Fields={field_filters}' +
'&Filters=IsUnplayed,IsNotFolder' +
'&IsPlayed=false' +
'&IsVirtualUnaired=false' +
'&IsMissing=False' +
'&IncludeItemTypes=Episode' +
'&ImageTypeLimit=1' +
'&format=json'),
'media_type': 'Episodes',
'name_format': 'Episode|episode_name_format'})
2018-11-18 13:16:47 +11:00
collections.append({
2018-10-26 14:04:54 +11:00
'title': item_name + string_load(30325),
'item_type': 'plugin_link',
'art': art,
'path': 'plugin://plugin.video.embycon/?mode=GENRES&item_type=tvshow&parent_id=' + item.get("Id"),
'media_type': 'tvshows'})
2018-05-09 13:24:02 +10:00
if type == "Channel":
collections.append({
'title': item_name,
'art': art,
2018-05-09 13:24:02 +10:00
'path': ('{server}/emby/Users/{userid}/Items' +
'?ParentId=' + item.get("Id") +
'&IsVirtualUnaired=false' +
'&IsMissing=False' +
'&Fields={field_filters}' +
'&ImageTypeLimit=1' +
'&format=json'),
'media_type': 'files',
'name_format': 'Episode|episode_name_format'})
2018-05-09 13:24:02 +10:00
if collection_type == "movies":
2017-06-27 09:41:14 +10:00
collections.append({
2018-10-26 14:04:54 +11:00
'title': item_name + string_load(30285),
'art': art,
2017-06-27 09:41:14 +10:00
'path': ('{server}/emby/Users/{userid}/Items' +
'?ParentId=' + item.get("Id") +
'&IncludeItemTypes=Movie' +
'&CollapseBoxSetItems=false' +
2018-09-18 14:29:54 +10:00
'&GroupItemsIntoCollections=false' +
'&Recursive=true' +
2017-06-27 09:41:14 +10:00
'&IsVirtualUnaired=false' +
'&IsMissing=False' +
'&Fields={field_filters}' +
2017-06-27 09:41:14 +10:00
'&Filters=IsUnplayed' +
'&IsPlayed=false' +
2017-06-27 09:41:14 +10:00
'&ImageTypeLimit=1' +
'&SortBy=Name' +
'&SortOrder=Ascending' +
2017-06-27 09:41:14 +10:00
'&format=json'),
'media_type': collection_type})
2018-11-18 13:16:47 +11:00
collections.append({
2018-11-18 13:16:47 +11:00
'title': item_name + string_load(30267) + " (" + show_x_filtered_items + ")",
'art': art,
2018-11-18 13:16:47 +11:00
'use_cache': False,
'path': ('{server}/emby/Users/{userid}/Items' +
'?ParentId=' + item.get("Id") +
'&IncludeItemTypes=Movie' +
'&CollapseBoxSetItems=false' +
2018-09-18 14:29:54 +10:00
'&GroupItemsIntoCollections=false' +
'&Recursive=true' +
'&Limit={ItemLimit}' +
'&SortBy=DatePlayed' +
'&SortOrder=Descending' +
'&IsVirtualUnaired=false' +
'&IsMissing=False' +
'&Fields={field_filters}' +
'&Filters=IsResumable' +
'&ImageTypeLimit=1' +
'&format=json'),
'media_type': collection_type})
2018-11-18 13:16:47 +11:00
collections.append({
2018-11-18 13:16:47 +11:00
'title': item_name + string_load(30268) + " (" + show_x_filtered_items + ")",
'art': art,
2018-11-18 13:16:47 +11:00
'use_cache': False,
'path': ('{server}/emby/Users/{userid}/Items' +
'?ParentId=' + item.get("Id") +
'&IncludeItemTypes=Movie' +
'&CollapseBoxSetItems=false' +
2018-09-18 14:29:54 +10:00
'&GroupItemsIntoCollections=false' +
'&Recursive=true' +
'&Limit={ItemLimit}' +
'&IsVirtualUnaired=false' +
'&IsMissing=False' +
'&Fields={field_filters}' +
'&SortBy=DateCreated' +
'&SortOrder=Descending' +
'&Filters=IsUnplayed,IsNotFolder' +
'&IsPlayed=false' +
'&ImageTypeLimit=1' +
'&format=json'),
'media_type': collection_type})
2018-11-18 13:16:47 +11:00
collections.append({
2018-10-26 14:04:54 +11:00
'title': item_name + string_load(30325),
'item_type': 'plugin_link',
'art': art,
'path': 'plugin://plugin.video.embycon/?mode=GENRES&item_type=movie&parent_id=' + item.get("Id"),
'media_type': collection_type})
2018-11-18 13:16:47 +11:00
collections.append({
'title': item_name + ' - Pages',
'item_type': 'plugin_link',
'art': art,
'path': 'plugin://plugin.video.embycon/?mode=MOVIE_PAGES&parent_id=' + item.get("Id"),
'media_type': collection_type})
# Add standard nodes
item_data = {}
2018-10-26 14:04:54 +11:00
item_data['title'] = string_load(30256)
2017-05-20 15:12:38 +10:00
item_data['media_type'] = 'Movies'
2017-06-27 09:41:14 +10:00
item_data['path'] = ('{server}/emby/Users/{userid}/Items' +
'?Fields={field_filters}' +
2018-09-18 14:29:54 +10:00
'&CollapseBoxSetItems=' + str(group_movies) +
'&GroupItemsIntoCollections=' + str(group_movies) +
'&Recursive=true' +
2018-09-18 14:29:54 +10:00
'&IncludeItemTypes=Movie' +
'&ImageTypeLimit=1' +
'&SortBy=Name' +
'&SortOrder=Ascending' +
'&format=json')
collections.append(item_data)
item_data = {}
2018-10-26 14:04:54 +11:00
item_data['title'] = string_load(30286)
2017-05-20 15:12:38 +10:00
item_data['media_type'] = 'Movies'
item_data['path'] = ('{server}/emby/Users/{userid}/Items' +
2017-06-27 09:41:14 +10:00
'?Recursive=true' +
2018-09-18 14:29:54 +10:00
'&CollapseBoxSetItems=false' +
'&GroupItemsIntoCollections=false' +
'&Fields={field_filters}' +
2017-06-27 09:41:14 +10:00
'&Filters=IsUnplayed' +
'&IsPlayed=false' +
'&IncludeItemTypes=Movie' +
'&ImageTypeLimit=1' +
'&SortBy=Name' +
'&SortOrder=Ascending' +
'&format=json')
collections.append(item_data)
item_data = {}
2018-11-18 13:16:47 +11:00
item_data['title'] = string_load(30258) + " (" + show_x_filtered_items + ")"
2017-05-20 15:12:38 +10:00
item_data['media_type'] = 'Movies'
2018-11-18 13:16:47 +11:00
item_data['use_cache'] = False
item_data['path'] = ('{server}/emby/Users/{userid}/Items' +
2018-11-18 13:16:47 +11:00
'?CollapseBoxSetItems=false' +
'&Limit={ItemLimit}' +
2018-09-18 14:29:54 +10:00
'&GroupItemsIntoCollections=false' +
'&Recursive=true' +
'&Fields={field_filters}' +
'&SortBy=DatePlayed' +
'&SortOrder=Descending' +
'&Filters=IsResumable' +
'&IncludeItemTypes=Movie' +
'&ImageTypeLimit=1' +
'&format=json')
collections.append(item_data)
2017-06-27 09:41:14 +10:00
item_data = {}
2018-11-18 13:16:47 +11:00
item_data['title'] = string_load(30257) + " (" + show_x_filtered_items + ")"
2017-06-27 09:41:14 +10:00
item_data['media_type'] = 'Movies'
2018-11-18 13:16:47 +11:00
item_data['use_cache'] = False
2017-06-27 09:41:14 +10:00
item_data['path'] = ('{server}/emby/Users/{userid}/Items' +
2018-11-18 13:16:47 +11:00
'?CollapseBoxSetItems=false' +
'&Limit={ItemLimit}' +
2018-09-18 14:29:54 +10:00
'&GroupItemsIntoCollections=false' +
2017-06-27 09:41:14 +10:00
'&Recursive=true' +
'&SortBy=DateCreated' +
'&Fields={field_filters}' +
2017-06-27 09:41:14 +10:00
'&SortOrder=Descending' +
'&Filters=IsUnplayed,IsNotFolder' +
'&IsPlayed=false' +
2017-06-27 09:41:14 +10:00
'&IncludeItemTypes=Movie' +
'&ImageTypeLimit=1' +
'&format=json')
collections.append(item_data)
item_data = {}
2018-10-26 14:04:54 +11:00
item_data['title'] = string_load(30259)
2017-05-20 15:12:38 +10:00
item_data['media_type'] = 'Movies'
2017-06-27 09:41:14 +10:00
item_data['path'] = ('{server}/emby/Users/{userid}/Items' +
'?Fields={field_filters}' +
2018-09-18 14:29:54 +10:00
'&CollapseBoxSetItems=false' +
'&GroupItemsIntoCollections=false' +
'&Recursive=true' +
'&Filters=IsFavorite' +
'&IncludeItemTypes=Movie' +
'&ImageTypeLimit=1' +
'&SortBy=Name' +
'&SortOrder=Ascending' +
'&format=json')
collections.append(item_data)
item_data = {}
2018-10-26 14:04:54 +11:00
item_data['title'] = string_load(30260)
2017-05-20 15:12:38 +10:00
item_data['media_type'] = 'BoxSets'
2017-06-27 09:41:14 +10:00
item_data['path'] = ('{server}/emby/Users/{userid}/Items' +
'?Recursive=true' +
'&Fields={field_filters}' +
'&IncludeItemTypes=BoxSet' +
'&ImageTypeLimit=1' +
'&SortBy=Name' +
'&SortOrder=Ascending' +
'&format=json')
collections.append(item_data)
item_data = {}
2018-10-26 14:04:54 +11:00
item_data['title'] = string_load(30261)
2017-05-20 15:12:38 +10:00
item_data['media_type'] = 'tvshows'
2017-06-27 09:41:14 +10:00
item_data['path'] = ('{server}/emby/Users/{userid}/Items' +
'?Fields={field_filters}' +
'&Recursive=true' +
'&IncludeItemTypes=Series' +
'&ImageTypeLimit=1' +
'&SortBy=Name' +
'&SortOrder=Ascending' +
'&format=json')
2017-05-17 16:05:57 +10:00
collections.append(item_data)
item_data = {}
2018-10-26 14:04:54 +11:00
item_data['title'] = string_load(30279)
2017-05-20 15:12:38 +10:00
item_data['media_type'] = 'tvshows'
2017-06-27 09:41:14 +10:00
item_data['path'] = ('{server}/emby/Users/{userid}/Items' +
'?Fields={field_filters}' +
'&Recursive=true' +
2017-06-27 09:41:14 +10:00
'&Filters=IsUnplayed' +
'&IsPlayed=false' +
'&IncludeItemTypes=Series' +
'&ImageTypeLimit=1' +
'&SortBy=Name' +
'&SortOrder=Ascending' +
'&format=json')
2017-05-17 16:05:57 +10:00
collections.append(item_data)
item_data = {}
2018-10-26 14:04:54 +11:00
item_data['title'] = string_load(30262)
item_data['media_type'] = 'tvshows'
item_data['path'] = ('{server}/emby/Users/{userid}/Items' +
'?Fields={field_filters}' +
'&Recursive=true' +
'&Filters=IsFavorite' +
'&IncludeItemTypes=Series' +
'&ImageTypeLimit=1' +
'&SortBy=Name' +
'&SortOrder=Ascending' +
'&format=json')
collections.append(item_data)
item_data = {}
2018-11-18 13:16:47 +11:00
item_data['title'] = string_load(30287) + " (" + show_x_filtered_items + ")"
item_data['media_type'] = 'Episodes'
2018-11-18 13:16:47 +11:00
item_data['use_cache'] = False
item_data['path'] = ('{server}/emby/Users/{userid}/Items/Latest' +
2018-11-18 13:16:47 +11:00
'?GroupItems=true' +
'&Limit={ItemLimit}' +
'&Recursive=true' +
'&SortBy=DateCreated' +
'&Fields={field_filters}' +
'&SortOrder=Descending' +
'&Filters=IsUnplayed' +
'&IsPlayed=false' +
'&IsVirtualUnaired=false' +
'&IsMissing=False' +
'&IncludeItemTypes=Episode' +
'&ImageTypeLimit=1' +
'&format=json')
item_data['name_format'] = 'Episode|episode_name_format'
collections.append(item_data)
2017-05-17 16:05:57 +10:00
item_data = {}
2018-11-18 13:16:47 +11:00
item_data['title'] = string_load(30264) + " (" + show_x_filtered_items + ")"
item_data['media_type'] = 'Episodes'
2018-11-18 13:16:47 +11:00
item_data['use_cache'] = False
item_data['path'] = ('{server}/emby/Users/{userid}/Items' +
2018-11-18 13:16:47 +11:00
'?SortBy=DatePlayed' +
'&Limit={ItemLimit}' +
'&SortOrder=Descending' +
'&Recursive=true' +
'&Fields={field_filters}' +
'&Filters=IsResumable' +
'&IncludeItemTypes=Episode' +
'&ImageTypeLimit=1' +
'&format=json')
item_data['name_format'] = 'Episode|episode_name_format'
collections.append(item_data)
item_data = {}
2018-11-18 13:16:47 +11:00
item_data['title'] = string_load(30263) + " (" + show_x_filtered_items + ")"
2017-05-20 15:12:38 +10:00
item_data['media_type'] = 'Episodes'
2018-11-18 13:16:47 +11:00
item_data['use_cache'] = False
item_data['path'] = ('{server}/emby/Users/{userid}/Items' +
2018-11-18 13:16:47 +11:00
'?SortBy=DateCreated' +
'&Limit={ItemLimit}' +
'&Recursive=true' +
'&Fields={field_filters}' +
'&SortOrder=Descending' +
'&Filters=IsUnplayed,IsNotFolder' +
'&IsPlayed=false' +
'&IsVirtualUnaired=false' +
'&IsMissing=False' +
'&IncludeItemTypes=Episode' +
'&ImageTypeLimit=1' +
'&format=json')
item_data['name_format'] = 'Episode|episode_name_format'
collections.append(item_data)
item_data = {}
2018-11-18 13:16:47 +11:00
item_data['title'] = string_load(30265) + " (" + show_x_filtered_items + ")"
2017-05-20 15:12:38 +10:00
item_data['media_type'] = 'Episodes'
2018-11-18 13:16:47 +11:00
item_data['use_cache'] = False
item_data['path'] = ('{server}/emby/Shows/NextUp/?Userid={userid}' +
'&Limit={ItemLimit}' +
'&Recursive=true' +
'&Fields={field_filters}' +
'&Filters=IsUnplayed,IsNotFolder' +
'&IsPlayed=false' +
'&IsVirtualUnaired=false' +
'&IsMissing=False' +
'&IncludeItemTypes=Episode' +
'&ImageTypeLimit=1' +
'&format=json')
item_data['name_format'] = 'Episode|episode_name_format'
2017-06-27 09:41:14 +10:00
collections.append(item_data)
item_data = {}
2018-10-26 14:04:54 +11:00
item_data['title'] = string_load(30318)
item_data['media_type'] = 'MusicAlbums'
item_data['path'] = ('{server}/emby/Users/{userid}/Items' +
'?Recursive=true' +
'&IncludeItemTypes=MusicAlbum' +
'&ImageTypeLimit=1' +
'&EnableImageTypes=Primary,Backdrop,Banner,Thumb' +
'&SortBy=Name' +
'&SortOrder=Ascending' +
'&format=json')
collections.append(item_data)
item_data = {}
item_data['title'] = string_load(30350) + " (" + show_x_filtered_items + ")"
item_data['art'] = art
item_data['media_type'] = 'MusicAlbums'
item_data['path'] = ('{server}/emby/Users/{userid}/Items/Latest' +
'?IncludeItemTypes=Audio' +
'&ImageTypeLimit=1' +
'&Limit={ItemLimit}' +
'&EnableImageTypes=Primary,Backdrop,Banner,Thumb' +
'&SortBy=Name' +
'&SortOrder=Ascending' +
'&format=json')
collections.append(item_data)
item_data = {}
item_data['title'] = string_load(30351) + " (" + show_x_filtered_items + ")"
item_data['art'] = art
item_data['media_type'] = 'MusicAlbum'
item_data['path'] = ('{server}/emby/Users/{userid}/Items' +
'?SortBy=DatePlayed' +
'&SortOrder=Descending' +
'&IncludeItemTypes=Audio' +
'&Limit={ItemLimit}' +
'&Recursive=true' +
'&ImageTypeLimit=1' +
'&EnableImageTypes=Primary,Backdrop,Banner,Thumb' +
'&Filters=IsPlayed' +
'&format=json')
collections.append(item_data)
item_data = {}
item_data['title'] = string_load(30352) + " (" + show_x_filtered_items + ")"
item_data['art'] = art
item_data['media_type'] = 'MusicAlbum'
item_data['path'] = ('{server}/emby/Users/{userid}/Items' +
'?SortBy=PlayCount' +
'&SortOrder=Descending' +
'&IncludeItemTypes=Audio' +
'&Limit={ItemLimit}' +
'&Recursive=true' +
'&ImageTypeLimit=1' +
'&EnableImageTypes=Primary,Backdrop,Banner,Thumb' +
'&Filters=IsPlayed' +
'&format=json')
collections.append(item_data)
2018-11-29 09:44:59 +11:00
item_data = {}
item_data['title'] = string_load(30319)
item_data['media_type'] = 'MusicArtists'
item_data['path'] = ('{server}/emby/Artists/AlbumArtists' +
'?Recursive=true' +
'&ImageTypeLimit=1' +
'&EnableImageTypes=Primary,Backdrop,Banner,Thumb' +
'&SortBy=Name' +
'&SortOrder=Ascending' +
'&format=json')
collections.append(item_data)
return collections
def showWidgets():
2018-11-18 13:16:47 +11:00
settings = xbmcaddon.Addon()
show_x_filtered_items = settings.getSetting("show_x_filtered_items")
2018-02-14 11:42:44 +11:00
url = ("{server}/emby/Movies/Recommendations" +
"?userId={userid}" +
"&categoryLimit=1" +
"&ItemLimit={ItemLimit}" +
"&format=json" +
"&ImageTypeLimit=1" +
"&Fields={field_filters}" +
"&Filters=IsUnplayed" +
"&IsPlayed=false" +
2018-02-14 11:42:44 +11:00
"&IsMissing=False")
2018-11-18 13:16:47 +11:00
addMenuDirectoryItem(string_load(30324) + " (" + show_x_filtered_items + ")",
"plugin://plugin.video.embycon/?mode=GET_CONTENT&use_cache=false&media_type=Movies&url=" + urllib.quote(url))
2018-02-14 11:42:44 +11:00
url = ("{server}/emby/Users/{userid}/Items" +
"?Limit={ItemLimit}" +
"&Ids={random_movies}" +
"&Fields={field_filters}" +
"&ImageTypeLimit=1")
2018-11-18 13:16:47 +11:00
addMenuDirectoryItem(string_load(30269) + " (" + show_x_filtered_items + ")",
"plugin://plugin.video.embycon/?mode=GET_CONTENT&use_cache=false&media_type=Movies&url=" + urllib.quote(url))
addMenuDirectoryItem(" - " + string_load(30257) + " (" + show_x_filtered_items + ")", 'plugin://plugin.video.embycon/?mode=WIDGET_CONTENT&type=recent_movies')
addMenuDirectoryItem(" - " + string_load(30258) + " (" + show_x_filtered_items + ")", 'plugin://plugin.video.embycon/?mode=WIDGET_CONTENT&type=inprogress_movies')
addMenuDirectoryItem(" - " + string_load(30269) + " (" + show_x_filtered_items + ")", 'plugin://plugin.video.embycon/?mode=WIDGET_CONTENT&type=random_movies')
addMenuDirectoryItem(" - " + string_load(30287) + " (" + show_x_filtered_items + ")", 'plugin://plugin.video.embycon/?mode=WIDGET_CONTENT&type=recent_tvshows')
addMenuDirectoryItem(" - " + string_load(30263) + " (" + show_x_filtered_items + ")", 'plugin://plugin.video.embycon/?mode=WIDGET_CONTENT&type=recent_episodes')
addMenuDirectoryItem(" - " + string_load(30264) + " (" + show_x_filtered_items + ")", 'plugin://plugin.video.embycon/?mode=WIDGET_CONTENT&type=inprogress_episodes')
addMenuDirectoryItem(" - " + string_load(30265) + " (" + show_x_filtered_items + ")", 'plugin://plugin.video.embycon/?mode=WIDGET_CONTENT&type=nextup_episodes')
xbmcplugin.endOfDirectory(int(sys.argv[1]))
2018-07-11 12:22:41 +10:00
def show_search():
2018-10-26 14:04:54 +11:00
addMenuDirectoryItem(string_load(30231), 'plugin://plugin.video.embycon/?mode=NEW_SEARCH&item_type=Movie')
addMenuDirectoryItem(string_load(30229), 'plugin://plugin.video.embycon/?mode=NEW_SEARCH&item_type=Series')
addMenuDirectoryItem(string_load(30235), 'plugin://plugin.video.embycon/?mode=NEW_SEARCH&item_type=Episode')
addMenuDirectoryItem(string_load(30337), 'plugin://plugin.video.embycon/?mode=NEW_SEARCH&item_type=Audio')
addMenuDirectoryItem(string_load(30338), 'plugin://plugin.video.embycon/?mode=NEW_SEARCH&item_type=MusicAlbum')
addMenuDirectoryItem(string_load(30339), 'plugin://plugin.video.embycon/?mode=NEW_SEARCH&item_type=Person')
xbmcplugin.endOfDirectory(int(sys.argv[1]))
def set_library_window_values(force=False):
log.debug("set_library_window_values Called forced={0}", force)
home_window = HomeWindow()
already_set = home_window.getProperty("view_item.0.name")
if not force and already_set:
return
for index in range(0, 20):
home_window.clearProperty("view_item.%i.name" % index)
home_window.clearProperty("view_item.%i.id" % index)
home_window.clearProperty("view_item.%i.type" % index)
home_window.clearProperty("view_item.%i.thumb" % index)
data_manager = DataManager()
url = "{server}/emby/Users/{userid}/Views"
result = data_manager.GetContent(url)
if result is None:
return
result = result.get("Items")
server = downloadUtils.getServer()
index = 0
for item in result:
type = item.get("CollectionType")
if type in ["movies", "boxsets", "music", "tvshows"]:
name = item.get("Name")
id = item.get("Id")
# plugin.video.embycon-
prop_name = "view_item.%i.name" % index
home_window.setProperty(prop_name, name)
log.debug("set_library_window_values: plugin.video.embycon-{0}={1}", prop_name, name)
prop_name = "view_item.%i.id" % index
home_window.setProperty(prop_name, id)
log.debug("set_library_window_values: plugin.video.embycon-{0}={1}", prop_name, id)
prop_name = "view_item.%i.type" % index
home_window.setProperty(prop_name, type)
log.debug("set_library_window_values: plugin.video.embycon-{0}={1}", prop_name, type)
thumb = downloadUtils.getArtwork(item, "Primary", server=server)
prop_name = "view_item.%i.thumb" % index
home_window.setProperty(prop_name, thumb)
log.debug("set_library_window_values: plugin.video.embycon-{0}={1}", prop_name, thumb)
index += 1