📄 chn_dumpert.py
字号:
#===============================================================================
# Import the default modules
#===============================================================================
from cgi import log
from common import clistItem
from uriopener import UriHandler
import xbmc, xbmcgui
import sys, os
import string
#===============================================================================
# Make global object available
#===============================================================================
import common
import config
import controls
import contextmenu
import chn_class
logFile = sys.modules['__main__'].globalLogFile
uriHandler = sys.modules['__main__'].globalUriHandler
#===============================================================================
# register the channels
#===============================================================================
if (sys.modules.has_key('progwindow')):
register = sys.modules['progwindow']
elif (sys.modules.has_key('plugin')):
register = sys.modules['plugin']
register.channelRegister.append('chn_dumpert.Channel("uzg-channelwindow.xml", config.rootDir, config.skinFolder, channelCode="dumpert")')
#===============================================================================
# main Channel Class
#===============================================================================
class Channel(chn_class.Channel):
#===============================================================================
# define class variables
#===============================================================================
def InitialiseVariables(self):
"""
Used for the initialisation of user defined parameters. All should be
present, but can be adjusted
"""
# call base function first to ensure all variables are there
chn_class.Channel.InitialiseVariables(self)
self.icon = "dumperticon.png"
self.iconLarge = "dumperticonlarge.png"
self.noImage = "dumpertimage.png"
self.backgroundImage = "" # if not specified, the one defined in the skin is used
self.backgroundImage16x9 = "" # if not specified, the one defined in the skin is used
self.channelName = "Dumpert.nl"
self.channelDescription = "Fimpjes van Dumpert.nl"
self.moduleName = "chn_dumpert.py"
self.maxXotVersion = "3.0.0"
self.sortOrder = 255 #max 255 channels
self.buttonID = 0
self.onUpDownUpdateEnabled = True
self.mainListUri = "http://www.dumpert.nl/filmpjes/%s/"
self.baseUrl = "http://www.dumpert.nl/mediabase/flv/%s_YTDL_1.flv.flv"
self.playerUrl = ""
self.requiresLogon = False
self.asxAsfRegex = '<[^\s]*REF href[^"]+"([^"]+)"' # default regex for parsing ASX/ASF files
self.episodeSort = True
#self.videoItemRegex = '<a class="item" href=\D+(\d+)/([^/]+)[^=]+="([^"]+)" alt="([^"]+)[^:]+<div class="date">([^<]+)' # used for the CreateVideoItem
self.videoItemRegex = '<a class="item" href="([^"]+)"[^=]+="([^"]+)" alt="([^"]+)[^:]+<div class="date">([^<]+)'
self.folderItemRegex = '' # used for the CreateFolderItem
self.mediaUrlRegex = "'(http://www.dumpert.nl/mediabase/flv/[^']+)'" # used for the UpdateVideoItem
return True
#==============================================================================
def ParseMainList(self):
"""
accepts an url and returns an list with items of type CListItem
Items have a name and url. This is used for the filling of the progwindow
"""
items = []
for page in range(0,10):
item = common.clistItem("Pagina %s" % (page), self.mainListUri % (page))
item.icon = self.icon;
items.append(item)
item = common.clistItem("Zoeken", "searchSite")
item.icon = self.icon;
items.append(item)
return items
#=============================================================================
def CreateVideoItem(self, resultSet):
"""
Accepts an arraylist of results. It returns an item.
"""
# 0 1 2 3
#<a class="item" href="([^"]+)"[^=]+="([^"]+)" alt="([^"]+)[^:]+<div class="date">([^<]+)
logFile.debug('starting CreateVideoItem for %s', self.channelName)
item = common.clistItem(resultSet[2],resultSet[0], type='video')
item.icon = self.icon;
item.description = resultSet[2]
#item.mediaurl = self.baseUrl % (resultSet[1])
item.thumb = self.noImage
item.thumbUrl = resultSet[1]
item.date = resultSet[3]
item.complete = False
item.downloadable = True
return item
#==============================================================================
def UpdateVideoItem(self, item):
"""
Updates the item
"""
item.thumb = self.CacheThumb(item.thumbUrl)
data = uriHandler.Open(item.url, pb=False)
results = common.DoRegexFindAll(self.mediaUrlRegex, data)
if len(results)==1:
item.mediaurl = results[0]
else:
item.mediaurl = results
if item.mediaurl == "":
item.complete = False
else:
item.complete = True
logFile.debug("VideoItem updated (mediaUrl=%s)", item.mediaurl)
return item
#==============================================================================
def SearchSite(self):
"""
Creates an list of items by searching the site
"""
items = []
keyboard = xbmc.Keyboard('')
keyboard.doModal()
if (keyboard.isConfirmed()):
needle = keyboard.getText()
if len(needle)>0:
#convert to HTML
needle = string.replace(needle, " ", "%20")
searchUrl = "http://www.dumpert.nl/search/V/%s/ " % (needle)
return self.ProcessFolderList(searchUrl)
return items
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -