Пример #1
0
 def get_media_data(self, key):
     url = "http://etv.err.ee/services/api/media/mediaData?stream=%s" % key
     buggalo.addExtraData('url', url)
     data = self.download_url(url)
     if data:
         json_data = json.loads(data)
         return json_data['media']['src']['hls']
Пример #2
0
def PseudoTV():
    import resources.lib.Overlay as Overlay
    xbmcgui.Window(10000).setProperty("PseudoTVRunning", "True")

    try:
        MyOverlayWindow = Overlay.TVOverlay("script.pseudotv.live.TVOverlay.xml", __cwd__, Skin_Select)
    except Exception: 
        buggalo.addExtraData("Skin_Select = ", str(Skin_Select))
        buggalo.onExceptionRaised()
        Error('PseudoTV Lite','Error loading "' + Skin_Select + '" skin!','Verify selected skin in settings') 
        return
        
    for curthread in threading.enumerate():
        try:
            log("Active Thread: " + str(curthread.name), xbmc.LOGERROR)
            if curthread.name != "MainThread":
                try:
                    curthread.join()      
                except: 
                    pass
                log("Joined " + curthread.name)               
        except: 
            pass
            
    del MyOverlayWindow
    xbmcgui.Window(10000).setProperty("PseudoTVRunning", "False")
Пример #3
0
  def getVideoUrl(self,videoid):
    url = 'http://kanal2.ee/video/playerPlaylistApi?id=%s' %  videoid
    buggalo.addExtraData('url', url)
    playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO)
    playlist.clear()

    videoxml = self.downloadUrl(url)
    if not videoxml:
      raise Kanal2Exception(ADDON.getLocalizedString(203))

    dl = ElementTree.fromstring(videoxml)
    for video in dl.findall("playlist/video"):
      for host in video.findall('streamItems'):
        videoHost = host.get('host')
      for stream in video.findall('streamItems/streamItem'):
        if __settings__.getSetting('hd') == "true":
          streamUrl =  stream.get('streamName').replace(' ', '%20').replace('k2lq1','k2hq1')
        else:
          streamUrl =  stream.get('streamName').replace(' ', '%20').replace('k2hq1','k2lq1')

        if not streamUrl:
          raise Kanal2Exception(ADDON.getLocalizedString(202))

      videoUrl = '%s playpath=%s' % (videoHost,streamUrl)

      item = xbmcgui.ListItem(video.findtext('name'), iconImage = ICON, path = videoUrl)
      playlist.add(videoUrl,item)
      firstItem = item
    #start = 0
    xbmcplugin.setResolvedUrl(HANDLE, True, item)
Пример #4
0
    def __init__(self, nChannel):
        self.conn = None
        self.eventQueue = list()
        self.event = threading.Event()
        self.eventResults = dict()

        self.categoriesList = None

        self.source = instantiateSource()

        self.updateInProgress = False
        self.updateFailed = False
        self.settingsChanged = None

        buggalo.addExtraData('source', self.source.KEY)
        for key in SETTINGS_TO_CHECK:
           buggalo.addExtraData('setting: %s' % key, ADDON.getSetting(key))

        self.channelList = list()

        profilePath = xbmc.translatePath(ADDON.getAddonInfo('profile'))
        if not os.path.exists(profilePath):
            os.makedirs(profilePath)
        self.databasePath = os.path.join(profilePath, Database.SOURCE_DB)

        threading.Thread(name='Database Event Loop', target=self.eventLoop).start()
Пример #5
0
    def __init__(self):
        super(TVGuide, self).__init__()
        self.source = None
        self.notification = None
        self.redrawingEPG = False
        self.isClosing = False
        self.controlAndProgramList = list()
        self.channelIdx = 0
        self.focusPoint = Point()
        self.epgView = EPGView()

        # add and removeControls were added post-eden
        self.hasAddControls = hasattr(self, 'addControls')
        self.hasRemoveControls = hasattr(self, 'removeControls')
        buggalo.addExtraData('hasAddControls', self.hasAddControls)
        buggalo.addExtraData('hasRemoveControls', self.hasRemoveControls)

        self.mode = MODE_EPG
        self.currentChannel = None

        self.osdChannel = None
        self.osdProgram = None

        # find nearest half hour
        self.viewStartDate = datetime.datetime.today()
        self.viewStartDate -= datetime.timedelta(minutes = self.viewStartDate.minute % 30, seconds = self.viewStartDate.second)
Пример #6
0
    def __init__(self, nChannel):
        self.connP = None

        self.eventQueue = list()
        self.event = threading.Event()
        self.eventResults = dict()

        self.categoriesList = None

        self.source = instantiateSource()

        self.updateInProgress = False
        self.updateFailed = False
        self.settingsChanged = None

        buggalo.addExtraData('source', self.source.KEY)
        for key in SETTINGS_TO_CHECK:
            buggalo.addExtraData('setting: %s' % key, ADDON.getSetting(key))

        self.channelList = []
        self.channelDict = {}

        profilePath = xbmc.translatePath(ADDON.getAddonInfo('profile'))
        if not os.path.exists(profilePath):
            os.makedirs(profilePath)

        self.programPath = os.path.join(profilePath, Database.PROGRAM_DB)

        threading.Thread(name='Database Event Loop',
                         target=self.eventLoop).start()
Пример #7
0
    def getVideoUrl(self, videoid):
        url = 'http://kanal2.ee/video/playerPlaylistApi?id=%s' % videoid
        buggalo.addExtraData('url', url)
        playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO)
        playlist.clear()

        videoxml = self.downloadUrl(url)
        if not videoxml:
            raise Kanal2Exception(ADDON.getLocalizedString(203))

        dl = ElementTree.fromstring(videoxml)
        for video in dl.findall("playlist/video"):
            for host in video.findall('streamItems'):
                videoHost = host.get('host')
            for stream in video.findall('streamItems/streamItem'):
                if __settings__.getSetting('hd') == "true":
                    streamUrl = stream.get('streamName').replace(
                        ' ', '%20').replace('k2lq1', 'k2hq1')
                else:
                    streamUrl = stream.get('streamName').replace(
                        ' ', '%20').replace('k2hq1', 'k2lq1')

                if not streamUrl:
                    raise Kanal2Exception(ADDON.getLocalizedString(202))

            videoUrl = '%s playpath=%s' % (videoHost, streamUrl)

            item = xbmcgui.ListItem(video.findtext('name'),
                                    iconImage=ICON,
                                    path=videoUrl)
            playlist.add(videoUrl, item)
            firstItem = item
        #start = 0
        xbmcplugin.setResolvedUrl(HANDLE, True, item)
        def f_retry(*args, **kwargs):
            mtries, mdelay = tries, delay
            try_one_last_time = True
            while mtries >= -1:
				if mtries == -1:
					dialog = xbmcgui.Dialog()
					ret = dialog.yesno(plugin, settings.getLocalizedString( 30054 ), '', '', settings.getLocalizedString( 30052 ), settings.getLocalizedString( 30053 ))
					if ret == False:
						mtries, mdelay = tries, delay
					else:
						ok = dialog.ok(plugin, settings.getLocalizedString( 30051 ))
						buggalo.addExtraData('error', str(e))
						raise Exception("retry Error")
				try:
					return f(*args, **kwargs)
					try_one_last_time = False
					break
				except ExceptionToCheck, e:
					if mtries >= 1:
						msg = "%s, Retrying in %d seconds..." % (str(e), mdelay)
						if logger:
							logger.warning(msg)
						else:
							print msg
						time.sleep(mdelay)
						mdelay *= backoff
					mtries -= 1
