예제 #1
0
    def __init__(self):
        self.list = []
        self.languagesList = [
            ('Hindi', 'hi'),
            ('Tamil', 'ta'),
            ('Telugu', 'te'),
            ('Marathi', 'mr'),
            ('Panjabi', 'pa'),
            ('Bengali', 'bn'),
            ('Gujarati', 'gu'),
            ('Malayalam', 'ml'),
            ('Kannada','kn')
        ]

        self.imdb_link = 'http://www.imdb.com'
        self.tmdb_key = base64.urlsafe_b64decode('MTdmMjI3YmVjNTdkOTQ4OGJiYzgyNzYyZmMxNDQ0NmM=')
        self.datetime = (datetime.datetime.utcnow() - datetime.timedelta(hours = 5))
        self.systime = (self.datetime).strftime('%Y%m%d%H%M%S%f')
        self.imdb_user = control.setting('imdb_user').replace('ur', '')
        self.info_lang = control.setting('infoLang') or 'en'
        self.imdb_info_link = 'http://www.omdbapi.com/?i=%s&plot=full&r=json'
        self.trakt_info_link = 'http://api-v2launch.trakt.tv/movies/%s?extended=images'

        self.tm_art_link = 'http://api.themoviedb.org/3/movie/%s/images?api_key=%s' % ('%s',self.tmdb_key)
        self.tm_info_link = 'http://api.themoviedb.org/3/movie/%s?api_key=%s&append_to_response=credits,images,trailers' % ('%s',self.tmdb_key)
        self.tm_img_link = 'https://image.tmdb.org/t/p/w%s%s'


        #self.search_link = 'http://api.themoviedb.org/3/search/movie?api_key=%s&query=%s'
        self.search_link = 'http://www.imdb.com/search/title?sort=release_date,desc&title=%s'
        self.language_link = 'http://www.imdb.com/search/title?title_type=feature,tv_movie&num_votes=100,&production_status=released&languages=%s&count=40&start=1&sort=release_date,desc&start=1'
        self.featured_link = 'http://www.imdb.com/search/title?title_type=feature,tv_movie&languages=%s&num_votes=1000,&production_status=released&release_date=date[365],date[60]&sort=moviemeter,asc&count=40&start=1'
        self.popular_link = 'http://www.imdb.com/search/title?title_type=feature,tv_movie&languages=%s&num_votes=1000,&production_status=released&groups=top_1000&sort=moviemeter,asc&count=40&start=1'
        self.genre_link = 'http://www.imdb.com/search/title?title_type=feature,tv_movie&languages=%s&num_votes=100,&release_date=date[730],date[30]&genres=%s&sort=release_date,desc&count=40&start=1'
        self.year_link = 'http://www.imdb.com/search/title?title_type=feature,tv_movie&languages=%s&num_votes=100,&production_status=released&year=%s,%s&sort=release_date,desc&count=40&start=1'
예제 #2
0
 def __init__(self):
     self.base_link_1 = 'http://%s.hotstar.com'
     self.base_link_2 = self.base_link_1
     self.search_link = '/AVS/besc?action=SearchContents&channel=PCTV&maxResult=34&query=%s&startIndex=0&type=MOVIE,SERIES,SPORT,SPORT_LIVE'
     self.cdn_link = 'http://getcdn.hotstar.com/AVS/besc?action=GetCDN&asJson=Y&channel=PCTV&id=%s&type=VOD'
     self.info_link = ''
     self.now = datetime.datetime.now()
     self.theaters_link = '/category/%s/feed' % (self.now.year)
     self.added_link = '/category/hindi-movies/feed'
     self.HD_link = '/category/hindi-blurays/feed'
     self.res_map = {
         "1080": "1080p",
         "900": "HD",
         "720": "HD",
         "404": "SD",
         "360": "SCR"
     }
     self.srcs = []
     if not (control.setting('hotstar_ip') == ''):
         self.ip = control.setting('hotstar_ip')
     else:
         ips = ['118.94.0.%s' % str(i) for i in range(0, 100)]
         self.ip = random.choice(ips)
     self.headers = {
         'Accept':
         'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
         'Accept-Encoding': 'gzip, deflate, sdch',
         'Connection': 'keep-alive',
         'User-Agent':
         'AppleCoreMedia/1.0.0.12B411 (iPhone; U; CPU OS 8_1 like Mac OS X; en_gb)',
         'X-Forwarded-For': self.ip
     }
예제 #3
0
 def __init__(self):
     self.base_link_1 = 'http://erosnow.com'
     self.base_link_2 = self.base_link_1
     self.search_link = '/search/movies?q=%s&start=0&rows=20&cc=US'
     self.info_link = '/catalog/movie/%s/cc=US'
     self.login_link = 'https://erosnow.com/secured/dologin'
     self.now = datetime.datetime.now()
     self.user = control.setting('eros.user')
     self.password = control.setting('eros.pwd')
     self.srcs = []
예제 #4
0
    def livetv(self, generateJSON=False):
        try:
            retValue = 0
            generateJSON = cache.get(self.removeJSON,
                                     168,
                                     __name__,
                                     table='live_cache')
            if not os.path.exists(self.filePath):
                generateJSON = 1

            if generateJSON:
                fileFetcher = FileFetcher(self.fileName, control.addon)
                if control.setting('livelocal') == 'true':
                    retValue = 1
                else:
                    retValue = fileFetcher.fetchFile()
                if retValue < 0:
                    raise Exception()

                liveParser = LiveParser(self.fileName, control.addon)
                self.srcs = liveParser.parseFile()
            return (retValue, self.srcs)
        except:
            import traceback
            traceback.print_exc()
            pass
예제 #5
0
    def sources(self, url):
        logger.debug('SOURCES URL %s' % url, __name__)
        try:
            quality = ''
            self.srcs = []

            if url == None: return self.srcs

            try: result = client.request(url)
            except: result = ''

            result = result.decode('iso-8859-1').encode('utf-8')
            result = client.parseDOM(result, "div", attrs={"class": "col-md-12 mt20"})[0]

            try :
                item = client.parseDOM(result, "center")[0]

                url = re.compile('(SRC|src|data-config)=\"(.+?)\"').findall(item)[0][1]
                host = client.host(url)
                self.srcs.append({'source': host, 'parts' : '1', 'quality': quality, 'provider': 'iBollyTV', 'url': url, 'direct':False})
            except:
                pass

            hypermode = False if control.setting('hypermode') == 'false' else True
            threads = []
            try :
                result = client.parseDOM(result, "div", attrs={"class": "table-responsive"})[0]
                result = client.parseDOM(result, "tbody")[0]
                result = client.parseDOM(result, "tr")
                for item in result:
                    if hypermode :
                        threads.append(workers.Thread(self.source, item))
                    else :
                        self.source(item)

                if hypermode:
                    [i.start() for i in threads]

                    stillWorking = True

                    while stillWorking:
                        stillWorking = False
                        stillWorking = [True for x in threads if x.is_alive() == True]

            except:
                pass
            logger.debug('SOURCES [%s]' % self.srcs, __name__)
            return self.srcs
        except:
            return self.srcs
예제 #6
0
    def __init__(self):
        self.list = []

        self.trakt_link = 'http://api-v2launch.trakt.tv'
        self.tvdb_key = base64.urlsafe_b64decode('OUZDQkM2MjlEQzgyRjA4Qw==')
        self.datetime = (datetime.datetime.utcnow() -
                         datetime.timedelta(hours=5))
        self.systime = (self.datetime).strftime('%Y%m%d%H%M%S%f')
        self.today_date = (self.datetime).strftime('%Y-%m-%d')
        self.trakt_user = control.setting('trakt_user')
        self.info_lang = control.setting('infoLang') or 'en'

        self.tvdb_info_link = 'http://thetvdb.com/api/%s/series/%s/all/%s.zip' % (
            self.tvdb_key, '%s', '%s')
        self.tvdb_image = 'http://thetvdb.com/banners/'
        self.tvdb_poster = 'http://thetvdb.com/banners/_cache/'

        self.mycalendar_link = 'http://api-v2launch.trakt.tv/calendars/my/shows/%s/31/' % (
            self.datetime - datetime.timedelta(days=32)).strftime('%Y-%m-%d')
        self.progress_link = 'http://api-v2launch.trakt.tv/users/%s/watched/shows' % self.trakt_user
        self.calendar_link = 'http://api-v2launch.trakt.tv/calendars/all/shows/%s/%s'

        self.scn_link = 'http://m2v.ru'
        self.added_link = 'http://m2v.ru/?Part=11&func=part&page=1'
예제 #7
0
    def __init__(self):
        self.list = []

        self.tmdb_key = base64.urlsafe_b64decode('MTdmMjI3YmVjNTdkOTQ4OGJiYzgyNzYyZmMxNDQ0NmM=')
        self.tvdb_key = base64.urlsafe_b64decode('OUZDQkM2MjlEQzgyRjA4Qw==')
        self.datetime = (datetime.datetime.utcnow() - datetime.timedelta(hours = 5))
        self.info_lang = control.setting('infoLang') or 'en'

        self.tvdb_info_link = 'http://thetvdb.com/api/%s/series/%s/%s.xml' % (self.tvdb_key, '%s', re.sub('bg', 'en', self.info_lang))
        self.tvdb_search_link = 'http://thetvdb.com/api/GetSeries.php?seriesname=%s'
        self.tvdb_by_imdb = 'http://thetvdb.com/api/GetSeriesByRemoteID.php?imdbid=%s'
        self.imdb_by_query = 'http://www.omdbapi.com/?t=%s&y=%s'
        self.imdb_by_title = 'http://www.omdbapi.com/?t=%s'
        self.tvdb_image = 'http://thetvdb.com/banners/'

        self.burp_search_link = 'http://tv.burrp.com/search.html?q=%s'
예제 #8
0
    def sources(self, url):
        logger.debug('SOURCES URL %s' % url, __name__)
        try:
            if url == None: return self.srcs

            url = '%s%s' % (self.base_link, url)

            try:
                result = client.request(url)
            except:
                result = ''

            result = result.decode('iso-8859-1').encode('utf-8')
            result = result.replace('\n', '').replace('\t', '')
            result = client.parseDOM(result,
                                     "table",
                                     attrs={"class":
                                            "table table-bordered"})[0]
            result = client.parseDOM(result, "tbody")[0]
            result = client.parseDOM(result, "tr")

            hypermode = False if control.setting(
                'hypermode') == 'false' else True

            threads = []
            for item in result:
                if hypermode:
                    threads.append(workers.Thread(self.source, item))
                else:
                    self.source(item)

            if hypermode:
                [i.start() for i in threads]

                stillWorking = True

                while stillWorking:
                    stillWorking = False
                    stillWorking = [
                        True for x in threads if x.is_alive() == True
                    ]
            logger.debug('SOURCES [%s]' % self.srcs, __name__)
            return self.srcs
        except:
            return self.srcs
예제 #9
0
    def desiTV(self):
        listItems = []

        provider = control.setting('tvshow.provider')

        if not provider == None:
            try:
                call = __import__('resources.lib.sources.%s' % provider, globals(), locals(), ['source'], -1).source()
                listItems = call.networks()
            except Exception as e:
                logger.error(e)
                pass
        else:
            from resources.lib.sources import desirulez
            listItems = desirulez.source().networks()

        listItems.sort()

        for item in listItems:
            self.addDirectoryItem(item['name'], '%s&provider=%s&url=%s' % (item['action'],item['provider'], item['url']), os.path.join(
                control.logoPath(), item['image']), 'DefaultMovies.png')

        self.endDirectory()
예제 #10
0
    def __init__(self):
        self.list = []

        self.tmdb_key = base64.urlsafe_b64decode(
            'MTdmMjI3YmVjNTdkOTQ4OGJiYzgyNzYyZmMxNDQ0NmM=')
        self.tvdb_key = base64.urlsafe_b64decode('OUZDQkM2MjlEQzgyRjA4Qw==')
        self.datetime = (datetime.datetime.utcnow() -
                         datetime.timedelta(hours=5))
        self.today_date = (self.datetime).strftime('%Y-%m-%d')
        self.info_lang = control.setting('infoLang') or 'en'

        self.tmdb_info_link = 'http://api.themoviedb.org/3/tv/%s?api_key=%s&language=%s&append_to_response=credits,content_ratings,external_ids' % (
            '%s', self.tmdb_key, '%s')
        self.tvdb_info_link = 'http://thetvdb.com/api/%s/series/%s/all/%s.zip' % (
            self.tvdb_key, '%s', '%s')
        self.tmdb_by_imdb = 'http://api.themoviedb.org/3/find/%s?api_key=%s&external_source=imdb_id' % (
            '%s', self.tmdb_key)
        self.tmdb_by_tvdb = 'http://api.themoviedb.org/3/find/%s?api_key=%s&external_source=tvdb_id' % (
            '%s', self.tmdb_key)
        self.tvdb_by_imdb = 'http://thetvdb.com/api/GetSeriesByRemoteID.php?imdbid=%s'
        self.tmdb_image = 'http://image.tmdb.org/t/p/original'
        self.tmdb_poster = 'http://image.tmdb.org/t/p/w500'
        self.tvdb_image = 'http://thetvdb.com/banners/'
        self.tvdb_poster = 'http://thetvdb.com/banners/_cache/'
예제 #11
0
    def episodeDirectory(self,
                         items,
                         provider=None,
                         confViewMode='list',
                         estViewMode='widelist'):
        if items == None or len(items) == 0: return

        isFolder = True if control.setting('host_select') == '1' else False
        isPlayable = 'true' if not 'plugin' in control.infoLabel(
            'Container.PluginName') else 'false'

        playbackMenu = control.lang(30271).encode('utf-8') if control.setting(
            'host_select') == '2' else control.lang(30270).encode('utf-8')

        cacheToDisc = False

        addonPoster, addonBanner = control.addonPoster(), control.addonBanner()
        addonFanart, settingFanart = control.addonFanart(), control.setting(
            'fanart')

        indicators = playcount.getTVShowIndicators(refresh=True)

        try:
            multi = [i['tvshowtitle'] for i in items]
        except:
            multi = []
        multi = len([x for y, x in enumerate(multi) if x not in multi[:y]])
        multi = True if multi > 1 else False

        try:
            sysaction = items[0]['action']
        except:
            sysaction = ''

        for i in items:
            try:
                try:
                    if i['title'] == '0':
                        label = '%sx%02d . %s %s' % (i['season'],
                                                     int(i['episode']),
                                                     'Episode', i['episode'])
                    else:
                        label = '%sx%02d . %s' % (i['season'], int(
                            i['episode']), i['title'])
                except:
                    label = i['title']
                if multi == True:
                    label = '%s - %s' % (i['tvshowtitle'], label)

                systitle = sysname = urllib.quote_plus(i['tvshowtitle'])
                episodetitle, episodename = urllib.quote_plus(
                    i['title']), urllib.quote_plus(i['name'])
                syspremiered = urllib.quote_plus(i['premiered'])
                imdb, tvdb, year, season, episode = i['imdb'], i['tvdb'], i[
                    'year'], i['season'], i['episode']

                poster, banner, fanart, thumb = i['poster'], i['banner'], i[
                    'fanart'], i['thumb']
                if poster == '0': poster = addonPoster
                if banner == '0' and poster == '0': banner = addonBanner
                elif banner == '0': banner = poster
                if thumb == '0' and fanart == '0': thumb = addonFanart
                elif thumb == '0': thumb = fanart

                meta = dict((k, v) for k, v in i.iteritems() if not v == '0')
                meta.update({
                    'trailer':
                    '%s?action=trailer&name=%s' % (sysaddon, sysname)
                })
                if i['duration'] == '0': meta.update({'duration': '60'})
                try:
                    meta.update({'duration': str(int(meta['duration']) * 60)})
                except:
                    pass
                sysmeta = urllib.quote_plus(json.dumps(meta))

                url = '%s?action=play&name=%s&title=%s&year=%s&imdb=%s&tvdb=%s&season=%s&episode=%s&tvshowtitle=%s&date=%s&meta=%s&t=%s' % (
                    sysaddon, episodename, episodetitle, year, imdb, tvdb,
                    season, episode, systitle, syspremiered, sysmeta,
                    self.systime)
                sysurl = urllib.quote_plus(url)

                if sysaction == 'episodes':
                    url = '%s?action=episodes&tvshowtitle=%s&year=%s&imdb=%s&tvdb=%s&season=%s&episode=%s' % (
                        sysaddon, systitle, year, imdb, tvdb, season, episode)
                    isFolder = True
                    cacheToDisc = True

                cm = []

                if isFolder == False:
                    cm.append((control.lang(30261).encode('utf-8'),
                               'RunPlugin(%s?action=queueItem)' % sysaddon))

                cm.append(
                    (control.lang(30272).encode('utf-8'), 'Action(Info)'))

                if multi == True:
                    cm.append((control.lang(30274).encode(
                        'utf-8'
                    ), 'ActivateWindow(Videos,%s?action=seasons&tvshowtitle=%s&year=%s&imdb=%s&tvdb=%s,return)'
                               % (sysaddon, systitle, year, imdb, tvdb)))

                cm.append((playbackMenu,
                           'RunPlugin(%s?action=alterSources&url=%s&meta=%s)' %
                           (sysaddon, sysurl, sysmeta)))
                '''
                try:
                    overlay = int(playcount.getEpisodeOverlay(indicators, systitle, episode, season))
                    if overlay == 7:
                        cm.append((control.lang(30264).encode('utf-8'), 'RunPlugin(%s?action=episodePlaycount&tvshowtitle=%s&episode=%s&season=%s&query=6&name=%s)' % (sysaddon, systitle, episode, season, episodename)))
                        meta.update({'playcount': 1, 'overlay': 7})
                    else:
                        cm.append((control.lang(30263).encode('utf-8'), 'RunPlugin(%s?action=episodePlaycount&tvshowtitle=%s&episode=%s&season=%s&query=7&name=%s)' % (sysaddon, systitle, episode, season, episodename)))
                        meta.update({'playcount': 0, 'overlay': 6})
                except Exception as e:
                    logger.error(e, __name__)
                    pass
                '''
                #cm.append((control.lang(30273).encode('utf-8'), 'RunPlugin(%s?action=addView&content=episodes)' % sysaddon))

                item = control.item(label=label,
                                    iconImage=thumb,
                                    thumbnailImage=thumb)

                try:
                    item.setArt({
                        'poster': poster,
                        'tvshow.poster': poster,
                        'season.poster': poster,
                        'banner': banner,
                        'tvshow.banner': banner,
                        'season.banner': banner
                    })
                except:
                    pass

                if settingFanart == 'true' and not fanart == '0':
                    item.setProperty('Fanart_Image', fanart)
                elif not addonFanart == None:
                    item.setProperty('Fanart_Image', addonFanart)

                item.setInfo(type='Video', infoLabels=meta)
                item.setProperty('Video', 'true')
                item.setProperty('IsPlayable', isPlayable)
                item.setProperty('resumetime', str(0))
                item.setProperty('totaltime', str(1))
                item.addContextMenuItems(cm)

                control.addItem(handle=syshandle,
                                url=url,
                                listitem=item,
                                isFolder=False)
            except:
                pass

        try:
            url = items[0]['next']
            if url == '': raise Exception()
            url = '%s?action=episodes&tvshowtitle=%s&url=%s&provider=%s' % (
                sysaddon, systitle, urllib.quote_plus(url), provider)
            addonNext = control.addonNext()
            item = control.item(label=control.lang(30213).encode('utf-8'),
                                iconImage=addonNext,
                                thumbnailImage=addonNext)
            item.addContextMenuItems([])
            if not addonFanart == None:
                item.setProperty('Fanart_Image', addonFanart)
            control.addItem(handle=syshandle,
                            url=url,
                            listitem=item,
                            isFolder=True)
        except:
            pass

        content = 'episodes'
        control.content(syshandle, content)
        control.directory(syshandle, cacheToDisc=cacheToDisc)
        views.setView(
            content, {
                'skin.confluence':
                control.viewMode['confluence'][confViewMode],
                'skin.estuary': control.viewMode['esturary'][estViewMode]
            })
예제 #12
0
    def seasonDirectory(self, items):
        if items == None or len(items) == 0: return

        isFolder = True if control.setting('host_select') == '1' else False
        isFolder = False if control.window.getProperty(
            'PseudoTVRunning') == 'True' else isFolder

        addonPoster, addonBanner = control.addonPoster(), control.addonBanner()
        addonFanart, settingFanart = control.addonFanart(), control.setting(
            'fanart')

        for i in items:
            try:
                label = '%s %s' % ('Season', i['season'])
                systitle = sysname = urllib.quote_plus(i['tvshowtitle'])
                imdb, tvdb, year, season = i['imdb'], i['tvdb'], i['season']

                poster, banner, fanart, thumb = i['poster'], i['banner'], i[
                    'fanart'], i['thumb']
                if poster == '0': poster = addonPoster
                if banner == '0' and poster == '0': banner = addonBanner
                elif banner == '0': banner = poster
                if thumb == '0' and poster == '0': thumb = addonPoster
                elif thumb == '0': thumb = poster

                meta = dict((k, v) for k, v in i.iteritems() if not v == '0')
                meta.update({
                    'trailer':
                    '%s?action=trailer&name=%s' % (sysaddon, sysname)
                })
                if i['duration'] == '0': meta.update({'duration': '60'})
                try:
                    meta.update({'duration': str(int(meta['duration']) * 60)})
                except:
                    pass
                sysmeta = urllib.quote_plus(json.dumps(meta))

                url = '%s?action=episodes&tvshowtitle=%s&year=%s&imdb=%s&tvdb=%s&season=%s' % (
                    sysaddon, systitle, year, imdb, tvdb, season)

                cm = []

                if isFolder == False:
                    cm.append((control.lang(30261).encode('utf-8'),
                               'RunPlugin(%s?action=queueItem)' % sysaddon))

                cm.append(
                    (control.lang(30262).encode('utf-8'), 'Action(Info)'))

                cm.append((control.lang(30263).encode(
                    'utf-8'
                ), 'RunPlugin(%s?action=tvPlaycount&name=%s&year=%s&imdb=%s&tvdb=%s&season=%s&query=7)'
                           % (sysaddon, systitle, year, imdb, tvdb, season)))
                cm.append((control.lang(30264).encode(
                    'utf-8'
                ), 'RunPlugin(%s?action=tvPlaycount&name=%s&year=%s&imdb=%s&tvdb=%s&season=%s&query=6)'
                           % (sysaddon, systitle, year, imdb, tvdb, season)))

                #cm.append((control.lang(30267).encode('utf-8'), 'RunPlugin(%s?action=deleteFavourite&meta=%s&content=tvshows)' % (sysaddon, sysmeta)))

                #cm.append((control.lang(30268).encode('utf-8'), 'RunPlugin(%s?action=tvshowToLibrary&tvshowtitle=%s&year=%s&imdb=%s&tmdb=%s&tvdb=%s&tvrage=%s)' % (sysaddon, systitle, year, imdb, tmdb, tvdb, tvrage)))

                cm.append((control.lang(30269).encode('utf-8'),
                           'RunPlugin(%s?action=addView&content=seasons)' %
                           sysaddon))

                item = control.item(label=label,
                                    iconImage=thumb,
                                    thumbnailImage=thumb)

                try:
                    item.setArt({
                        'poster': thumb,
                        'tvshow.poster': poster,
                        'season.poster': thumb,
                        'banner': banner,
                        'tvshow.banner': banner,
                        'season.banner': banner
                    })
                except:
                    pass

                if settingFanart == 'true' and not fanart == '0':
                    item.setProperty('Fanart_Image', fanart)
                elif not addonFanart == None:
                    item.setProperty('Fanart_Image', addonFanart)

                item.setInfo(type='Video', infoLabels=meta)
                item.setProperty('Video', 'true')
                item.addContextMenuItems(cm)
                control.addItem(handle=syshandle,
                                url=url,
                                listitem=item,
                                isFolder=True)
            except:
                pass

        try:
            control.property(syshandle, 'showplot', items[0]['plot'])
        except:
            pass

        control.content(syshandle, 'seasons')
        control.directory(syshandle, cacheToDisc=True)
        viewMode = 'thumbnails'
        views.setView(
            'seasons', {
                'skin.confluence': control.viewMode['confluence'][viewMode],
                'skin.estuary': control.viewMode['esturary'][viewMode]
            })
예제 #13
0
    def tvshowDirectory(self, items, confViewMode='list', estViewMode='widelist'):
        if items == None or len(items) == 0: return

        isFolder = True if control.setting('host_select') == '1' else False

        addonPoster, addonBanner = control.addonPoster(), control.addonBanner()
        addonFanart, settingFanart = control.addonFanart(), control.setting('fanart')

        for i in items:
            try:
                label = i['name']
                systitle = sysname = urllib.quote_plus(i['title'])
                sysimage = urllib.quote_plus(i['poster'])
                imdb, tvdb, year = i['imdb'], i['tvdb'], i['year']
                try :sysurl, sysprovider = urllib.quote_plus(i['url']), i['provider']
                except:pass

                poster, banner, fanart = i['poster'], i['banner'], i['fanart']
                if poster == '0': poster = addonPoster
                if banner == '0' and poster == '0': banner = addonBanner
                elif banner == '0': banner = poster

                meta = dict((k,v) for k, v in i.iteritems() if not v == '0')
                meta.update({'trailer': '%s?action=trailer&name=%s' % (sysaddon, sysname)})
                if i['duration'] == '0': meta.update({'duration': '60'})
                try: meta.update({'duration': str(int(meta['duration']) * 60)})
                except: pass
                sysmeta = urllib.quote_plus(json.dumps(meta))

                action = 'episodes'
                url = '%s?action=%s&provider=%s&url=%s&tvshowtitle=%s&year=%s&imdb=%s&tvdb=%s' % (sysaddon, action, sysprovider, sysurl, systitle, year, imdb, tvdb)

                cm = []

                if isFolder == False:
                    cm.append((control.lang(30232).encode('utf-8'), 'RunPlugin(%s?action=queueItem)' % sysaddon))

                cm.append((control.lang(30233).encode('utf-8'), 'Action(Info)'))

                cm.append((control.lang(30234).encode('utf-8'), 'RunPlugin(%s?action=tvPlaycount&name=%s&year=%s&imdb=%s&tvdb=%s&query=7)' % (sysaddon, systitle, year, imdb, tvdb)))
                cm.append((control.lang(30235).encode('utf-8'), 'RunPlugin(%s?action=tvPlaycount&name=%s&year=%s&imdb=%s&tvdb=%s&query=6)' % (sysaddon, systitle, year, imdb, tvdb)))

                cm.append((control.lang(30240).encode('utf-8'), 'RunPlugin(%s?action=addView&content=tvshows)' % sysaddon))

                item = control.item(label=label, iconImage=poster, thumbnailImage=poster)

                logger.debug('poster %s banner %s fanart %s' % (poster, banner, fanart))

                try: item.setArt({'poster': poster, 'tvshow.poster': poster, 'season.poster': poster, 'banner': banner, 'tvshow.banner': banner, 'season.banner': banner})
                except: pass

                if settingFanart == 'true' and not fanart == '0':
                    item.setProperty('Fanart_Image', fanart)
                elif not addonFanart == None:
                    item.setProperty('Fanart_Image', addonFanart)

                item.setInfo(type='Video', infoLabels = meta)
                item.setProperty('Video', 'true')
                item.addContextMenuItems(cm)
                control.addItem(handle=syshandle, url=url, listitem=item, isFolder=True)
            except Exception as e:
                logger.error(e, __name__)
                pass

        content = 'tvshows'
        control.content(syshandle, content)
        control.directory(syshandle, cacheToDisc=True)
        views.setView(content, {'skin.confluence': control.viewMode['confluence'][confViewMode], 'skin.estuary':
            control.viewMode['esturary'][estViewMode]})
