예제 #1
0
 def _playVideo(self, response, title, img, descr):
   urlParam = response.find('div', 'meride-video-container')
   if urlParam != None:
     response = Util.getResponseBS('http://mediasp.meride.tv/embedproxy.php/{0}/folder1/{1}/desktop'.format(urlParam['data-customer'], urlParam['data-embed']))
     if response.isSucceeded:
       try:
         Util.playStream(self._handle, title, img, response.body.iphone.text, 'video', { 'title' : title, 'plot' : descr })
       except:
         Util.playStream(self._handle, title, img, response.body.mp4.text, 'video', { 'title' : title, 'plot' : descr })
예제 #2
0
 def _getMTVResponse(self, link):
   return Util.getResponseBS('http://ondemand.mtv.it{0}'.format(link))
예제 #3
0
  def __init__(self):

    # Programmi.
    if len(self._params) == 0:
      shows = self._getMTVResponse('/serie-tv')
      if shows.isSucceeded:
        shows = shows.body.findAll('h3', 'showpass')
        for show in shows:
          name = show.nextSibling.strong.text
          img = show.img['data-original']
          index = img.rfind('?')
          show.nextSibling.strong.extract()
          li = Util.createListItem(name, thumbnailImage = img[:index], streamtype = 'video', infolabels = { 'title' : name, 'plot' : show.nextSibling.text })
          xbmcplugin.addDirectoryItem(self._handle, Util.formatUrl({ 'action' : 's', 'path' : show.a['href'] }), li, True)
        xbmcplugin.endOfDirectory(self._handle)

    # Stagioni.
    elif self._params['action'] == 's':
      response = self._getMTVResponse(self._params['path'])
      if response.isSucceeded:
        if response.body.renderContents().find('<h2>Troppo tardi! <b>&#9787;</b></h2>') == -1:
          seasons = response.body.find('ul', 'nav').findAll('a')
          if xbmcplugin.getSetting(self._handle, 'show_seasons') == 'false' or len(seasons) > 1:
            title = response.body.find('h1', { 'itemprop' : 'name' }).text
            for season in seasons:
              link = season['href']
              season = season.text
              li = Util.createListItem(season, streamtype = 'video', infolabels = { 'title' : season, 'plot' : '{0} di {1}'.format(season, title) })
              xbmcplugin.addDirectoryItem(self._handle, Util.formatUrl({ 'action' : 'p', 'path' : link }), li, True)
            xbmcplugin.endOfDirectory(self._handle)
          else:
            self._getEpisodes(seasons[0]['href'])
        else:
          xbmcgui.Dialog().ok(Util._addonName, Util.getTranslation(30000)) # Troppo tardi! I diritti di questo video sono scaduti.

    # Puntate.
    elif self._params['action'] == 'p':
      self._getEpisodes(self._params['path'])

    # Risoluzioni.
    elif self._params['action'] == 'r':
      videoId = Util.getResponseBS(self._params['path'])
      if videoId.isSucceeded:
        videoId = videoId.body.find('div', 'MTVNPlayer')
        if videoId != None:
          qlySetting = xbmcplugin.getSetting(self._handle, 'vid_quality')
          if qlySetting == '0':
            qlySetting = 180
          elif qlySetting == '1':
            qlySetting = 270
          elif qlySetting == '2':
            qlySetting = 360
          elif qlySetting == '3':
            qlySetting = 432
          elif qlySetting == '4':
            qlySetting = 576
          elif qlySetting == '5':
            qlySetting = 720
          elif qlySetting == '6':
            qlySetting = 1080
          videoId = videoId['data-contenturi']
          response = Util.getResponseBS('http://intl.esperanto.mtvi.com/www/xml/media/mediaGen.jhtml?uri=mgid:uma:video:mtv.it{0}'.format(videoId[videoId.rfind(':'):]))
          if response.isSucceeded:
            response = response.body.findAll('rendition')
            streams = []
            for stream in response:
              streams.append(( abs(qlySetting - int(stream['height'])), stream.src.text ))
            streams = sorted(streams, key = lambda stream: stream[0])
            Util.playStream(self._handle, '', path = streams[0][1])
            #for duration, bitrate, url in streams:
            #  title = Util.getTranslation(idLabel)
            #  idLabel += 1
            #  li = Util.createListItem(title, streamtype = 'video', infolabels = { 'title' : title }, duration = duration)
            #  xbmcplugin.addDirectoryItem(self._handle, '{0} swfUrl=http://media.mtvnservices.com/player/prime/mediaplayerprime.2.3.7.swf?uri={1}.swf swfVfy=true'.format(url, self._params['path']), li, False)
            #xbmcplugin.endOfDirectory(self._handle)
        else:
          xbmcgui.Dialog().ok(Util._addonName, Util.showVideoNotAvailableDialog()) # Video non disponibile.
  def __init__(self):

    if len(self._params) == 0: # Scelta tra Audio o Video

      Util.createAudioVideoItems(self._handle)

      # Show items.
      xbmcplugin.endOfDirectory(self._handle)

    elif len(self._params) == 1 and self._params['content_type'] == 'video': # Visualizzazione del menu video.

      # Menu.
      response = Util.getResponseBS('http://tv.ilfattoquotidiano.it')

      if response.isSucceeded:

        menuItems = []
        for ul in response.body.findAll('ul', 'nav-list'):
          for li in ul.findAll('li'):
            title = li.a.text
            link = li.a['href']
            li = Util.createListItem(title)
            menuItems.append(( li, link, title ))

        div = response.body.find('div', 'submenu-categories')
        for li in div.findAll('li'):
          link = li.a['href']
          found = False
          for item in menuItems:
            if item[1] == link:
              found = True
              break
          if not found:
            title = li.a.text
            li = Util.createListItem(title)
            menuItems.append(( li, link, title ))

        for item in sorted(menuItems, key = lambda item: item[2]):
          xbmcplugin.addDirectoryItem(self._handle, Util.formatUrl({ 'id' : 'c', 'page' : item[1] }), item[0], True)

        # Show items.
        xbmcplugin.endOfDirectory(self._handle)

    elif len(self._params) == 1 and self._params['content_type'] == 'audio': # Visualizzazione del menu audio.

      img = '{0}/resources/images/fqRadio.png'.format(os.path.dirname(os.path.abspath(__file__)))
      li = Util.createListItem(Util.getTranslation(30000), thumbnailImage = img) # Radio.
      xbmcplugin.addDirectoryItem(self._handle, 'http://fqradio.ns0.it:8000/;audio.mp3', li, False)
      xbmcplugin.addDirectoryItem(self._handle, Util.formatUrl({ 'id' : 'p', 'page' : self._getUrlPodcast() }), Util.createListItem(Util.getTranslation(30001), thumbnailImage = 'DefaultAddonLyrics.png'), True)

      # Show items.
      xbmcplugin.endOfDirectory(self._handle)

    else:

      response = Util.getResponseBS(self._params['page'])
      if response.isSucceeded:

        # Videos.
        if self._params['id'] == 'c': # Visualizzazione video di una categoria.
          videos = response.body.findAll('section', 'article-preview')
          for video in videos:
            divTitle = video.find('div', 'article-wrapper')
            title = divTitle.h3.a.text
            img = None
            if video.picture.img != None:
              img = video.picture.img['src']
            li = Util.createListItem(title, thumbnailImage = img, streamtype = 'video', infolabels = { 'title' : title }, isPlayable = True)
            xbmcplugin.addDirectoryItem(self._handle, Util.formatUrl({ 'id' : 'v', 'page' : divTitle.h3.a['href'] }), li, False)

          # Next page.
          self._nextPage(response.body, 'c', '{0}')

          # Show items.
          xbmcplugin.endOfDirectory(self._handle)

        # Podcast.
        if self._params['id'] == 'p': # Visualizzazione podcast.
          podcasts = response.body.find('section', 'fqRadio fqRadio-palinsesto')
          podcasts = podcasts.findAll('div', 'ungrid-row')
          for podcast in podcasts:
            title = u'{0} ({1})'.format(podcast.find('div', 'ungrid-col program').a.text, podcast.find('div', 'ungrid-col program-date').text)
            url = podcast.find('div', 'ungrid-col dwl-podcast').a['href']
            li = Util.createListItem(title, thumbnailImage = 'DefaultAudio.png', streamtype = 'audio', infolabels = { 'title' : title })
            xbmcplugin.addDirectoryItem(self._handle, url, li, False)

          # Next page.
          self._nextPage(response.body, 'p', '{0}/{1}'.format(self._getUrlPodcast(), '{0}'))

          # Show items.
          xbmcplugin.endOfDirectory(self._handle)

        # Play video.
        elif self._params['id'] == 'v':
          title = response.body.find('meta', { 'property' : 'og:title' })['content']
          img = response.body.find('meta', { 'property' : 'og:image' })['content']
          descr = response.body.find('div', 'tv-desc-body').text

          # Video del fatto.
          video = response.body.find('video', { 'id' : 'bcPlayer' })
          if video != None:
            #playerID = 2274739660001
            #publisherID = 1328010481001
            url = 'https://edge.api.brightcove.com/playback/v1/accounts/{0}/videos/{1}'.format(video['data-account'], video['data-video-id'])
            headers = { 'Accept' : 'application/json;pk=BCpkADawqM0xNxj2Rs11iwmFoNJoG2nXUQs67brI7oR2qm0Dwn__kPcbvLJb7M34IY2ar-WxWvi8wHr6cRbP7nmgilWaDrqZEeQm4O5K6z6B2A3afiPFbv7T4LcsQKN2PqIIgIIr3AXq43vL' }
            response = Util.getResponseJson(url, headers)
            if response.isSucceeded:

              sources = sorted(response.body['sources'], key = lambda item: item['avg_bitrate'] if 'avg_bitrate' in item else 0, reverse = True)
              if 'src' in sources[0]:
                source = sources[0]['src']
              else:
                source = sources[1]['src']

              Util.playStream(self._handle, title, img, source, 'video', { 'title' : title, 'plot' : descr })

          # Altri video.
          else:
            responseString = response.body.renderContents()

            # Video di youtube.
            if responseString.find('www.youtube.com/embed') > -1:
              video = re.search('http://www.youtube.com/embed/(.+?)\?', response.body.find('iframe')['src'])
              if video != None:
                Util.playStream(self._handle, title, img, 'plugin://plugin.video.youtube/play/?video_id={0}'.format(video.group(1)), 'video', { 'title' : title, 'plot' : descr })

            # Video servizio pubblico.
            elif responseString.find('meride-video-container') > -1:
              params = { 'id' : 'e', 'page' : self._params['page'], 'title' : title, 'img' : img, 'descr' : descr }
              url = Util.formatUrl(params, 'plugin://plugin.video.serviziopubblico/')
              Util.playStream(self._handle, title, img, url, 'video', { 'title' : title, 'plot' : descr })

            # Video non gestito.
            else:
              Util.showVideoNotAvailableDialog()