Пример #9
0
 def f_retry(*args, **kwargs):
     mtries, mdelay = tries, delay
     try_one_last_time = True
     while mtries >= -1:
         if mtries == -1:
             dialog = xbmcgui.Dialog()
             ret = dialog.yesno(plugin,
                                settings.getLocalizedString(30054), '',
                                '', settings.getLocalizedString(30052),
                                settings.getLocalizedString(30053))
             if ret == False:
                 mtries, mdelay = tries, delay
             else:
                 ok = dialog.ok(plugin,
                                settings.getLocalizedString(30051))
                 buggalo.addExtraData('error', str(e))
                 raise Exception("retry Error")
         try:
             return f(*args, **kwargs)
             try_one_last_time = False
             break
         except ExceptionToCheck, e:
             if mtries >= 1:
                 msg = "%s, Retrying in %d seconds..." % (str(e),
                                                          mdelay)
                 if logger:
                     logger.warning(msg)
                 else:
                     print msg
                 time.sleep(mdelay)
                 mdelay *= backoff
             mtries -= 1
Пример #10
0
  def listSchedule(self,channel,date):
    year,month,day = date.split("-")
    url = 'http://%s.err.ee/api/loader/GetTimelineDay/?year=%s&month=%s&day=%s' % (channel,year,month,day)
    buggalo.addExtraData('url', url)
    html = self.downloadUrl(url)
    if not html:
      raise EtvException(ADDON.getLocalizedString(203))

    html = json.loads(html)
    items = list()
    for s in html:
      if s['Image']:
        fanart = 'http://static.err.ee/gridfs/%s?width=720' % s['Image']
      else:
        fanart = FANART
      title = s['Header']
      plot = s['Lead']
      
      infoLabels = {
	'plot' : plot,
	'title' : title
      }

      item = xbmcgui.ListItem(title, iconImage = fanart)
      item.setInfo('video', infoLabels)
      item.setProperty('IsPlayable', 'true')
      item.setProperty('Fanart_Image', fanart)
      items.append((PATH + '?vaata=%s' %  s['Id'], item))
    xbmc.executebuiltin("Container.SetViewMode(500)")
    xbmcplugin.addSortMethod(HANDLE, xbmcplugin.SORT_METHOD_UNSORTED)
    xbmcplugin.addDirectoryItems(HANDLE, items)
    xbmcplugin.endOfDirectory(HANDLE)     
Пример #11
0
  def listSaade(self,seeria,saade):
    if saade != 'show-category-single-files':
      url = URL + 'seeria/' + saade + '/' + seeria + '/' + ARCHIVE_ID + '/date-desc/koik'
    else:
      url = URL + saade + '/' + seeria + '/' + ARCHIVE_ID + '/date-desc/koik'
          
    buggalo.addExtraData('url', url)
    html = self.downloadUrl(url)
    
    items = list()
    for s in re.finditer('/vaata/([^"]+)">([^<]+)<.*fileDateInList">\(([^)]+)\)',html):

      title = s.group(2)
      date = s.group(3)
      
      infoLabels = {
        'date' : date,
        'title' : title
      }
      
      item = xbmcgui.ListItem(title, iconImage = FANART)
      item.setInfo('video', infoLabels)
      item.setProperty('IsPlayable', 'true')
      item.setProperty('Fanart_Image', FANART)
      items.append((PATH + '?vaata=%s' %  s.group(1), item))
    xbmcplugin.addSortMethod(HANDLE, xbmcplugin.SORT_METHOD_DATE)
    xbmcplugin.addDirectoryItems(HANDLE, items)
    xbmcplugin.endOfDirectory(HANDLE)
Пример #12
0
    def get_video_url(self, videoid):
        """Get actual video file and start playing."""
        url = 'https://kanal2.postimees.ee/pluss/video/?id=%s' % videoid
        buggalo.addExtraData('url', url)
        playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO)
        playlist.clear()

        html = self.download_url(url)
        if not html:
            raise Kanal2Exception(ADDON.getLocalizedString(203))

        init = re.search("initK2Player.*\', \'episodes\', \'%s\', \'([^\']+)\'\);" % videoid, html, re.DOTALL)
        try:
            if init.group(1):
                dataurl = self.download_url("http://kanal2.postimees.ee/player/playlist/%s?type=episodes" % videoid,
                                            True)
                data = json.loads(dataurl)
                if not data:
                    raise Kanal2Exception(ADDON.getLocalizedString(202))

                videoUrl = "https://kanal-vod.babahhcdn.com/bb1037/_definst_/smil:kanal2/%s/playlist.m3u8?t=%s" % (
                data['data']['file'], init.group(1))
                infoLabels = {
                    'title': data['info']['subtitle'],
                    'plot': data['info']['description']
                }
                item = xbmcgui.ListItem(data['info']['subtitle'], iconImage=ICON, path=videoUrl)
                item.setInfo('video', infoLabels)
                playlist.add(videoUrl, item)
        except AttributeError:
            raise Kanal2Exception(ADDON.getLocalizedString(204))
        # start = 0
        xbmcplugin.setResolvedUrl(HANDLE, True, item)
Пример #13
0
    def listSaade(self, seeria, saade):
        if saade != 'show-category-single-files':
            url = URL + 'seeria/' + saade + '/' + seeria + '/' + ARCHIVE_ID + '/date-desc/koik'
        else:
            url = URL + saade + '/' + seeria + '/' + ARCHIVE_ID + '/date-desc/koik'

        buggalo.addExtraData('url', url)
        html = self.downloadUrl(url)

        items = list()
        for s in re.finditer(
                '/vaata/([^"]+)">([^<]+)<.*fileDateInList">\(([^)]+)\)', html):

            title = s.group(2)
            date = s.group(3)

            infoLabels = {'date': date, 'title': title}

            item = xbmcgui.ListItem(title, iconImage=FANART)
            item.setInfo('video', infoLabels)
            item.setProperty('IsPlayable', 'true')
            item.setProperty('Fanart_Image', FANART)
            items.append((PATH + '?vaata=%s' % s.group(1), item))
        xbmcplugin.addSortMethod(HANDLE, xbmcplugin.SORT_METHOD_DATE)
        xbmcplugin.addDirectoryItems(HANDLE, items)
        xbmcplugin.endOfDirectory(HANDLE)
Пример #14
0
    def play_live_stream(self, streamurl):
        buggalo.addExtraData('url', streamurl)

        playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO)
        playlist.clear()
        playlist.add(streamurl)
        xbmc.Player().play(streamurl)
Пример #15
0
    def get_media_location(self, key):
        url = "https://etv.err.ee/api/tv/getTvPageData?contentId=%s&contentOnly=true" % key
        buggalo.addExtraData('url', url)
        html = self.download_url(url)
        if html:
            html = json.loads(html)
            url = html['showInfo']['media']['src']['hls']

            sub = []
            languages = []
            languages.extend((
                self.get_subtitle_language(__settings__.getSetting('primaryLanguage')),
                self.get_subtitle_language(__settings__.getSetting('secondaryLanguage'))
            ))

            try:
                for language in languages:
                    for subtitle in html['showInfo']['media']['subtitles']:
                        if subtitle['srclang'] == language:
                            xbmc.log('subtitle path: %s' % (subtitle['src']), xbmc.LOGNOTICE)
                            sub = (subtitle['src'], language)
                            break
            except:
                pass
            
            return url.replace('//', 'https://'), sub
        else:
            raise EtvException(ADDON.getLocalizedString(202))
Пример #16
0
    def list_schedule(self, channel, date):
        year, month, day = date.split("-")
        url = 'https://etv.err.ee/api/tvSchedule/getTimelineSchedule2?year=%s&month=%s&day=%s&channel=%s' % (
            year, month, day, channel)
        buggalo.addExtraData('url', url)
        html = self.download_url(url)
        if not html:
            raise EtvException(ADDON.getLocalizedString(203))

        html = json.loads(html)
        items = list()
        for s in html:
            if s['mediaExist']:
                if s['horizontalPhotoUrl']:
                    fanart = s['horizontalPhotoUrl']
                else:
                    fanart = FANART
                title = s['programName']
                plot = s['name']

                infoLabels = {
                    'plot': plot,
                    'title': title
                }

                item = xbmcgui.ListItem(title, iconImage=fanart)
                item.setInfo('video', infoLabels)
                item.setProperty('IsPlayable', 'true')
                item.setProperty('Fanart_Image', fanart)
                items.append((PATH + '?vaata=%s' % s['contentId'], item))
        xbmc.executebuiltin("Container.SetViewMode(500)")
        xbmcplugin.addSortMethod(HANDLE, xbmcplugin.SORT_METHOD_UNSORTED)
        xbmcplugin.addDirectoryItems(HANDLE, items)
        xbmcplugin.endOfDirectory(HANDLE)
Пример #17
0
 def play_item(self, item, title):
     url = DelfiAddon.get_video(item)
     buggalo.addExtraData('url', url)
     playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO)
     playlist.clear()
     item = xbmcgui.ListItem(urllib.unquote_plus(title), iconImage=ICON, path=url)
     playlist.add(url, item)
     xbmcplugin.setResolvedUrl(HANDLE, True, item)
Пример #18
0
 def playStream(self,saade):
   url = self.getMediaKey(saade)
   buggalo.addExtraData('url', url)
   playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO)
   playlist.clear()
   
   item = xbmcgui.ListItem(saade, iconImage = ICON, path = url)
   playlist.add(url,item)
   xbmcplugin.setResolvedUrl(HANDLE, True, item)
Пример #19
0
    def playStream(self, saade):
        url = self.getMediaKey(saade)
        buggalo.addExtraData('url', url)
        playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO)
        playlist.clear()

        item = xbmcgui.ListItem(saade, iconImage=ICON, path=url)
        playlist.add(url, item)
        xbmcplugin.setResolvedUrl(HANDLE, True, item)
Пример #20
0
  def getMediaKey(self,saade):
    url = URL + 'vaata/' + saade
    buggalo.addExtraData('url', url)
    html = self.downloadUrl(url)
    
    if html:
      key = re.search('data">([^<]+).MXF</', html, re.DOTALL)
      if key:
	return key.group(1) + '.flv'
    else:
      raise ErrException(ADDON.getLocalizedString(202))
Пример #21
0
 def getMediaLocation(self,key):
   url = "http://etv.err.ee/api/loader/GetTimeLineContent/%s" % key
   buggalo.addExtraData('url', url)
   html = self.downloadUrl(url)
   if html:
     html = json.loads(html)
     for url in html['MediaSources']:
       return 'rtmp%s' % url['Content'].replace('@','_definst_/')
     raise EtvException(ADDON.getLocalizedString(202))
   else:
     raise EtvException(ADDON.getLocalizedString(202))
Пример #22
0
    def getMediaKey(self, saade):
        url = URL + 'vaata/' + saade
        buggalo.addExtraData('url', url)
        html = self.downloadUrl(url)

        if html:
            key = re.search("var src = '(.*)'", html)
            if key:
                # NOTE: .mp4 works as well
                return 'https:' + key.group(1)
        else:
            raise ErrException(ADDON.getLocalizedString(202))
Пример #23
0
 def getMediaKey(self,saade):
   url = URL + 'vaata/' + saade
   buggalo.addExtraData('url', url)
   html = self.downloadUrl(url)
   
   if html:
     key = re.search('hls\': \'([^<]+)\'}', html, re.DOTALL|re.IGNORECASE)
     if key:
       # NOTE: .mp4 works as well
       return 'https:' + key.group(1)
   else:
     raise ErrException(ADDON.getLocalizedString(202))
Пример #24
0
  def listVideos(self,saade):
    telecast = 'http://kanal2.ee/video/showreelapi?telecastid=%s' % self.getTelecastID(saade)
    fanart = self.downloadAndCacheFanart(saade, True) # download pictures
    buggalo.addExtraData('url', telecast)
    telecastxml = self.downloadUrl(telecast)
    if not telecastxml:
      raise Kanal2Exception(ADDON.getLocalizedString(203))

    try:
      doc = ElementTree.fromstring(telecastxml.replace('&', '&amp;'))
    except Exception, ex:
      raise Kanal2Exception(str(ex))
Пример #25
0
    def list_videos(self, saade):
        url = "https://kanal2.postimees.ee/pluss/saade/%s?onpage=36" % saade
        xbmc.log('saate url: %s' % url, xbmc.LOGNOTICE)
        fanart = self.download_and_cache_fanart(saade, True)  # download pictures
        buggalo.addExtraData('url', url)
        html = BeautifulSoup(self.download_url(url), 'html.parser')
        if not html:
            raise Kanal2Exception(ADDON.getLocalizedString(203))

        try:
            blocks = html.find_all(class_="row onevideo_2col")
        except Exception, ex:
            raise Kanal2Exception(str(ex))
Пример #26
0
def executeJSON(request):
    """Execute JSON-RPC Command

    Args:
        request: Dictionary with JSON-RPC Commands
    """
    rpccmd = json.dumps(request)  # create string from dict
    json_query = xbmc.executeJSONRPC(rpccmd)
    json_response = json.loads(json_query)
    # in case of exception this will be sent
    buggalo.addExtraData('len(json_query)', len(json_query))
    buggalo.addExtraData('len(json_response)', len(json_response))
    return json_response
Пример #27
0
    def listVideos(self, saade):
        telecast = 'http://kanal2.ee/video/showreelapi?telecastid=%s' % self.getTelecastID(
            saade)
        fanart = self.downloadAndCacheFanart(saade, True)  # download pictures
        buggalo.addExtraData('url', telecast)
        telecastxml = self.downloadUrl(telecast)
        if not telecastxml:
            raise Kanal2Exception(ADDON.getLocalizedString(203))

        try:
            doc = ElementTree.fromstring(telecastxml.replace('&', '&amp;'))
        except Exception, ex:
            raise Kanal2Exception(str(ex))
Пример #28
0
 def playStream(self,vaata):
   if vaata == '00000000-0000-0000-0000-000000000000':
     raise EtvException(ADDON.getLocalizedString(202))
   if ":80/live" in vaata:
     saade = vaata
   else:
     saade = EtvAddon.getMediaLocation(vaata)
   buggalo.addExtraData('saade', saade)
   playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO)
   playlist.clear()
   
   item = xbmcgui.ListItem(saade, iconImage = ICON, path = saade)
   playlist.add(saade,item)
   xbmcplugin.setResolvedUrl(HANDLE, True, item)
Пример #29
0
    def __init__(self, addon, cachePath):
        self.cachePath = cachePath
        self.updateInProgress = False
        buggalo.addExtraData('source', self.KEY)
        for key in SETTINGS_TO_CHECK:
            buggalo.addExtraData('setting: %s' % key, ADDON.getSetting(key))

        try:
            self.conn = sqlite3.connect(os.path.join(self.cachePath, self.SOURCE_DB), detect_types=sqlite3.PARSE_DECLTYPES, check_same_thread = False)
            self.conn.execute('PRAGMA foreign_keys = ON')
            self.conn.row_factory = sqlite3.Row
            self._createTables()
        except sqlite3.OperationalError, ex:
            raise SourceUpdateInProgressException(ex)
def executeJSON(request):
    """Execute JSON-RPC Command
    
    Args:
        request: Dictionary with JSON-RPC Commands
    """
    rpccmd = simplejson.dumps(request) # create string from dict
    json_query = xbmc.executeJSONRPC(rpccmd)
    json_query = unicode(json_query, 'utf-8', errors='ignore')
    json_response = simplejson.loads(json_query)  
    # in case of exception this will be sent
    buggalo.addExtraData('len(json_query)',len(json_query));
    buggalo.addExtraData('len(json_response)', len(json_response));
    return json_response
Пример #31
0
    def list_videos(self, saade):
        url = "https://kanal2.postimees.ee/pluss/saade/%s?onpage=36" % saade
        xbmc.log('saate url: %s' % url, xbmc.LOGNOTICE)
        fanart = self.download_and_cache_fanart(saade,
                                                True)  # download pictures
        buggalo.addExtraData('url', url)
        html = BeautifulSoup(self.download_url(url), 'html.parser')
        if not html:
            raise Kanal2Exception(ADDON.getLocalizedString(203))

        try:
            blocks = html.find_all(class_="row onevideo_2col")
        except Exception, ex:
            raise Kanal2Exception(str(ex))
Пример #32
0
    def listErrCategory(self):
        url = URL
        buggalo.addExtraData('url', url)
        html = self.downloadUrl(url)
        if not html:
            raise ErrException(ADDON.getLocalizedString(200))

        items = list()
        for k in re.finditer('alamkategooria/([^/]+)">([^<]+)</a>', html):
            #fanart = self.downloadAndCacheFanart(key, None)
            item = xbmcgui.ListItem(k.group(2), iconImage=FANART)
            item.setProperty('Fanart_Image', FANART)
            items.append((PATH + '?seeria=%s' % k.group(1), item, True))
        xbmcplugin.addDirectoryItems(HANDLE, items)
        xbmcplugin.endOfDirectory(HANDLE)
Пример #33
0
 def listErrCategory(self):
   url = URL
   buggalo.addExtraData('url', url)
   html = self.downloadUrl(url)
   if not html:
     raise ErrException(ADDON.getLocalizedString(200))
   
   items = list()
   for k in re.finditer('alamkategooria/([^/]+)">([^<]+)</a>',html):
     #fanart = self.downloadAndCacheFanart(key, None)
     item = xbmcgui.ListItem(k.group(2), iconImage=FANART)
     item.setProperty('Fanart_Image', FANART)
     items.append((PATH + '?seeria=%s' % k.group(1), item, True))
   xbmcplugin.addDirectoryItems(HANDLE, items)
   xbmcplugin.endOfDirectory(HANDLE)
Пример #34
0
    def list_videos(self, categoryId, page):

        if "live/" in categoryId or "saated" in categoryId:
            url = 'http://tv.%s/%s/?page=%s' % (MAIN_URL, categoryId, page)
        else:
            url = 'http://tv.%s/saated/%s/?page=%s' % (MAIN_URL, categoryId, page)
        buggalo.addExtraData('url', url)
        html = self.download_url(url)
        if not html:
            raise DelfiException(ADDON.getLocalizedString(203).encode('utf-8'))

        items = list()
        html = html.replace('</div></div></div>', '</div></div></div>\r\n')
        regex = 'img class="responsive" src="([^"]+)".*c-block-art-title.*href="([^"]+)">([^<]+)</a'
        for node in re.finditer(regex, html):
            title = node.group(3)
            image = node.group(1)
            videoid = node.group(2)
            infoLabels = {
                'title': title
            }

            if image:
                fanart = image
            else:
                fanart = FANART

            item = xbmcgui.ListItem(title, iconImage=fanart)
            item.setInfo('video', infoLabels)
            item.setProperty('IsPlayable', 'true')
            item.setProperty('Fanart_Image', fanart)
            items.append((PATH + '?play=%s&title=%s' % (videoid, urllib.quote_plus(title.replace("'", "\'"))), item))
        try:
            pagex = '<a class="item item-next.*href="([^"]+)"'
            pagination = re.search(pagex, html)
            if pagination:
                if pagination.group(1) != "javascript:void(0)":
                    item = xbmcgui.ListItem(ADDON.getLocalizedString(30008).encode('utf-8'), iconImage=fanart)
                    item.setProperty('IsPlayable', 'true')
                    item.setProperty('Fanart_Image', fanart)
                    items.append(
                        (PATH + '?category=%s&%s' % (categoryId, pagination.group(1).replace('?', '')), item, True))
        except:
            pass
        xbmcplugin.addDirectoryItems(HANDLE, items)
        xbmcplugin.endOfDirectory(HANDLE)
Пример #35
0
 def listSeries(self,seeria):
   url = URL + '/alamkategooria/%s/' % seeria + ARCHIVE_ID
   buggalo.addExtraData('url', url)
   html = self.downloadUrl(url)
   if not html:
     raise ErrException(ADDON.getLocalizedString(203))
   
   items = list()
   if html:
     item = xbmcgui.ListItem('Üksikud saated', iconImage=FANART)
     item.setProperty('Fanart_Image', FANART)
     items.append((PATH + '?seeria=%s&saade=%s' % (seeria, 'show-category-single-files'), item, True))
   for s in re.finditer('seeria/([^/]+).*">([^<]+)</a>',html):
     item = xbmcgui.ListItem(s.group(2), iconImage=FANART)
     item.setProperty('Fanart_Image', FANART)
     items.append((PATH + '?seeria=%s&saade=%s' % (seeria,s.group(1)), item, True))
   xbmcplugin.addDirectoryItems(HANDLE, items)
   xbmcplugin.endOfDirectory(HANDLE)
