📄 chn_nos.py
字号:
from cgi import logfile
from webbrowser import PROCESS_CREATION_DELAY
import xbmc, xbmcgui
import sys, re, urllib, os.path, math
#===============================================================================
# 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.channelButtonRegister.append(101)
register.channelRegister.append('chn_nos.Channel("uzg-channelwindow.xml", config.rootDir, config.skinFolder, channelCode="ned1")')
#register.channelButtonRegister.append(102)
register.channelRegister.append('chn_nos.Channel("uzg-channelwindow.xml", config.rootDir, config.skinFolder, channelCode="ned2")')
#register.channelButtonRegister.append(103)
register.channelRegister.append('chn_nos.Channel("uzg-channelwindow.xml", config.rootDir, config.skinFolder, channelCode="ned3")')
#===============================================================================
# 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
"""
try:
# call base function first to ensure all variables are there
chn_class.Channel.InitialiseVariables(self)
self.noImage = "nosimage.png"
self.baseUrl = "http://www.uitzendinggemist.nl"
self.requiresLogon = False
self.playerUrl = "http://player.omroep.nl/xml/metaplayer.xml.php"
self.maxXotVersion = "3.0.0"
if self.channelCode == "ned1":
self.mainListUri = "http://www.uitzendinggemist.nl/index.php/selectie?searchitem=net_zender&net_zender=1&sort=datum"
self.icon = "1icon.png"
self.iconLarge = "1large.png"
self.noImage = "nosimage.png"
self.channelName = "Nederland 1"
self.moduleName = "chn_nos.py"
self.sortOrder = 1
self.channelDescription = "Uitzendingen van de publieke zender Nederland 1"
elif self.channelCode == "ned2":
self.mainListUri = "http://www.uitzendinggemist.nl/index.php/selectie?searchitem=net_zender&net_zender=2&sort=datum"
self.icon = "2icon.png"
self.iconLarge = "2large.png"
self.noImage = "nosimage.png"
self.channelName = "Nederland 2"
self.channelDescription = "Uitzendingen van de publieke zender Nederland 2"
self.moduleName = "chn_nos.py"
self.sortOrder = 2
else:
self.mainListUri = "http://www.uitzendinggemist.nl/index.php/selectie?searchitem=net_zender&net_zender=3&sort=datum"
self.icon = "3icon.png"
self.iconLarge = "3large.png"
self.noImage = "nosimage.png"
self.channelName = "Nederland 3"
self.channelDescription = "Uitzendingen van de publieke zender Nederland 3"
self.moduleName = "chn_nos.py"
self.sortOrder = 3
self.contextMenuItems = []
self.contextMenuItems.append(contextmenu.ContextMenuItem("Play using Mplayer", "CtMnPlayMplayer", itemTypes="video", completeStatus=True))
self.contextMenuItems.append(contextmenu.ContextMenuItem("Play using DVDPlayer", "CtMnPlayDVDPlayer", itemTypes="video", completeStatus=True))
#self.episodeItemRegex = '<a class="title" href="(/index.php/serie\?serID=\d+&md5=[0-9a-f]+)">([^<]+)</a>'
self.episodeItemRegex = '<a class="title" href="(/index.php/serie\?serID=\d+&md5=[0-9a-f]+)">([^<]+)</a></td>\W+<td[^>]+>([^<]+)'
self.videoItemRegex = ''
self.folderItemRegex = '' #not possible, to complex here. ProcessFolderList is used
except:
logFile.debug("Error Initialising Varialbles for NOS", exc_info=True)
#==============================================================================
# non standard items
self.sortAlphabetically = True
return True
#==============================================================================
def initPlugin(self):
self.pluginMode = True
#check for cookie:
logFile.info("Checking for %s cookies.", self.channelName)
if uriHandler.CookieCheck('UGSES') and uriHandler.CookieCheck('CheckUGCookie'):
logFile.info("Cookies found. Continuing")
else:
logFile.info("No cookies found. Opening main site")
_temp = uriHandler.Open(self.baseUrl)
#==============================================================================
def ParseMainList(self):
"""
accepts an url and returns an list with items of type CListItem
Items have a name and url.
"""
items = []
logFile.info('Mainlist for %s parsing %s', self.channelName, self.mainListUri)
#check for cookie:
logFile.info("Checking for %s cookies.", self.channelName)
if uriHandler.CookieCheck('UGSES') and uriHandler.CookieCheck('CheckUGCookie'):
logFile.info("Cookies found. Continuing")
else:
logFile.info("No cookies found. Opening main site")
_temp = uriHandler.Open(self.baseUrl)
#now start opening
_data = uriHandler.Open(self.mainListUri)
# programma's
_resultItems = common.DoRegexFindAll(self.episodeItemRegex, _data)
for _item in _resultItems:
_tmp = common.clistItem(_item[1], self.baseUrl + common.StripAmp(_item[0]))
_tmp.date = _item[2]
_tmp.icon = self.icon
items.append(_tmp)
#because lists are downloaded according to date (else some programs will be missing), a sort on name is performed.
if self.sortAlphabetically:
items.sort(lambda x, y: cmp(x.name,y.name))
return items
#==============================================================================
def ProcessFolderList(self, url):
logFile.info('starting ParseFolder for '+url)
items = []
# get the data for most current episode
try:
# load first page as "pageBase"
data = uriHandler.Open(url, pb=True)
# see if it is an extended page or not:
extended = common.DoRegexFindAll('<u>terug naar programma</u>', data)
if extended != []:
items = self.ProcessExtendedPages(data)
else:
items = self.ProcessNormalPage(data)
# determine if an extended page item should be added
pageExtUrl = common.DoRegexFindAll('<a href="(/index.php/serie2\?serID=\d+&md5=[0-9a-f]+)"', data)
if pageExtUrl != []:
# add an folder item for it to the list
folderItem = common.clistItem("Oudere afleveringen", self.baseUrl + common.StripAmp(pageExtUrl[0]))
folderItem.icon = self.folderIcon
folderItem.thumb = self.noImage
folderItem.description = "Oudere, gearchiveerde items van '%s'." % items[0].name
#items.append(folderItem)
items.insert(0, folderItem)
return items
except:
logFile.critical("Error Parsing with new methode", exc_info=True)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -