def set_view(view_mode, view_code=0):
_log("set_view view_mode='"+view_mode+"', view_code="+str(view_code))
# Set the content for extended library views if needed
if view_mode==MOVIES:
_log("set_view content is movies")
xbmcplugin.setContent( int(sys.argv[1]) ,"movies" )
elif view_mode==TV_SHOWS:
_log("set_view content is tvshows")
xbmcplugin.setContent( int(sys.argv[1]) ,"tvshows" )
elif view_mode==SEASONS:
_log("set_view content is seasons")
xbmcplugin.setContent( int(sys.argv[1]) ,"seasons" )
elif view_mode==EPISODES:
_log("set_view content is episodes")
xbmcplugin.setContent( int(sys.argv[1]) ,"episodes" )
# Reads skin name
skin_name = xbmc.getSkinDir()
_log("set_view skin_name='"+skin_name+"'")
try:
if view_code==0:
_log("set_view view mode is "+view_mode)
view_codes = ALL_VIEW_CODES.get(view_mode)
view_code = view_codes.get(skin_name)
_log("set_view view code for "+view_mode+" in "+skin_name+" is "+str(view_code))
xbmc.executebuiltin("Container.SetViewMode("+str(view_code)+")")
else:
_log("set_view view code forced to "+str(view_code))
xbmc.executebuiltin("Container.SetViewMode("+str(view_code)+")")
except:
_log("Unable to find view code for view mode "+str(view_mode)+" and skin "+skin_name)
python类setContent()的实例源码
def setView(content, viewType):
# set content type so library shows more views and info
if content:
xbmcplugin.setContent(int(sys.argv[1]), content)
if ADDON.getSetting('auto-view') == 'true':#<<<----see here if auto-view is enabled(true)
xbmc.executebuiltin("Container.SetViewMode(%s)" % ADDON.getSetting(viewType) )#<<<-----then get the view type
def setView(content, viewType):
# set content type so library shows more views and info
if content:
xbmcplugin.setContent(int(sys.argv[1]), content)
if ADDON.getSetting('auto-view') == 'true':
xbmc.executebuiltin("Container.SetViewMode(%s)" % ADDON.getSetting(viewType) )
#checkGA()
def setView(content, viewType):
# set content type so library shows more views and info
if content:
xbmcplugin.setContent(int(sys.argv[1]), content)
if ADDON.getSetting('auto-view') == 'true':#<<<----see here if auto-view is enabled(true)
xbmc.executebuiltin("Container.SetViewMode(%s)" % ADDON.getSetting(viewType) )#<<<-----then get the view type
def setView(content, viewType):
if content:
xbmcplugin.setContent(int(sys.argv[1]), content)
if ADDON.getSetting('auto-view') == 'true':#<<<----see here if auto-view is enabled(true)
xbmc.executebuiltin("Container.SetViewMode(%s)" % ADDON.getSetting(viewType) )#<<<-----then get the view type
def setView(content, viewType):
if content:
xbmcplugin.setContent(int(sys.argv[1]), content)
if ADDON.getSetting('auto-view') == 'true':#<<<----see here if auto-view is enabled(true)
xbmc.executebuiltin("Container.SetViewMode(%s)" % ADDON.getSetting(viewType) )#<<<-----then get the view type
def setView(content, viewType):
if content:
xbmcplugin.setContent(int(sys.argv[1]), content)
if ADDON.getSetting('auto-view') == 'true':#<<<----see here if auto-view is enabled(true)
xbmc.executebuiltin("Container.SetViewMode(%s)" % ADDON.getSetting(viewType) )#<<<-----then get the view type
def add_list_items(self, items, content=None, end=True, withNextPage=False):
if content:
xbmcplugin.setContent(plugin.handle, content)
list_items = []
for item in items:
if isinstance(item, Category):
category_items = item.getListItems()
for url, li, isFolder in category_items:
if url and li:
list_items.append((url, li, isFolder))
elif isinstance(item, BrowsableMedia):
url, li, isFolder = item.getListItem()
if url and li:
list_items.append((url, li, isFolder))
if withNextPage and len(items) > 0:
# Add folder for next page
try:
totalNumberOfItems = items[0]._totalNumberOfItems
nextOffset = items[0]._offset + self._config.pageSize
if nextOffset < totalNumberOfItems and len(items) >= self._config.pageSize:
path = urlsplit(sys.argv[0]).path or '/'
path = path.split('/')[:-1]
path.append(str(nextOffset))
url = '/'.join(path)
self.add_directory_item(_T(30244).format(pos1=nextOffset, pos2=min(nextOffset+self._config.pageSize, totalNumberOfItems)), plugin.url_for_path(url))
except:
log('Next Page for URL %s not set' % sys.argv[0], xbmc.LOGERROR)
if len(list_items) > 0:
xbmcplugin.addDirectoryItems(plugin.handle, list_items)
if end:
xbmcplugin.endOfDirectory(plugin.handle)
def category(group):
promoGroup = {'rising': 'RISING', 'discovery': 'DISCOVERY', 'featured': 'NEWS'}.get(group, None)
items = session.get_category_items(group)
totalCount = 0
for item in items:
totalCount += len(item.content_types)
if totalCount == 1:
# Show Single content directly (Movies and TV Shows)
for item in items:
content_types = item.content_types
for content_type in content_types:
category_content(group, item.path, content_type, offset=0)
return
xbmcplugin.setContent(plugin.handle, 'files')
if promoGroup and totalCount > 10:
# Add Promotions as Folder on the Top if more than 10 Promotions available
add_directory(_T(30120), plugin.url_for(featured, group=promoGroup))
add_directory('Master %s (MQA)' % _T(30107), plugin.url_for(master_albums, offset=0))
add_directory('Master %s (MQA)' % _T(30108), plugin.url_for(master_playlists, offset=0))
# Add Category Items as Folders
add_items(items, content=None, end=not(promoGroup and totalCount <= 10))
if promoGroup and totalCount <= 10:
# Show up to 10 Promotions as single Items
promoItems = session.get_featured(promoGroup, types=['ALBUM', 'PLAYLIST', 'VIDEO'])
if promoItems:
add_items(promoItems, end=True)
def create_listing(listing, succeeded=True, update_listing=False, cache_to_disk=False, sort_methods=None,
view_mode=None, content=None):
"""
Create and return a context dict for a virtual folder listing
:param listing: the list of the plugin virtual folder items
:type listing: :class:`list` or :class:`types.GeneratorType`
:param succeeded: if ``False`` Kodi won't open a new listing and stays on the current level.
:type succeeded: bool
:param update_listing: if ``True``, Kodi won't open a sub-listing but refresh the current one.
:type update_listing: bool
:param cache_to_disk: cache this view to disk.
:type cache_to_disk: bool
:param sort_methods: the list of integer constants representing virtual folder sort methods.
:type sort_methods: tuple
:param view_mode: a numeric code for a skin view mode.
View mode codes are different in different skins except for ``50`` (basic listing).
:type view_mode: int
:param content: string - current plugin content, e.g. 'movies' or 'episodes'.
See :func:`xbmcplugin.setContent` for more info.
:type content: str
:return: context object containing necessary parameters
to create virtual folder listing in Kodi UI.
:rtype: ListContext
"""
return ListContext(listing, succeeded, update_listing, cache_to_disk, sort_methods, view_mode, content)
def _add_directory_items(self, context):
"""
Create a virtual folder listing
:param context: context object
:type context: ListContext
"""
self.log_debug('Creating listing from {0}'.format(str(context)))
if context.content is not None:
xbmcplugin.setContent(self._handle, context.content) # This must be at the beginning
for item in context.listing:
is_folder = item.get('is_folder', True)
if item.get('list_item') is not None:
list_item = item['list_item']
else:
list_item = self.create_list_item(item)
if item.get('is_playable'):
list_item.setProperty('IsPlayable', 'true')
is_folder = False
xbmcplugin.addDirectoryItem(self._handle, item['url'], list_item, is_folder)
if context.sort_methods is not None:
[xbmcplugin.addSortMethod(self._handle, method) for method in context.sort_methods]
xbmcplugin.endOfDirectory(self._handle,
context.succeeded,
context.update_listing,
context.cache_to_disk)
if context.view_mode is not None:
xbmc.executebuiltin('Container.SetViewMode({0})'.format(context.view_mode))
def set_view(view_mode, view_code=0):
_log("set_view view_mode='"+view_mode+"', view_code="+str(view_code))
# Set the content for extended library views if needed
if view_mode==MOVIES:
_log("set_view content is movies")
xbmcplugin.setContent( int(sys.argv[1]) ,"movies" )
elif view_mode==TV_SHOWS:
_log("set_view content is tvshows")
xbmcplugin.setContent( int(sys.argv[1]) ,"tvshows" )
elif view_mode==SEASONS:
_log("set_view content is seasons")
xbmcplugin.setContent( int(sys.argv[1]) ,"seasons" )
elif view_mode==EPISODES:
_log("set_view content is episodes")
xbmcplugin.setContent( int(sys.argv[1]) ,"episodes" )
# Reads skin name
skin_name = xbmc.getSkinDir()
_log("set_view skin_name='"+skin_name+"'")
try:
if view_code==0:
_log("set_view view mode is "+view_mode)
view_codes = ALL_VIEW_CODES.get(view_mode)
view_code = view_codes.get(skin_name)
_log("set_view view code for "+view_mode+" in "+skin_name+" is "+str(view_code))
xbmc.executebuiltin("Container.SetViewMode("+str(view_code)+")")
else:
_log("set_view view code forced to "+str(view_code))
xbmc.executebuiltin("Container.SetViewMode("+str(view_code)+")")
except:
_log("Unable to find view code for view mode "+str(view_mode)+" and skin "+skin_name)
def addLink(name,url,title,iconimage,fanart,info=None):
ok=True
liz=xbmcgui.ListItem(name, iconImage="DefaultVideo.png", thumbnailImage=iconimage,)
liz.setProperty('fanart_image',fanart)
liz.setProperty("IsPlayable", "true")
liz.setInfo( type="Video", infoLabels={ "Title": title } )
if info != None:
liz.setInfo( type="Video", infoLabels=info)
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=url,listitem=liz)
xbmcplugin.setContent(int(sys.argv[1]), 'episodes')
return ok
def addFreeLink(name,link_url,iconimage,fanart=None,scrape_type=None,info=None):
params = get_params()
ok=True
u=sys.argv[0]+"?url="+urllib.quote_plus(link_url)+"&mode=6&icon_image="+urllib.quote_plus(iconimage)
liz=xbmcgui.ListItem(name, iconImage=ICON, thumbnailImage=iconimage)
liz.setProperty("IsPlayable", "true")
liz.setInfo( type="Video", infoLabels={ "Title": name } )
if info != None:
liz.setInfo( type="Video", infoLabels=info)
liz.setProperty('fanart_image', fanart)
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz)
xbmcplugin.setContent(int(sys.argv[1]), 'episodes')
return ok
def addPremiumLink(name,link_url,iconimage,fanart=None,scrape_type=None,info=None):
params = get_params()
ok=True
u=sys.argv[0]+"?url="+urllib.quote_plus(link_url)+"&mode=5&icon_image="+urllib.quote_plus(iconimage)
liz=xbmcgui.ListItem(name, iconImage=ICON, thumbnailImage=iconimage)
liz.setProperty("IsPlayable", "true")
liz.setInfo( type="Video", infoLabels={ "Title": name } )
if info != None:
liz.setInfo( type="Video", infoLabels=info)
liz.setProperty('fanart_image', fanart)
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz)
xbmcplugin.setContent(int(sys.argv[1]), 'episodes')
return ok
def addDir(name,url,mode,iconimage,fanart=None,scrape_type=None,isFolder=True,info=None):
params = get_params()
ok=True
u=sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)+"&name="+urllib.quote_plus(name)+"&scrape_type="+urllib.quote_plus(str(scrape_type))+"&icon_image="+urllib.quote_plus(str(iconimage))
liz=xbmcgui.ListItem(name, iconImage=ICON, thumbnailImage=iconimage)
liz.setInfo( type="Video", infoLabels={ "Title": name } )
if info != None:
liz.setInfo( type="Video", infoLabels=info)
liz.setProperty('fanart_image', fanart)
ok=xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz,isFolder=isFolder)
xbmcplugin.setContent(int(sys.argv[1]), 'episodes')
return ok
plugintools.py 文件源码
项目:plugin.video.streamondemand-pureita
作者: orione7
项目源码
文件源码
阅读 23
收藏 0
点赞 0
评论 0
def set_view(view_mode, view_code=0):
_log("set_view view_mode='"+view_mode+"', view_code="+str(view_code))
# Set the content for extended library views if needed
if view_mode==MOVIES:
_log("set_view content is movies")
xbmcplugin.setContent( int(sys.argv[1]) ,"movies" )
elif view_mode==TV_SHOWS:
_log("set_view content is tvshows")
xbmcplugin.setContent( int(sys.argv[1]) ,"tvshows" )
elif view_mode==SEASONS:
_log("set_view content is seasons")
xbmcplugin.setContent( int(sys.argv[1]) ,"seasons" )
elif view_mode==EPISODES:
_log("set_view content is episodes")
xbmcplugin.setContent( int(sys.argv[1]) ,"episodes" )
# Reads skin name
skin_name = xbmc.getSkinDir()
_log("set_view skin_name='"+skin_name+"'")
try:
if view_code==0:
_log("set_view view mode is "+view_mode)
view_codes = ALL_VIEW_CODES.get(view_mode)
view_code = view_codes.get(skin_name)
_log("set_view view code for "+view_mode+" in "+skin_name+" is "+str(view_code))
xbmc.executebuiltin("Container.SetViewMode("+str(view_code)+")")
else:
_log("set_view view code forced to "+str(view_code))
xbmc.executebuiltin("Container.SetViewMode("+str(view_code)+")")
except:
_log("Unable to find view code for view mode "+str(view_mode)+" and skin "+skin_name)
def add_item(title, params, items=False, folder=True, playable=False, set_info=False, set_art=False,
watched=False, set_content=False, context_menu=None):
listitem = xbmcgui.ListItem(label=title)
if playable:
listitem.setProperty('IsPlayable', 'true')
folder = False
if set_art:
listitem.setArt(set_art)
else:
art = {
'icon': addon.getAddonInfo('icon'),
'fanart': addon.getAddonInfo('fanart')
}
listitem.setArt(art)
if set_info:
listitem.setInfo('video', set_info)
if not watched:
listitem.addStreamInfo('video', {'duration': 0})
if set_content:
xbmcplugin.setContent(_handle, set_content)
if context_menu:
run = '%s(%s)' % (context_menu['function'], context_menu['_url'])
listitem.addContextMenuItems([(context_menu['title'], run)])
listitem.setContentLookup(False) # allows sending custom headers/cookies to ffmpeg
recursive_url = _url + '?' + urllib.urlencode(params)
if items is False:
xbmcplugin.addDirectoryItem(_handle, recursive_url, listitem, folder)
else:
items.append((recursive_url, listitem, folder))
return items
def SetView(content):
xbmcplugin.setContent(pluginhandle, content)
xbmcplugin.endOfDirectory(pluginhandle, updateListing=False)
def set_content(content):
xbmcplugin.setContent(int(sys.argv[1]), content)
# HELPDIR**************************************************************