Пример #36
0
    def get_live_streams(self):
        url = 'http://tv.delfi.ee/live'
        buggalo.addExtraData('url', url)
        html = BeautifulSoup(self.download_url(url), 'html.parser')
        if not html:
            raise DelfiException(ADDON.getLocalizedString(202).encode('utf-8'))

        items = list()
        live_urls = list()
        urlid = html.find_all(class_="stream-event")
        for url in urlid:
            if url.get('data-dschedule-whref'):
                live_urls.append(url.get('data-dschedule-whref'))
        for live_url in live_urls:
            html = self.download_url(live_url)
            for m in re.findall('#stream=([^&]+)&', html, re.DOTALL):
                data = json.loads(urllib.unquote(m))
                title = data['title'].replace('+', ' ')
                stream_hu = ''
                stream_lu = ''
                for streams in data['versions']:
                    if streams['caption'] == "HQ":
                        stream_hu = data['rtmp'] + streams['flash']
                    if streams['caption'] == "LQ":
                        stream_lu = data['rtmp'] + streams['flash']

                # try to fall back sd if hd url is not available and vice versa
                if not stream_hu and not stream_lu:
                    raise DelfiException(ADDON.getLocalizedString(30005).encode('utf-8'))
                if not stream_hu:
                    stream_hu = stream_lu
                if not stream_lu:
                    stream_lu = stream_hu

                if __settings__.getSetting('hd'):
                    streamurl = stream_hu
                else:
                    streamurl = stream_lu

            item = xbmcgui.ListItem(title, iconImage=FANART)
            item.setProperty('Fanart_Image', FANART)
            items.append((PATH + '?category=live&url=%s' % streamurl, item, True))
        xbmcplugin.addDirectoryItems(HANDLE, items)
        xbmcplugin.endOfDirectory(HANDLE)
Пример #37
0
    def __init__(self, addon, cachePath):
        self.cachePath = cachePath
        self.updateInProgress = False
        buggalo.addExtraData('source', self.KEY)
        for key in SETTINGS_TO_CHECK:
            buggalo.addExtraData('setting: %s' % key, ADDON.getSetting(key))

        self.channelList = list()
        self.player = xbmc.Player()
        self.osdEnabled = addon.getSetting('enable.osd') == 'true'

        databasePath = os.path.join(self.cachePath, self.SOURCE_DB)
        for retries in range(0, 3):
            try:
                self.conn = sqlite3.connect(
                    databasePath,
                    detect_types=sqlite3.PARSE_DECLTYPES,
                    check_same_thread=False)
                self.conn.execute('PRAGMA foreign_keys = ON')
                self.conn.row_factory = sqlite3.Row

                # create and drop dummy table to check if database is locked
                c = self.conn.cursor()
                c.execute(
                    'CREATE TABLE database_lock_check(id TEXT PRIMARY KEY)')
                c.execute('DROP TABLE database_lock_check')
                c.close()

                self._createTables()
                self.settingsChanged = self.wasSettingsChanged(addon)
                break

            except sqlite3.OperationalError, ex:
                raise SourceUpdateInProgressException(ex)
            except sqlite3.DatabaseError:
                self.conn = None
                try:
                    os.unlink(databasePath)
                except OSError:
                    pass
                xbmcgui.Dialog().ok(ADDON.getAddonInfo('name'),
                                    strings(DATABASE_SCHEMA_ERROR_1),
                                    strings(DATABASE_SCHEMA_ERROR_2),
                                    strings(DATABASE_SCHEMA_ERROR_3))
Пример #38
0
 def listPrograms(self):
   url = "http://kanal2.ee/saated"
   buggalo.addExtraData('url', url)
   html = self.downloadUrl(url)
   
   saated = {}
   for m in re.finditer('local:(.*)', html):
     saated = m.group(1).replace('tokens:', '\"tokens\":')
   saated = saated[:-1] # remove trailing comma
   saated = saated.replace("\\'", "'") # replace invalid escapes
   saated = json.loads(saated) # load as JSON
     
   items = list()
   for s in sorted(saated):
     fanart = self.downloadAndCacheFanart(s['url'], None) # set fetch to None so it would not fetch all the pictures at once
     item = xbmcgui.ListItem(s['name'], iconImage=fanart) 
     item.setProperty('Fanart_Image', fanart)
     items.append((PATH + '?program=%s' % s['url'], item, True))
   xbmcplugin.addDirectoryItems(HANDLE, items)
   xbmcplugin.endOfDirectory(HANDLE)
Пример #39
0
    def listSeries(self, seeria):
        url = URL + '/alamkategooria/%s/' % seeria + ARCHIVE_ID
        buggalo.addExtraData('url', url)
        html = self.downloadUrl(url)
        if not html:
            raise ErrException(ADDON.getLocalizedString(203))

        items = list()
        if html:
            item = xbmcgui.ListItem('Üksikud saated', iconImage=FANART)
            item.setProperty('Fanart_Image', FANART)
            items.append((PATH + '?seeria=%s&saade=%s' %
                          (seeria, 'show-category-single-files'), item, True))
        for s in re.finditer('seeria/([^/]+).*">([^<]+)</a>', html):
            item = xbmcgui.ListItem(s.group(2), iconImage=FANART)
            item.setProperty('Fanart_Image', FANART)
            items.append((PATH + '?seeria=%s&saade=%s' % (seeria, s.group(1)),
                          item, True))
        xbmcplugin.addDirectoryItems(HANDLE, items)
        xbmcplugin.endOfDirectory(HANDLE)
Пример #40
0
    def play_stream(self, vaata):
        if vaata == '00000000-0000-0000-0000-000000000000':
            raise EtvException(ADDON.getLocalizedString(202))
        if "live/" in vaata:
            saade = vaata
        else:
            saade, subs = EtvAddon.get_media_location(vaata)
        buggalo.addExtraData('saade', saade)
        xbmc.log('saade: %s' % saade, xbmc.LOGNOTICE)
        playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO)
        playlist.clear()

        item = xbmcgui.ListItem(saade, iconImage=ICON, path=saade)

        try:
            if subs:
                item.setSubtitles(subs)
        except:
            pass
        playlist.add(saade, item)
        xbmcplugin.setResolvedUrl(HANDLE, True, item)
Пример #41
0
    def list_programs(self):
        url = "http://kanal2.postimees.ee/pluss/shows?tab=arhiiv"
        buggalo.addExtraData('url', url)
        html = self.download_url(url)

        saated = {}
        for m in re.finditer('local:(.*)', html):
            saated = m.group(1).replace('tokens:', '\"tokens\":')
        saated = saated[:-1]  # remove trailing comma
        saated = saated.replace("\\'", "'")  # replace invalid escapes
        saated = json.loads(saated)  # load as JSON

        items = list()
        for s in sorted(saated):
            # set fetch to None so it would not fetch all the pictures at once
            fanart = self.download_and_cache_fanart(s['url'], None)
            item = xbmcgui.ListItem(s['name'], iconImage=fanart)
            item.setProperty('Fanart_Image', fanart)
            items.append((PATH + '?program=%s' % s['url'], item, True))
        xbmcplugin.addDirectoryItems(HANDLE, items)
        xbmcplugin.endOfDirectory(HANDLE)