예제 #14
0
    def movieDirectory(self, items, lang=None):
        if items == None or len(items) == 0:
            control.infoDialog(control.lang(30518).encode('utf-8'))
            return

        indicators = playcount.getMovieIndicators()

        isPlayable = 'true' if not 'plugin' in control.infoLabel('Container.PluginName') else 'false'

        playbackMenu = control.lang(30204).encode('utf-8') if control.setting('host_select') == '2' else control.lang(30203).encode('utf-8')

        cacheToDisc = False if not action == 'movieSearch' else True

        addonPoster, addonBanner = control.addonPoster(), control.addonBanner()
        addonFanart, settingFanart = control.addonFanart(), control.setting('fanart')

        #try:
        #    from metahandler import metahandlers
        #    metaget = metahandlers.MetaData(tmdb_api_key=self.tmdb_key, preparezip=False)
        #except:
        #    pass


        for i in items:
            try:
                label = '%s (%s)' % (i['title'], i['year'])
                imdb, title, year, trailer = i['imdb'], i['title'], i['year'], i.get('trailer')
                sysname = urllib.quote_plus('%s (%s)' % (title, year))
                systitle = urllib.quote_plus(title)

                poster, banner, fanart = i['poster'], i['banner'], i['fanart']
                if poster == '0': poster = addonPoster
                if banner == '0' and poster == '0': banner = addonBanner
                elif banner == '0': banner = poster

                #logger.debug('Title : %s poster : %s banner : %s fanart : %s' % (i['title'], poster, banner, fanart), __name__)
                meta = dict((k,v) for k, v in i.iteritems() if not v == '0')
                meta.update({'trailer': '%s?action=trailer&name=%s&url=%s' % (sysaddon, sysname, trailer)})
                if i['duration'] == '0': meta.update({'duration': '120'})
                try: meta.update({'duration': str(int(meta['duration']) * 60)})
                except: pass
                sysmeta = urllib.quote_plus(json.dumps(meta))


                url = '%s?action=play&name=%s&title=%s&year=%s&imdb=%s&meta=%s&t=%s' % (sysaddon, sysname, systitle, year, imdb, sysmeta, self.systime)
                sysurl = urllib.quote_plus(url)

                #try:
                #    playcount = metaget._get_watched('movie', imdb, '', '')
                #    if playcount == 7: meta.update({'playcount': 1, 'overlay': 7})
                #    else: meta.update({'playcount': 0, 'overlay': 6})
                #except:
                #    pass

                cm = []

                cm.append((playbackMenu, 'RunPlugin(%s?action=alterSources&url=%s&meta=%s)' % (sysaddon, sysurl, sysmeta))) # AUTOPLAY

                cm.append((control.lang(30214).encode('utf-8'), 'RunPlugin(%s?action=trailer&name=%s&url=%s)' % (sysaddon, sysname, trailer))) # TRAILER
                cm.append((control.lang(30205).encode('utf-8'), 'Action(Info)')) # MOVIEINFORMATION

                cm.append((control.lang(30212).encode('utf-8'), 'RunPlugin(%s?action=addView&content=movies)' % sysaddon)) # SET MOVIES VIEW


                try:
                    overlay = int(playcount.getMovieOverlay(indicators, imdb))
                    logger.debug('imdb : %s Overlay : %s' % (imdb, overlay), __name__)
                    if overlay == 7:
                        cm.append((control.lang(30206).encode('utf-8'), 'RunPlugin(%s?action=moviePlaycount&imdb=%s&query=6)' % (sysaddon, imdb)))
                        meta.update({'playcount': 1, 'overlay': 7})
                    else:
                        cm.append((control.lang(30207).encode('utf-8'), 'RunPlugin(%s?action=moviePlaycount&imdb=%s&query=7)' % (sysaddon, imdb)))
                        meta.update({'playcount': 0, 'overlay': 6})
                except Exception as e:
                    logger.error(e, __name__)
                    #pass

                item = control.item(label=label, iconImage=poster, thumbnailImage=poster)

                try: item.setArt({'poster': poster, 'banner': banner})
                except: pass

                if settingFanart == 'true' and not fanart == '0':
                    item.setProperty('Fanart_Image', fanart)
                elif not addonFanart == None:
                    item.setProperty('Fanart_Image', addonFanart)

                item.setInfo(type='Video', infoLabels = meta)
                item.setProperty('Video', 'true')
                item.setProperty('IsPlayable', isPlayable)
                item.addContextMenuItems(cm)
                control.addItem(handle=syshandle, url=url, listitem=item, isFolder=False)
            except Exception as e:
                logger.error(e, __name__)
                pass
        try:
            url = items[0]['next']
            if url == '': raise Exception()
            url = '%s?action=movies&url=%s' % (sysaddon, urllib.quote_plus(url))
            addonNext = control.addonNext()
            item = control.item(label=control.lang(30213).encode('utf-8'), iconImage=addonNext, thumbnailImage=addonNext)
            item.addContextMenuItems([])
            if not addonFanart == None: item.setProperty('Fanart_Image', addonFanart)
            control.addItem(handle=syshandle, url=url, listitem=item, isFolder=True)
        except Exception as e:
            logger.error(e, __name__)
            pass

        content = 'movies'
        control.content(syshandle, content)
        control.directory(syshandle, cacheToDisc=cacheToDisc)
        views.setView(content, {'skin.confluence': control.viewMode['confluence']['thumbnails'], 'skin.estuary':
            control.viewMode['esturary']['list']})