예제 #5
0
  def __init__(self):

    # Visualizzazione del menu.
    if len(self._params) == 0:
      categs = []
      categs.append(['Santoro', 'r', '/canali/santoro'])
      categs.append(['Vauro', 'r', '/canali/vauro'])
      categs.append(['Travaglio', 'r', '/canali/travaglio'])
      categs.append(['Dragoni', 'r', '/canali/dragoni'])
      categs.append(['Puntate', 'i', '/puntate'])
      categs.append(['Argomenti', 't', '/argomenti'])
      categs.append(['Gli inviati', 'n', '/gli-inviati'])
      for title, paramId, page in categs:
        li = Util.createListItem(title, streamtype = 'video', infolabels = { 'title' : title })
        xbmcplugin.addDirectoryItem(self._handle, Util.formatUrl({ 'id' : paramId, 'page' : page }), li, True)
      xbmcplugin.endOfDirectory(self._handle)
    else:
      response = Util.getResponseBS(self._createPage(self._params['page']))
      if response.isSucceeded:

        # Archivi (santoro, vauro, travaglio, dragoni, puntate, argomenti e inviati).
        if self._params['id'] == 'i':
          self._showArchiveList(response.body, self._params['id'])

        # Argomenti.
        elif self._params['id'] == 't':
          categs = response.body.findAll('div', 'col-xs-12 single-argomento')
          for categ in categs:
            title = categ.a['title']
            img = 'DefaultVideo.png'
            if categ.img != None:
              img = self._normalizeImage(categ.img['src'])
            li = Util.createListItem(title, thumbnailImage = img, streamtype = 'video', infolabels = { 'title' : title, 'plot' : categ.div.renderContents() })
            xbmcplugin.addDirectoryItem(self._handle, Util.formatUrl({ 'id' : 'r', 'page' : categ.a['href'] }), li, True)
          self._showNextPage(response.body, self._params['id'])
          xbmcplugin.endOfDirectory(self._handle)

        # Gli inviati.
        elif self._params['id'] == 'n':
          envoys = response.body.findAll('div', { 'class' : re.compile('post-[0-9]+ persone.+?') })
          for envoy in envoys:
            title = envoy.a['title']
            li = Util.createListItem(title, thumbnailImage = self._normalizeImage(envoy.img['src']), streamtype = 'video', infolabels = { 'title' : title })
            xbmcplugin.addDirectoryItem(self._handle, Util.formatUrl({ 'id' : 'i', 'page' : envoy.a['href'] }), li, True)
          xbmcplugin.endOfDirectory(self._handle)

        # Ricerca categID.
        elif self._params['id'] == 'r':
          categid = re.search('\?cat_id=([0-9]+)"', response.body.renderContents())
          if categid != None:
            categid = categid.group(1)
            link = self._GetSPPage('/?p=15546&cat_id={0}'.format(categid))
            if categid == '2': # Per evitare di mangiarsi un video adotto questo barbatrucco.
              link = self._GetSPPage('/?p=15526&cat_id=2')
            response = Util.getResponseBS(link)
            if response.isSucceeded:
              self._showArchiveList(response.body, 'i')

        # Riproduzione del video.
        elif self._params['id'] == 'v':
          img = response.body.find('meta', { 'property' : 'og:image' })['content']
          tide = response.body.find('h3', 'entry-title')

          responseString = response.body.renderContents()

          # Servizio pubblico.
          if responseString.find('meride-video-container') > -1:
            self._playVideo(response.body, tide.text, img, tide.parent.text)

          # Fatto quotidiano.
          elif responseString.find('<object id="flashObj"') > -1:
            urlParam = response.body.find('param', { 'name' : 'flashVars' })['value']
            urlParam = re.search("linkBaseURL=(.+?)&", urlParam).group(1).replace('%3A', ':').replace('%2F', '/')
            url = Util.formatUrl({ 'id' : 'v', 'page' : urlParam }, 'plugin://plugin.video.fattoquotidianotv/')
            Util.playStream(self._handle, tide.text, img, url, 'video', { 'title' : tide.text, 'plot' : tide.parent.text })

          else:
            Util.showVideoNotAvailableDialog()

        # Riproduzione video esterna.
        elif self._params['id'] == 'e':
          self._playVideo(response.body, self._params['title'], self._params['img'], self._params['descr'])
예제 #6
0
 def _getMTVResponse(self, link):
     return Util.getResponseBS('http://ondemand.mtv.it{0}'.format(link))
예제 #7
0
    def __init__(self):

        # Programmi.
        if len(self._params) == 0:
            shows = self._getMTVResponse('/serie-tv')
            if shows.isSucceeded:
                shows = shows.body.findAll('h3', 'showpass')
                for show in shows:
                    name = show.nextSibling.strong.text
                    img = show.img['data-original']
                    index = img.rfind('?')
                    show.nextSibling.strong.extract()
                    li = Util.createListItem(name,
                                             thumbnailImage=img[:index],
                                             streamtype='video',
                                             infolabels={
                                                 'title': name,
                                                 'plot': show.nextSibling.text
                                             })
                    xbmcplugin.addDirectoryItem(
                        self._handle,
                        Util.formatUrl({
                            'action': 's',
                            'path': show.a['href']
                        }), li, True)
                xbmcplugin.endOfDirectory(self._handle)

        # Stagioni.
        elif self._params['action'] == 's':
            response = self._getMTVResponse(self._params['path'])
            if response.isSucceeded:
                if response.body.renderContents().find(
                        '<h2>Troppo tardi! <b>&#9787;</b></h2>') == -1:
                    seasons = response.body.find('ul', 'nav').findAll('a')
                    if xbmcplugin.getSetting(
                            self._handle,
                            'show_seasons') == 'false' or len(seasons) > 1:
                        title = response.body.find('h1', {
                            'itemprop': 'name'
                        }).text
                        for season in seasons:
                            link = season['href']
                            season = season.text
                            li = Util.createListItem(season,
                                                     streamtype='video',
                                                     infolabels={
                                                         'title':
                                                         season,
                                                         'plot':
                                                         '{0} di {1}'.format(
                                                             season, title)
                                                     })
                            xbmcplugin.addDirectoryItem(
                                self._handle,
                                Util.formatUrl({
                                    'action': 'p',
                                    'path': link
                                }), li, True)
                        xbmcplugin.endOfDirectory(self._handle)
                    else:
                        self._getEpisodes(seasons[0]['href'])
                else:
                    xbmcgui.Dialog().ok(
                        Util._addonName, Util.getTranslation(30000)
                    )  # Troppo tardi! I diritti di questo video sono scaduti.

        # Puntate.
        elif self._params['action'] == 'p':
            self._getEpisodes(self._params['path'])

        # Risoluzioni.
        elif self._params['action'] == 'r':
            videoId = Util.getResponseBS(self._params['path'])
            if videoId.isSucceeded:
                videoId = videoId.body.find('div', 'MTVNPlayer')
                if videoId != None:
                    qlySetting = xbmcplugin.getSetting(self._handle,
                                                       'vid_quality')
                    if qlySetting == '0':
                        qlySetting = 180
                    elif qlySetting == '1':
                        qlySetting = 270
                    elif qlySetting == '2':
                        qlySetting = 360
                    elif qlySetting == '3':
                        qlySetting = 432
                    elif qlySetting == '4':
                        qlySetting = 576
                    elif qlySetting == '5':
                        qlySetting = 720
                    elif qlySetting == '6':
                        qlySetting = 1080
                    videoId = videoId['data-contenturi']
                    response = Util.getResponseBS(
                        'http://intl.esperanto.mtvi.com/www/xml/media/mediaGen.jhtml?uri=mgid:uma:video:mtv.it{0}'
                        .format(videoId[videoId.rfind(':'):]))
                    if response.isSucceeded:
                        response = response.body.findAll('rendition')
                        streams = []
                        for stream in response:
                            streams.append(
                                (abs(qlySetting - int(stream['height'])),
                                 stream.src.text))
                        streams = sorted(streams, key=lambda stream: stream[0])
                        Util.playStream(self._handle, '', path=streams[0][1])
                        #for duration, bitrate, url in streams:
                        #  title = Util.getTranslation(idLabel)
                        #  idLabel += 1
                        #  li = Util.createListItem(title, streamtype = 'video', infolabels = { 'title' : title }, duration = duration)
                        #  xbmcplugin.addDirectoryItem(self._handle, '{0} swfUrl=http://media.mtvnservices.com/player/prime/mediaplayerprime.2.3.7.swf?uri={1}.swf swfVfy=true'.format(url, self._params['path']), li, False)
                        #xbmcplugin.endOfDirectory(self._handle)
                else:
                    xbmcgui.Dialog().ok(Util._addonName,
                                        Util.showVideoNotAvailableDialog()
                                        )  # Video non disponibile.