Пример #42
0
def play_video( name, url, thumb, plot, studio, starttime, backup_url ):
	if url == 'None':
		dialog = xbmcgui.Dialog()
		ok = dialog.ok( plugin , settings.getLocalizedString( 30008 ) )
		return
	if url.find('http://urs.pbs.org/redirect/') != -1:
		try:
			import requests
			status = 0
			headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0'}
			while status <= 10:
				if status != 0: time.sleep(3)
				r = requests.head(url , headers=headers, allow_redirects=False)
				new_url = r.headers['location']
				if new_url != None: break
				status += 1
			infoLabels = { "Title": name , "Studio": "PBS: " + studio, "Plot": plot }
			playListItem(label = name, image = thumb, path = clean(new_url), infoLabels = infoLabels, PlayPath = False)
			return
		except  Exception, e:
			print 'PBS - Using backup_url'
			if backup_url != 'None':
				infoLabels = { "Title": name , "Studio": "PBS: " + studio, "Plot": plot }
				playListItem(label = name, image = thumb, path = clean(backup_url), infoLabels = infoLabels, PlayPath = False)
				return
			else:
				dialog = xbmcgui.Dialog()
				ok = dialog.ok( plugin , settings.getLocalizedString( 30008 ) )
				ok = dialog.ok(plugin, settings.getLocalizedString( 30051 ))
				buggalo.addExtraData('url', url)
				buggalo.addExtraData('error', str(e))
				buggalo.addExtraData('info', studio + ' - ' + name)
				raise Exception("redirect_url ERROR")
				return
Пример #43
0
    def __init__(self, addon, cachePath):
        self.cachePath = cachePath
        self.updateInProgress = False
        buggalo.addExtraData('source', self.KEY)
        for key in SETTINGS_TO_CHECK:
            buggalo.addExtraData('setting: %s' % key, ADDON.getSetting(key))

        self.channelList = list()
        self.player = xbmc.Player()
        self.osdEnabled = addon.getSetting('enable.osd') == 'true'

        databasePath = os.path.join(self.cachePath, self.SOURCE_DB)
        for retries in range(0, 3):
            try:
                self.conn = sqlite3.connect(databasePath, detect_types=sqlite3.PARSE_DECLTYPES, check_same_thread = False)
                self.conn.execute('PRAGMA foreign_keys = ON')
                self.conn.row_factory = sqlite3.Row

                # create and drop dummy table to check if database is locked
                c = self.conn.cursor()
                c.execute('CREATE TABLE database_lock_check(id TEXT PRIMARY KEY)')
                c.execute('DROP TABLE database_lock_check')
                c.close()

                self._createTables()
                self.settingsChanged = self.wasSettingsChanged(addon)
                break

            except sqlite3.OperationalError, ex:
                raise SourceUpdateInProgressException(ex)
            except sqlite3.DatabaseError:
                self.conn = None
                try:
                    os.unlink(databasePath)
                except OSError:
                    pass
                xbmcgui.Dialog().ok(ADDON.getAddonInfo('name'), strings(DATABASE_SCHEMA_ERROR_1),
                    strings(DATABASE_SCHEMA_ERROR_2), strings(DATABASE_SCHEMA_ERROR_3))
Пример #44
0
    def get_video_url(self, videoid):
        """Get actual video file and start playing."""
        url = 'https://kanal2.postimees.ee/pluss/video/?id=%s' % videoid
        buggalo.addExtraData('url', url)
        playlist = xbmc.PlayList(xbmc.PLAYLIST_VIDEO)
        playlist.clear()

        html = self.download_url(url)
        if not html:
            raise Kanal2Exception(ADDON.getLocalizedString(203))

        init = re.search(
            "initK2Player.*\', \'episodes\', \'%s\', \'([^\']+)\'\);" %
            videoid, html, re.DOTALL)
        try:
            if init.group(1):
                dataurl = self.download_url(
                    "http://kanal2.postimees.ee/player/playlist/%s?type=episodes"
                    % videoid, True)
                data = json.loads(dataurl)
                if not data:
                    raise Kanal2Exception(ADDON.getLocalizedString(202))

                videoUrl = "https://kanal-vod.babahhcdn.com/bb1037/_definst_/smil:kanal2/%s/playlist.m3u8?t=%s" % (
                    data['data']['file'], init.group(1))
                infoLabels = {
                    'title': data['info']['subtitle'],
                    'plot': data['info']['description']
                }
                item = xbmcgui.ListItem(data['info']['subtitle'],
                                        iconImage=ICON,
                                        path=videoUrl)
                item.setInfo('video', infoLabels)
                playlist.add(videoUrl, item)
        except AttributeError:
            raise Kanal2Exception(ADDON.getLocalizedString(204))
        # start = 0
        xbmcplugin.setResolvedUrl(HANDLE, True, item)
def buggalo_extradata_settings():
    """"add extradata to buggalo"""

    buggalo.addExtraData('data_dir', data_dir())
    buggalo.addExtraData('addon_dir', addon_dir())
    buggalo.addExtraData('setting_verbosity', getSetting("verbosity"))
    buggalo.addExtraData('setting_w_movies', getSetting("w_movies"))
    buggalo.addExtraData('setting_w_episodes', getSetting("w_episodes"))
    buggalo.addExtraData('setting_autostart', getSetting("autostart"))
    buggalo.addExtraData('setting_delay', getSetting("delay"))
    buggalo.addExtraData('setting_starttype', getSetting("starttype"))
    buggalo.addExtraData('setting_interval', getSetting("interval"))
    buggalo.addExtraData('setting_progressdialog',
                         getSetting("progressdialog"))
    buggalo.addExtraData('setting_watch_user', getSetting("watch_user"))
    buggalo.addExtraData('setting_extdb', getSetting("extdb"))
    buggalo.addExtraData('setting_dbpath', getSetting("dbpath"))
    buggalo.addExtraData('setting_dbfilename', getSetting("dbfilename"))
    buggalo.addExtraData('setting_dbbackup', getSetting("dbbackup"))
    buggalo.addExtraData('setting_db_format', getSetting("db_format"))
    buggalo.addExtraData('setting_mysql_server', getSetting("mysql_server"))
    buggalo.addExtraData('setting_mysql_port', getSetting("mysql_port"))
    buggalo.addExtraData('setting_mysql_db', getSetting("mysql_db"))
Пример #46
0
                return data['content']
            if data['error'].find('404:') != -1 or data['error'].find(
                    '400:') != -1:
                break
        except Exception, e:
            data['error'] = str(e)
        retries += 1
    dialog = xbmcgui.Dialog()
    ret = dialog.yesno(plugin, settings.getLocalizedString(30050),
                       data['error'], '', settings.getLocalizedString(30052),
                       settings.getLocalizedString(30053))
    if ret == False:
        getUrl(url)
    else:
        ok = dialog.ok(plugin, settings.getLocalizedString(30051))
        buggalo.addExtraData('url', url)
        buggalo.addExtraData('error', data['error'])
        raise Exception('getUrl Error')