예제 #15
0
    def livetv(self):
        try:
            generateJSON = cache.get(self.removeJSON,
                                     168,
                                     __name__,
                                     table='live_cache')
            if not os.path.exists(self.filePath):
                generateJSON = 1

            if generateJSON:
                logger.debug('Generating %s JSON' % __name__, __name__)
                '''
                filePath = os.path.join(control.dataPath, self.fileName)
                with open(filePath, 'w') as outfile:
                    json.dump(self.base_link, outfile, sort_keys=True, indent=2)

                filename = open(self.filePath)
                result = filename.read()
                filename.close()

                self.base_link = json.loads(result)
                '''
                channelList = {}
                if control.setting('livelocal') == 'true':
                    self.base_location = os.path.join(control.dataPath,
                                                      'iptv_base.local')
                    file = open(self.base_location)
                    result = file.read()
                    file.close()
                else:
                    result = client.request(self.base_location)

                self.base_link = json.loads(result)
                for item in self.base_link:
                    try:
                        enabled = item['enabled']
                        if enabled == "false":
                            logger.debug('Skipping %s' % item['link'],
                                         __name__)
                            continue
                        type = item['source']
                        link = item['link']
                        regex = item['regex']
                        headers = link.rsplit('|', 1)[1]
                        link = link.rsplit('|', 1)[0]
                    except:
                        headers = None
                    '''
                    if control.setting('livelocal') == 'true' :
                        self.base_location = os.path.join(control.dataPath, 'test_base.local')
                        file = open(self.base_location)
                        result = file.read()
                        file.close()
                    else:
                        result = client.request(link, timeout=5)
                    '''

                    logger.debug('Fetching %s' % link, __name__)
                    result = client.request(link, timeout=5)

                    if result == None:
                        continue

                    result = result.replace('\r', '')

                    result = re.findall(regex, result, re.IGNORECASE)

                    for source, title, cUrl in result:
                        title = title.strip()
                        #title = cleantitle.live(title)
                        #if title == 'SKIP':
                        #    continue
                        if not headers == None:
                            cUrl = '%s|%s' % (cUrl, headers)
                        channelList['%s||%s' % (title, type)] = {
                            'icon': '',
                            'url': cUrl,
                            'provider': 'iptv',
                            'source': type,
                            'direct': False,
                            'quality': 'HD'
                        }
                    logger.debug(
                        'Fetched [%s] from %s' % (len(channelList), link),
                        __name__)

                filePath = os.path.join(control.dataPath, self.fileName)
                with open(filePath, 'w') as outfile:
                    json.dump(channelList, outfile, sort_keys=True, indent=2)

                liveParser = LiveParser(self.fileName, control.addon)
                self.srcs = liveParser.parseFile(decode=False)
            return (generateJSON, self.srcs)
        except Exception as e:
            import traceback
            traceback.print_exc()
            logger.error(e)
            pass
예제 #16
0
 def __init__(self):
     self.index_provider = control.setting('idx_provider')
예제 #17
0
import sys
import urlparse

from ashock.modules import control
from ashock.modules import logger
from ashock.modules import views
from ashock.modules import analytics

sysaddon = sys.argv[0] ; syshandle = int(sys.argv[1])

artPath = control.artPath() ; addonFanart = control.addonFanart()

try: action = dict(urlparse.parse_qsl(sys.argv[2].replace('?','')))['action']
except: action = None

imdbMode = False if control.setting('imdb_user') == '' else True

class navigator:
    def __init__(self):
        self.index_provider = control.setting('idx_provider')

    def root(self):

        self.addDirectoryItem(30860, 'movieLangNavigator', 'movies.png','DefaultMovies.png')
        #self.addDirectoryItem(90114, 'desiLiveNavigator', 'tv-live.png','DefaultMovies.png')
        #self.addDirectoryItem(90115, 'liveEPGNavigator', 'tv-epg.png','DefaultMovies.png')
        self.addDirectoryItem(30861, 'desiTVNavigator', 'tv-vod.png','DefaultMovies.png')

        self.addDirectoryItem(90116, 'openSettings&query=0.0', 'settings.png', 'DefaultMovies.png')
        self.addDirectoryItem(90117, 'clearCache', 'clearcache.png', 'DefaultMovies.png')
        self.addDirectoryItem(30864, 'changelog', 'changelog.png', 'DefaultMovies.png')