⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chn_nos.py

📁 XOT: XBMC Online TV Framework
💻 PY
📖 第 1 页 / 共 2 页
字号:
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+&amp;md5=[0-9a-f]+)">([^<]+)</a>'
            self.episodeItemRegex = '<a class="title" href="(/index.php/serie\?serID=\d+&amp;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+&amp;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 + -