def getPage(url, gzip=False):
    data = {'content': None, 'error': None}
    try:
        req = urllib2.Request(url)
        req.add_header('User-Agent', useragent)
        content = urllib2.urlopen(req)
        if gzip:
            try:
                if content.info()['Content-Encoding'] == 'gzip':
                    import gzip, StringIO
                    gzip_filehandle = gzip.GzipFile(
Пример #47
0
def find_trailers(url, name, page, library):
    save_name = name
    save_page = page
    data = getUrl(url).decode('ascii', 'ignore')
    link_thumb = re.compile(
        '<a href="(.+?)"><img src="(.+?)" name="thumb').findall(data)
    thumbs = re.compile('img src="/psize\.php\?dir=(.+?)" style').findall(data)
    if len(thumbs) == 0:
        thumb = "DefaultVideo.png"
    else:
        thumb = 'http://www.traileraddict.com/' + thumbs[0]
    title = re.compile(
        '<div class="abstract"><h2><a href="(.+?)">(.+?)</a></h2><br />',
        re.DOTALL).findall(data)
    trailers = re.compile('<dl class="dropdown">(.+?)</dl>',
                          re.DOTALL).findall(data)
    if len(title) == 0 and len(trailers) == 0:
        list = common.parseDOM(data, "div", attrs={"class": "info"})
        header = common.parseDOM(data, "div", attrs={"class": "trailerheader"})
        nexturl = common.parseDOM(header,
                                  "a",
                                  attrs={"title": "Next Page"},
                                  ret="href")
        totalItems = len(list)
        if totalItems == 0:
            dialog = xbmcgui.Dialog()
            ok = dialog.ok(plugin, settings.getLocalizedString(30012))
            ok = dialog.ok(plugin, settings.getLocalizedString(30051))
            buggalo.addExtraData('url', url)
            buggalo.addExtraData('name', name)
            raise Exception('find_trailers Error A')
            return
        for video in list:
            h2 = common.parseDOM(video, "h2")
            title = common.parseDOM(h2, "a")[0]
            url = 'http://www.traileraddict.com' + common.parseDOM(
                h2, "a", ret="href")[0]
            thumb = 'http://www.traileraddict.com' + common.parseDOM(
                video, "img", attrs={"class": "dimmer"}, ret="src")[0].replace(
                    '-t.jpg', '.jpg')
            #infoLabels = { "Title": title, "Plot": save_name + ' (' + clean( title ) + ')' }
            cm = []
            run = sys.argv[0] + '?' + urllib.urlencode(
                {
                    'mode': '5',
                    'name': save_name + ' (' + clean(title) + ')',
                    'url': url,
                    'download': 'True'
                })
            cm.append((settings.getLocalizedString(30059),
                       "XBMC.RunPlugin(%s)" % run))
            cm.append((settings.getLocalizedString(
                30014
            ), "XBMC.RunPlugin(plugin://plugin.video.couchpotato_manager/movies/add?title=%s)"
                       % save_name))
            u = {
                'mode': '5',
                'name': save_name + ' (' + clean(title) + ')',
                'url': url
            }
            addListItem(label=clean(title),
                        image=thumb,
                        url=u,
                        isFolder=False,
                        totalItems=totalItems,
                        infoLabels=False,
                        cm=cm)
        if len(nexturl) > 0:
            url = 'http://www.traileraddict.com' + nexturl[0]
            u = {
                'mode': '4',
                'name': save_name,
                'url': url,
                'page': str(int(save_page) + 1)
            }
            addListItem(label='[Next Page (' + str(int(save_page) + 2) + ')]',
                        image=next_thumb,
                        url=u,
                        isFolder=True,
                        totalItems=0,
                        infoLabels=False)
        xbmcplugin.addSortMethod(handle=int(sys.argv[1]),
                                 sortMethod=xbmcplugin.SORT_METHOD_NONE)
        setViewMode("502", "movies")
        xbmcplugin.endOfDirectory(int(sys.argv[1]))
        return
    item_count = 0
    if len(trailers) > 0:
        check1 = re.compile(
            '<a href="(.+?)"><img src="\/images\/usr\/arrow\.png" border="0" style="float:right;" \/>(.+?)</a>'
        ).findall(trailers[0])
        check2 = re.compile(
            '<a href="(.+?)"( style="(.*?)")?>(.+?)<br />').findall(
                trailers[0])
        totalItems = len(check1)
        totalItems2 = len(check2)
        if totalItems > 0:
            url_title = check1
            if library == True:
                return url_title[0][0]
            for url, title in url_title:
                url = 'http://www.traileraddict.com' + url
                cm = []
                run = sys.argv[0] + '?' + urllib.urlencode(
                    {
                        'mode': '5',
                        'name': save_name + ' (' + clean(title) + ')',
                        'url': url,
                        'download': 'True'
                    })
                cm.append((settings.getLocalizedString(30059),
                           "XBMC.RunPlugin(%s)" % run))
                cm.append((settings.getLocalizedString(
                    30014
                ), "XBMC.RunPlugin(plugin://plugin.video.couchpotato_manager/movies/add?title=%s)"
                           % save_name))
                infoLabels = {
                    "Title": title,
                    "Plot": save_name + ' (' + clean(title) + ')'
                }
                u = {
                    'mode': '5',
                    'name': save_name + ' (' + clean(title) + ')',
                    'url': url
                }
                addListItem(label=clean(title),
                            image=thumb,
                            url=u,
                            isFolder=False,
                            totalItems=totalItems,
                            infoLabels=False,
                            cm=cm)
            xbmcplugin.addSortMethod(handle=int(sys.argv[1]),
                                     sortMethod=xbmcplugin.SORT_METHOD_NONE)
            setViewMode("502", "movies")
            xbmcplugin.endOfDirectory(int(sys.argv[1]))
        elif totalItems2 > 0:
            url_title = check2
            if library == True:
                return url_title[0][0]
            for url, trash1, trash2, title in url_title:
                url = 'http://www.traileraddict.com' + url
                #infoLabels = { "Title": title, "Plot": save_name + ' (' + clean( title ) + ')' }
                cm = []
                run = sys.argv[0] + '?' + urllib.urlencode({
                    'mode':
                    '5',
                    'name':
                    save_name.decode('ascii', 'ignore') + ' (' + clean(title) +
                    ')',
                    'url':
                    url,
                    'download':
                    'True'
                })
                cm.append((settings.getLocalizedString(30059),
                           "XBMC.RunPlugin(%s)" % run))
                cm.append((settings.getLocalizedString(
                    30014
                ), "XBMC.RunPlugin(plugin://plugin.video.couchpotato_manager/movies/add?title=%s)"
                           % save_name.decode('ascii', 'ignore')))
                u = {
                    'mode':
                    '5',
                    'name':
                    save_name.decode('ascii', 'ignore') + ' (' + clean(title) +
                    ')',
                    'url':
                    url
                }
                addListItem(label=clean(title),
                            image=thumb,
                            url=u,
                            isFolder=False,
                            totalItems=totalItems2,
                            infoLabels=False,
                            cm=cm)
            xbmcplugin.addSortMethod(handle=int(sys.argv[1]),
                                     sortMethod=xbmcplugin.SORT_METHOD_NONE)
            setViewMode("502", "movies")
            xbmcplugin.endOfDirectory(int(sys.argv[1]))
        else:
            # dia = xbmcgui.Dialog()
            # ok = dia.ok(plugin, settings.getLocalizedString(30006) )
            # ok = dia.ok(plugin, settings.getLocalizedString( 30051 ))
            # buggalo.addExtraData('url', url)
            # buggalo.addExtraData('name', save_name)
            # raise Exception('find_trailers Error 2')
            # xbmc.executebuiltin('Notification('+plugin+',Only video clips were found!,5000,'+icon_thumb+')')
            list = common.parseDOM(data, "div", attrs={"class": "info"})
            header = common.parseDOM(data,
                                     "div",
                                     attrs={"class": "trailerheader"})
            nexturl = common.parseDOM(header,
                                      "a",
                                      attrs={"title": "Next Page"},
                                      ret="href")
            totalItems = len(list)
            if totalItems == 0:
                dialog = xbmcgui.Dialog()
                ok = dialog.ok(plugin, settings.getLocalizedString(30012))
                ok = dialog.ok(plugin, settings.getLocalizedString(30051))
                buggalo.addExtraData('url', url)
                buggalo.addExtraData('name', name)
                raise Exception('find_trailers Error B')
                return
            for video in list:
                h2 = common.parseDOM(video, "h2")
                title = common.parseDOM(h2, "a")[0]
                url = 'http://www.traileraddict.com' + common.parseDOM(
                    h2, "a", ret="href")[0]
                thumb = 'http://www.traileraddict.com' + common.parseDOM(
                    video, "img", attrs={"class": "dimmer"},
                    ret="src")[0].replace('-t.jpg', '.jpg')
                #infoLabels = { "Title": title, "Plot": save_name + ' (' + clean( title ) + ')' }
                cm = []
                run = sys.argv[0] + '?' + urllib.urlencode(
                    {
                        'mode': '5',
                        'name': save_name + ' (' + clean(title) + ')',
                        'url': url,
                        'download': 'True'
                    })
                cm.append((settings.getLocalizedString(30059),
                           "XBMC.RunPlugin(%s)" % run))
                cm.append((settings.getLocalizedString(
                    30014
                ), "XBMC.RunPlugin(plugin://plugin.video.couchpotato_manager/movies/add?title=%s)"
                           % save_name))
                u = {
                    'mode': '5',
                    'name': save_name + ' (' + clean(title) + ')',
                    'url': url
                }
                addListItem(label=clean(title),
                            image=thumb,
                            url=u,
                            isFolder=False,
                            totalItems=totalItems,
                            infoLabels=False,
                            cm=cm)
            if len(nexturl) > 0:
                url = 'http://www.traileraddict.com' + nexturl[0]
                u = {
                    'mode': '4',
                    'name': save_name,
                    'url': url,
                    'page': str(int(save_page) + 1)
                }
                addListItem(label='[Next Page (' + str(int(save_page) + 2) +
                            ')]',
                            image=next_thumb,
                            url=u,
                            isFolder=True,
                            totalItems=0,
                            infoLabels=False)
            xbmcplugin.addSortMethod(handle=int(sys.argv[1]),
                                     sortMethod=xbmcplugin.SORT_METHOD_NONE)
            setViewMode("502", "movies")
            xbmcplugin.endOfDirectory(int(sys.argv[1]))
    else:
        totalItems = len(link_thumb)
        for url, thumb2 in link_thumb:
            if clean(title[item_count][1]).find('Trailer') > 0:
                url = 'http://www.traileraddict.com' + url
                cm = []
                run = sys.argv[0] + '?' + urllib.urlencode(
                    {
                        'mode': '5',
                        'name':
                        save_name + ' (' + clean(title[item_count][1]) + ')',
                        'url': url,
                        'download': 'True'
                    })
                cm.append((settings.getLocalizedString(30059),
                           "XBMC.RunPlugin(%s)" % run))
                cm.append((settings.getLocalizedString(
                    30014
                ), "XBMC.RunPlugin(plugin://plugin.video.couchpotato_manager/movies/add?title=%s)"
                           % save_name))
                infoLabels = {
                    "Title": title[item_count][1],
                    "Plot":
                    save_name + ' (' + clean(title[item_count][1]) + ')'
                }
                u = {
                    'mode': '5',
                    'name':
                    save_name + ' (' + clean(title[item_count][1]) + ')',
                    'url': url
                }
                addListItem(label=clean(title[item_count][1]),
                            image=thumb,
                            url=u,
                            isFolder=False,
                            totalItems=totalItems,
                            infoLabels=False,
                            cm=cm)
            item_count = item_count + 1
        xbmcplugin.addSortMethod(handle=int(sys.argv[1]),
                                 sortMethod=xbmcplugin.SORT_METHOD_NONE)
        setViewMode("502", "movies")
        xbmcplugin.endOfDirectory(int(sys.argv[1]))
Пример #48
0
 def getTelecastID(self, telecastID):
     url = "http://kanal2.ee/saated/"
     buggalo.addExtraData('url', url)
     html = self.downloadUrl(url + telecastID)
     for s in re.finditer('var am_telecast = ([^;]+);', html):
         return s.group(1)
Пример #49
0
if __name__ == '__main__':
    ADDON = xbmcaddon.Addon()
    PATH = sys.argv[0]
    HANDLE = int(sys.argv[1])
    PARAMS = urlparse.parse_qs(sys.argv[2][1:])

    CACHE_PATH = xbmc.translatePath(ADDON.getAddonInfo("Profile"))
    if not os.path.exists(CACHE_PATH):
        os.makedirs(CACHE_PATH)

    FAVORITES_PATH = os.path.join(CACHE_PATH, 'favorites.pickle')
    RECENT_PATH = os.path.join(CACHE_PATH, 'recent.pickle')
    FANART_IMAGE = os.path.join(ADDON.getAddonInfo('path'), 'fanart.jpg')

    buggalo.SUBMIT_URL = 'http://tommy.winther.nu/exception/submit.php'
    buggalo.addExtraData('cache_path', CACHE_PATH)
    drDkTvAddon = DrDkTvAddon()
    try:
        if 'show' in PARAMS:
            if PARAMS['show'][0] == 'liveTV':
                drDkTvAddon.showLiveTV()
            elif PARAMS['show'][0] == 'listAZ':
                drDkTvAddon.showAZ()
            elif PARAMS['show'][0] == 'latest':
                drDkTvAddon.listEpisodes(drDkTvAddon.api.getLatestPrograms(), addSortMethods=False)
            elif PARAMS['show'][0] == 'mostViewed':
                drDkTvAddon.listEpisodes(drDkTvAddon.api.getMostViewed())
            elif PARAMS['show'][0] == 'highlights':
                drDkTvAddon.listEpisodes(drDkTvAddon.api.getSelectedList())
            elif PARAMS['show'][0] == 'search':
                drDkTvAddon.searchSeries()