def __addLastVersion(self, servers):
     mainUrl = "https://gitlab.com/iptvplayer-for-e2/iptvplayer-for-e2"
     sts, data = self.cm.getPage(mainUrl + '/tree/master')
     if sts:
         crcSum = CParsingHelper.getSearchGroups(
             data,
             '"/iptvplayer-for-e2/iptvplayer-for-e2/commit/([^"]+?)">')[0]
         if 40 == len(crcSum):
             finalurl = mainUrl + '/blob/%s/IPTVPlayer/version.py' % crcSum
             sts, data = self.cm.getPage(finalurl)
             if sts:
                 newVerNum = CParsingHelper.getSearchGroups(
                     data,
                     '"([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)"')[0]
                 sourceUrl = mainUrl + "/repository/archive.tar.gz?ref=%s" % crcSum
                 server = {
                     'name': 'gitlab.com',
                     'version': newVerNum,
                     'url': sourceUrl,
                     'subdir': 'iptvplayer-for-e2.git/',
                     'pyver': 'X.X',
                     'packagetype': 'sourcecode'
                 }
                 printDBG(
                     "UpdateMainAppImpl.__addLastVersion server: [%s]" %
                     str(server))
                 servers.append(server)
         else:
             printDBG("Wrong crcSum[%s]" % crcSum)
 def getLink(self, url):
     printDBG("getLink url[%s]" % url)
     urlItem = url.split('|')
     if 3 == len(urlItem):
         url        = urlItem[0]
         post_data  = { 'action': 'getPlayer', 'id': urlItem[1], 'playerType': urlItem[2] }
         HEADER = dict(self.AJAX_HEADER)
         HEADER['Referer'] = url
         if 'free' == urlItem[2]:
             http_params = {'header': HEADER}
         else:
             http_params = {'header': HEADER, 'use_cookie': True, 'save_cookie': False, 'load_cookie': True, 'cookiefile': self.COOKIE_FILE}
             
         sts, data = self.cm.getPage( url, http_params, post_data)
         if not sts: return ''
         data = CParsingHelper.getDataBeetwenMarkers(data, '<div class="player">', '<div class="playerTypes">', False)[1]
         if 'free' == urlItem[2]:
             data = CParsingHelper.getSearchGroups(data, '<iframe [^>]*?src="([^"]+?)"')[0]
             sts, data = self.cm.getPage( data )
             if not sts: return ''
             data = CParsingHelper.getSearchGroups(data, '<iframe [^>]*?src="([^"]+?)"')[0]
             return self.up.getVideoLink( data )
         else:
             return CParsingHelper.getSearchGroups(data, 'url: [\'"](http[^\'"]+?)[\'"]')[0]
         return ''
     else:
         return url
    def listItems(self, data, itemType, nextPageItem=None, getPlot=None, setRating=True, ver=''):
        for item in data:
            icon  = CParsingHelper.getSearchGroups(item, 'src="([^"]+?jpg)"')[0]
            url   = CParsingHelper.getSearchGroups(item, 'href="([^"]+?)"')[0]
            title = CParsingHelper.getSearchGroups(item, 'title="([^"]+?)"')[0]
            if '' == title: title = CParsingHelper.getSearchGroups(item, '<div class="title">([^<]+?)</div>')[0]
            
            strRating = ''
            if setRating:
                strRating = CParsingHelper.getSearchGroups(item, '<div class="rating" style="width:([0-9]+?)\%">')[0]
                if '' == strRating: strRating = '0'
                strRating = 'Ocena: %s | ' % (str(int(strRating)/10) + '/10')
            
            if None == getPlot: plot = CParsingHelper.getDataBeetwenMarkers(item, '<div class="description">', '<a', False)[1]
            else:               plot = getPlot(item)
            plot  = self.cleanHtmlStr(plot)
            # validate data
            if '' == url or '' == title: continue
            if not url.startswith('http'): url = self.MAINURL + url
            if len(icon) and not icon.startswith('http'): icon = self.MAINURL + icon
            
            if 'video' == itemType:
                params = {'title':title, 'url':url, 'icon':icon, 'plot': strRating + plot, 'ver': ver}
                self.addVideo(params)
            else:
                params = {'name': 'category', 'title':title, 'category': itemType, 'url':url, 'icon':icon, 'plot': strRating + plot}
                self.addDir(params)

        if None != nextPageItem:
            self.addDir(nextPageItem)
Example #4
0
    def getVideoUrl(self, url):
        #show adult content
        #self.cm.addCookieItem(COOKIEFILE, {'name': 'AnyF18', 'value': 'mam18', 'domain': 'video.anyfiles.pl'}, False)
        if not self.isLogged():
            self.tryTologin()

        # GET VIDEO ID
        u = url.split('/')
        vidID = u[-1]
        match = re.search('([0-9]+?)\,', url)
        if match:
            vidID = match.group(1)

        # get COOKIE
        url = self.MAINURL + '/videos.jsp?id=' + vidID
        sts, data = self.cm.getPage(url, self.defaultParams)
        if not sts:
            return []
        fUrl = self.MAINURL + "/w.jsp?id=%s&width=620&height=349&pos=0&skin=0" % vidID
        COOKIE_JSESSIONID = self.cm.getCookieItem(self.COOKIEFILE,
                                                  'JSESSIONID')
        HEADER = {
            'Referer':
            url,
            'Cookie':
            'JSESSIONID=' + COOKIE_JSESSIONID + ';',
            'User-Agent':
            "Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; androVM for VirtualBox ('Tablet' version with phone caps) Build/JRO03S) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30"
        }
        request_param = {'header': HEADER}
        sts, data = self.cm.getPage(fUrl, request_param)
        if not sts: return []
        HEADER['Referer'] = fUrl
        config = CParsingHelper.getSearchGroups(data,
                                                'src="/?(pcs\?code=[^"]+?)"',
                                                1)[0]
        if '' != config:
            sts, data = self.cm.getPage(self.MAINURL + '/' + config,
                                        {'header': HEADER})
            if sts:
                #var source = "<source src=\"http://50.7.220.66/video/60ExQvchsi4PbqMLr--I7A/1433518629/5e638de7a15c7a8dc7c979044cd2a953_147325.mp4\" type=\"video/mp4\" />";
                #var track = "<track label=\"izombie.112...\" srclang=\"pl\" kind=\"captions\"  src=\"http://video.anyfiles.pl/subtit/1433508336949.srt\"></track>\n";
                data = data.replace('\\"', '"')
                #printDBG(data)
                difSourcesSrc = CParsingHelper.getSearchGroups(
                    data,
                    '''difSourcesSrc[^=]*?=[^"']*?["'](http[^'^"]+?)['"]''',
                    1)[0]
                url = CParsingHelper.getSearchGroups(
                    data, '''<source[^>]+?src=["'](http[^'^"]+?)['"]''', 1)[0]
                subUrl = CParsingHelper.getSearchGroups(
                    data, '''<track[^>]+?src=["'](http[^'^"]+?)['"]''', 1)[0]
                if 'youtube' in difSourcesSrc:
                    return self.getYTVideoUrl(difSourcesSrc)
                else:
                    return [{'name': 'AnyFiles.pl', 'url': url}]
        return []
Example #5
0
    def listItems(self,
                  data,
                  itemType,
                  nextPageItem=None,
                  getPlot=None,
                  setRating=True,
                  ver=''):
        for item in data:
            icon = CParsingHelper.getSearchGroups(item, 'src="([^"]+?jpg)"')[0]
            url = CParsingHelper.getSearchGroups(item, 'href="([^"]+?)"')[0]
            title = CParsingHelper.getSearchGroups(item, 'title="([^"]+?)"')[0]
            if '' == title:
                title = CParsingHelper.getSearchGroups(
                    item, '<div class="title">([^<]+?)</div>')[0]

            strRating = ''
            if setRating:
                strRating = CParsingHelper.getSearchGroups(
                    item, '<div class="rating" style="width:([0-9]+?)\%">')[0]
                if '' == strRating: strRating = '0'
                strRating = 'Ocena: %s | ' % (str(int(strRating) / 10) + '/10')

            if None == getPlot:
                plot = CParsingHelper.getDataBeetwenMarkers(
                    item, '<div class="description">', '<a', False)[1]
            else:
                plot = getPlot(item)
            plot = self.cleanHtmlStr(plot)
            # validate data
            if '' == url or '' == title: continue
            if not url.startswith('http'): url = self.MAINURL + url
            if len(icon) and not icon.startswith('http'):
                icon = self.MAINURL + icon

            if 'video' == itemType:
                params = {
                    'title': title,
                    'url': url,
                    'icon': icon,
                    'plot': strRating + plot,
                    'ver': ver
                }
                self.addVideo(params)
            else:
                params = {
                    'name': 'category',
                    'title': title,
                    'category': itemType,
                    'url': url,
                    'icon': icon,
                    'plot': strRating + plot
                }
                self.addDir(params)

        if None != nextPageItem:
            self.addDir(nextPageItem)
Example #6
0
    def listItems(self, cItem, category):
        printDBG("SeansikTV.listItems")

        page = cItem.get('page', 1)
        url = self._addPage(cItem.get('url'), page)
        sts, data = self.cm.getPage(url)
        if False == sts: return

        # check next page
        netxtPage = CParsingHelper.getDataBeetwenMarkers(
            data, '<b class="active">%d</b>' % page, '</div>', False)[1]
        if 'page' in netxtPage:
            netxtPage = True
            page += 1
        else:
            netxtPage = False

        sts, data = CParsingHelper.getDataBeetwenMarkers(
            data, '<div class="content table-sofi', '<div class="content">',
            False)
        data = data.split('<div class="content table-sofi')
        for item in data:
            icon = self._getFullUrl(
                CParsingHelper.getSearchGroups(item, 'src="([^"]+?jpg)"')[0])

            sts, tmp = CParsingHelper.getDataBeetwenReMarkers(
                item, re.compile('<td colspan="2"[^>]+?>'),
                re.compile('</td>'), False)
            url = self._getFullUrl(
                CParsingHelper.getSearchGroups(tmp, 'href="([^"]+?)"')[0])
            tmp = tmp.split('</a>')
            title = self.cleanHtmlStr(tmp[0])
            if 0 < len(tmp): desc = self.cleanHtmlStr(tmp[-1])
            # validate data
            if '' == url or '' == title: continue
            params = {
                'name': 'category',
                'category': category,
                'title': title,
                'url': url,
                'icon': icon,
                'desc': desc
            }
            if 'video' != category: self.addDir(params)
            else: self.addVideo(params)
        if netxtPage:
            params = dict(cItem)
            params.update({'title': 'Następna strona', 'page': page})
            self.addDir(params)
    def getVideoUrl(self, url):
        #show adult content
        #self.cm.addCookieItem(COOKIEFILE, {'name': 'AnyF18', 'value': 'mam18', 'domain': 'video.anyfiles.pl'}, False)
        if not self.isLogged():
            self.tryTologin()

        # GET VIDEO ID
        u = url.split('/')
        vidID = u[-1]
        match = re.search('([0-9]+?)\,', url )
        if match:
            vidID = match.group(1)

        # get COOKIE
        sts, data = self.cm.getPage(self.MAINURL + '/videos.jsp?id=' + vidID, self.defaultParams)
        if not sts: 
            return []
        fUrl = self.MAINURL + "/w.jsp?id=%s&width=620&height=349&pos=&skin=0" % vidID
        COOKIE_JSESSIONID = self.cm.getCookieItem(self.COOKIEFILE,'JSESSIONID')
        HEADER = {'Referer' : url, 'Cookie' : 'JSESSIONID=' + COOKIE_JSESSIONID, 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0'}
        request_param = {'header':HEADER}
        sts, data = self.cm.getPage(fUrl, request_param)
        if not sts: 
            return []
        
        #document.cookie = "__utdc_8a85608c7ff88b4de47cdc08107a8108=f68082abdaab664660b0c60289346552"+expires+"; path=";
        match = re.search('document.cookie = "([^"]+?)"',data)
        if match:
            printDBG("========================================================================== B")
            #printDBG(data)
            printDBG("========================================================================== C")
            HEADER['Cookie'] = HEADER['Cookie'] + '; ' + match.group(1)
            HEADER['Referer'] = self.MAINURL + '/flowplaer/flowplayer.commercial-3.2.16.swf'
            config = CParsingHelper.getSearchGroups(data, 'var flashvars = {[^"]+?config: "([^"]+?)" }', 1)[0]
            if '' == config: 
                printDBG("========================================================================== D")
                config = CParsingHelper.getSearchGroups(data, 'src="/?(pcsevlet\?code=[^"]+?)"', 1)[0]
            if '' != config:
                printDBG("========================================================================== E")
                sts,data = self.cm.getPage( self.MAINURL + '/' + config,  {'header': HEADER})
                if sts:
                    url = CParsingHelper.getSearchGroups(data, "'url':'(http[^']+?mp4)'", 1)[0]
                    if '' != url: 
                        return [{ 'name': 'AnyFiles', 'url': url}]
                    url = CParsingHelper.getSearchGroups(data, "'url':'api:([^']+?)'", 1)[0]
                    if '' != url: 
                        return self.getYTVideoUrl('http://www.youtube.com/watch?v='+url)
        return []
    def __init__(self, session, params={}):
        # params: vk_title, movie_title
        self.session = session
        Screen.__init__(self, session)
        
        self.params = params
        self.params['login']    = config.plugins.iptvplayer.opensuborg_login.value
        self.params['password'] = config.plugins.iptvplayer.opensuborg_password.value
        
        self.searchPattern = CParsingHelper.getNormalizeStr( self.params.get('movie_title', '') )
        
        # try to guess season and episode number
        try:
            tmp = CParsingHelper.getSearchGroups(self.searchPattern + ' ', 's([0-9]+?)e([0-9]+?)[^0-9]', 2)
            self.episodeData = {'season': int(tmp[0]), 'episode':int(tmp[1])}
        except:
            self.episodeData = {'season':-1, 'episode':-1}

        self.onShown.append(self.onStart)
        self.onClose.append(self.__onClose)
        
        self.subProvider = OpenSubOrgProvider()
        
        self["title"]         = Label(" ")
        self["console"]       = Label(" ")
        
        self["label_red"]     = Label(_("Cancel"))
        self["label_yellow"]  = Label(_("Move group"))
        self["label_green"]   = Label(_("Apply"))
        
        self["icon_red"]     = Cover3()
        self["icon_yellow"]  = Cover3()
        self["icon_green"]   = Cover3()
        
        self["list"] = IPTVMainNavigatorList()
        self["list"].connectSelChanged(self.onSelectionChanged)
        
        self["actions"] = ActionMap(["ColorActions", "SetupActions", "WizardActions", "ListboxActions"],
            {
                "cancel": self.keyExit,
                "ok"    : self.keyOK,
                "red"   : self.keyRed,
                "yellow": self.keyYellow,
                "green" : self.keyGreen,
            }, -2)
        
        self.iconPixmap = {}
        for icon in ['red', 'yellow', 'green']:
            self.iconPixmap[icon] = LoadPixmap(GetIconDir(icon+'.png'))
            
        self.movieTitle = ''
        self.stackList  = []
        self.stackItems = []
        
        self.defaultLanguage = GetDefaultLang()
    
        self.listMode = False
        self.downloadedSubFilePath = ''
        self.loginPassed = False
        self.tmpItem = None
 def __addLastVersion(self, servers):
     mainUrl = "https://gitlab.com/iptvplayer-for-e2/iptvplayer-for-e2"
     sts, data = self.cm.getPage(mainUrl + '/tree/master')
     if sts:
         crcSum = CParsingHelper.getSearchGroups(data, '"/iptvplayer-for-e2/iptvplayer-for-e2/commit/([^"]+?)">')[0]
         if 40 == len(crcSum):
             finalurl = mainUrl + '/blob/%s/IPTVPlayer/version.py' % crcSum
             sts, data = self.cm.getPage(finalurl)
             if sts:
                 newVerNum = CParsingHelper.getSearchGroups(data, '&quot;([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)&quot;')[0]
                 sourceUrl = mainUrl + "/repository/archive.tar.gz?ref=%s" % crcSum
                 server = {'name':'gitlab.com', 'version':newVerNum, 'url':sourceUrl, 'subdir':'iptvplayer-for-e2.git/', 'pyver':'X.X', 'packagetype':'sourcecode'}
                 printDBG("UpdateMainAppImpl.__addLastVersion server: [%s]" % str(server))
                 servers.append(server)
         else:
             printDBG("Wrong crcSum[%s]" % crcSum)
Example #10
0
    def checkVersionFile(self, newVerPath):
        code = 0
        msg = 'Wersja poprawna.'

        newVerFile = os_path.join(newVerPath, 'version.py')
        if os_path.isfile(newVerFile):
            verPattern = self.VERSION_PATTERN
        else:
            newVerFile = os_path.join(newVerPath, 'version.pyo')
            verPattern = '([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)'

        try:
            # get new version
            with open(newVerFile, "r") as verFile:
                data = verFile.read()
            newVerNum = CParsingHelper.getSearchGroups(data, verPattern)[0]
            if newVerNum != self.serversList[self.currServIdx]['version']:
                code = -1
                msg = _(
                    "Wrong version. \n downloaded version [%s] is different from the requested [%s]."
                ) % (newVerNum, self.serversList[self.currServIdx]['version'])
        except:
            printExc()
            code = -1
            msg = _("File [%s] reading failed.") % newVerFile
        return code, msg
Example #11
0
 def __addLastVersion(self, servers):
     mainUrl = "https://gitorious.org/iptvplayer-for-e2/iptvplayer-for-e2"
     sts, response = self.cm.getPage(mainUrl, {'return_data': False})
     if sts:
         finalurl = response.geturl()
         printDBG("UpdateMainAppImpl.__addLastVersion finalurl[%s]" %
                  finalurl)
         response.close()
         crcSum = finalurl.split('/')[-1].replace(':', '')
         if 40 == len(crcSum):
             sts, data = self.cm.getPage(finalurl + "IPTVPlayer/version.py")
             if sts:
                 newVerNum = CParsingHelper.getSearchGroups(
                     data,
                     '&quot;([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)&quot;')[0]
                 sourceUrl = mainUrl + "/archive/%s.tar.gz" % crcSum
                 server = {
                     'name': 'gitorious.org',
                     'version': newVerNum,
                     'url': sourceUrl,
                     'subdir': 'iptvplayer-for-e2-iptvplayer-for-e2/',
                     'pyver': 'X.X',
                     'packagetype': 'sourcecode'
                 }
                 printDBG(
                     "UpdateMainAppImpl.__addLastVersion server: [%s]" %
                     str(server))
                 servers.append(server)
         else:
             printDBG("Wrong crcSum[%s]" % crcSum)
Example #12
0
 def listSeasons(self, cItem, category):
     printDBG("SeansikTV.listSeasons")
     url = self._getFullUrl(cItem['url'])
     sts, data = self.cm.getPage(url)
     if False == sts: return
     icon = self._getFullUrl(
         CParsingHelper.getSearchGroups(
             data, 'href="([^"]+?\.jpg)" rel="image_src"')[0])
     data = CParsingHelper.getDataBeetwenMarkers(data, '<div class="jump">',
                                                 '</div>', False)[1]
     data = re.findall('<a href="#([^"]+?)">([^<]+?)</a>', data)
     for item in data:
         params = dict(cItem)
         params.update({
             'category': category,
             'season': item[0],
             'title': item[1],
             'icon': icon
         })
         self.addDir(params)
     if 0 == len(self.currList):
         cItem.update({
             'season': 'season1',
             'category': category,
             'icon': icon
         })
         self.listEpisodes(cItem)
Example #13
0
    def loadSubtitles(self, filePath, encoding='utf-8', fps=0):
        printDBG("OpenSubOrg.loadSubtitles filePath[%s]" % filePath)
        # try load subtitles using C-library
        try:
            if IsSubtitlesParserExtensionCanBeUsed():
                try:
                    if fps <= 0:
                        filename, file_extension = os_path.splitext(filePath)
                        tmp = CParsingHelper.getSearchGroups(
                            filename.upper() + '_', '_FPS([0-9.]+)_')[0]
                        if '' != tmp: fps = float(tmp)
                except Exception:
                    printExc()

                from Plugins.Extensions.IPTVPlayer.libs.iptvsubparser import _subparser as subparser
                with codecs.open(filePath, 'r', encoding, 'replace') as fp:
                    subText = fp.read().encode('utf-8')
                # if in subtitles will be line {1}{1}f_fps
                # for example {1}{1}23.976 and we set microsecperframe = 0
                # then microsecperframe will be calculated as follow: llroundf(1000000.f / f_fps)
                if fps > 0:
                    microsecperframe = int(1000000.0 / fps)
                else:
                    microsecperframe = 0
                # calc end time if needed - optional, default True
                setEndTime = True
                # characters per second - optional, default 12, can not be set to 0
                CPS = 12
                # words per minute - optional, default 138, can not be set to 0
                WPM = 138
                # remove format tags, like <i> - optional, default True
                removeTags = True
                subsObj = subparser.parse(subText, microsecperframe,
                                          removeTags, setEndTime, CPS, WPM)
                if 'type' in subsObj:
                    self.subAtoms = subsObj['list']
                    # Workaround start
                    try:
                        printDBG(
                            'Workaround for subtitles from Das Erste: %s' %
                            self.subAtoms[0]['start'])
                        if len(self.subAtoms
                               ) and self.subAtoms[0]['start'] >= 36000000:
                            for idx in range(len(self.subAtoms)):
                                for key in ['start', 'end']:
                                    if key not in self.subAtoms[idx]:
                                        continue
                                    if self.subAtoms[idx][key] >= 36000000:
                                        self.subAtoms[idx][key] -= 36000000
                    except Exception:
                        printExc()
                    # workaround end
                    self._fillPailsOfAtoms()
                    return True
                else:
                    return False
        except Exception:
            printExc()
        return self._loadSubtitles(filePath, encoding)
    def discoverInfoFromTitle(self, movieTitle=None):
        dInfo = {'movie_title': None, 'season': None, 'episode': None}
        if movieTitle == None:
            movieTitle = self.params.get('movie_title', '')

        # discovered information
        dInfo = {'movie_title': None, 'season': None, 'episode': None}
        dInfo['movie_title'] = CParsingHelper.getNormalizeStr(movieTitle)
        # try to guess season and episode number
        try:
            tmp = CParsingHelper.getSearchGroups(' ' + dInfo['movie_title'] + ' ', 's([0-9]+?)e([0-9]+?)[^0-9]', 2)
            dInfo.update({'season': int(tmp[0]), 'episode': int(tmp[1])})
        except Exception:
            try:
                tmp = CParsingHelper.getSearchGroups(' ' + dInfo['movie_title'] + ' ', '[^0-9]([0-9]+?)x([0-9]+?)[^0-9]', 2)
                dInfo.update({'season': int(tmp[0]), 'episode': int(tmp[1])})
            except Exception:
                pass
        return dInfo
Example #15
0
 def listsCategoriesMenu(self, url):
     sts, data = self.cm.getPage( url, {'header': self.HEADER } )
     if not sts: return 
     data = CParsingHelper.getDataBeetwenMarkers(data, 'movie-kat-selection">', '</ul>', False)[1]
     data = data.split('</li>')
     for item in data:
         title = self.cleanHtmlStr(item)
         catID = CParsingHelper.getSearchGroups(item, 'data-value="([^"]+?)"', 1)[0]
         params = {'name': 'category', 'title': title, 'category': catID}
         self.addDir(params)
Example #16
0
    def getLink(self, url):
        printDBG("getLink url[%s]" % url)
        urlItem = url.split('|')
        if 3 == len(urlItem):
            url = urlItem[0]
            post_data = {
                'action': 'getPlayer',
                'id': urlItem[1],
                'playerType': urlItem[2]
            }
            HEADER = dict(self.AJAX_HEADER)
            HEADER['Referer'] = url
            if 'free' == urlItem[2]:
                http_params = {'header': HEADER}
            else:
                http_params = {
                    'header': HEADER,
                    'use_cookie': True,
                    'save_cookie': False,
                    'load_cookie': True,
                    'cookiefile': self.COOKIE_FILE
                }

            sts, data = self.cm.getPage(url, http_params, post_data)
            if not sts: return ''
            data = CParsingHelper.getDataBeetwenMarkers(
                data, '<div class="player">', '<div class="playerTypes">',
                False)[1]
            if 'free' == urlItem[2]:
                data = CParsingHelper.getSearchGroups(
                    data, '<iframe [^>]*?src="([^"]+?)"')[0]
                sts, data = self.cm.getPage(data)
                if not sts: return ''
                data = CParsingHelper.getSearchGroups(
                    data, '<iframe [^>]*?src="([^"]+?)"')[0]
                return self.up.getVideoLink(data)
            else:
                return CParsingHelper.getSearchGroups(
                    data, 'url: [\'"](http[^\'"]+?)[\'"]')[0]
            return ''
        else:
            return url
Example #17
0
    def getVideoUrl(self, url):
        #show adult content
        #self.cm.addCookieItem(COOKIEFILE, {'name': 'AnyF18', 'value': 'mam18', 'domain': 'video.anyfiles.pl'}, False)
        if not self.isLogged():
            self.tryTologin()

        # GET VIDEO ID
        u = url.split('/')
        vidID = u[-1]
        match = re.search('([0-9]+?)\,', url )
        if match:
            vidID = match.group(1)

        # get COOKIE
        url = self.MAINURL + '/videos.jsp?id=' + vidID
        sts, data = self.cm.getPage(url, self.defaultParams)
        if not sts: 
            return []
        fUrl = self.MAINURL + "/w.jsp?id=%s&width=620&height=349&pos=0&skin=0" % vidID
        COOKIE_JSESSIONID = self.cm.getCookieItem(self.COOKIEFILE,'JSESSIONID')
        HEADER = {'Referer' : url, 'Cookie' : 'JSESSIONID=' + COOKIE_JSESSIONID + ';', 'User-Agent': "Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; androVM for VirtualBox ('Tablet' version with phone caps) Build/JRO03S) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30"}
        request_param = {'header':HEADER}
        sts, data = self.cm.getPage(fUrl, request_param)
        if not sts: return []
        HEADER['Referer'] = fUrl
        config = CParsingHelper.getSearchGroups(data, 'src="/?(pcs\?code=[^"]+?)"', 1)[0]
        if '' != config:
            sts,data = self.cm.getPage( self.MAINURL + '/' + config,  {'header': HEADER})
            if sts:
                #var source = "<source src=\"http://50.7.220.66/video/60ExQvchsi4PbqMLr--I7A/1433518629/5e638de7a15c7a8dc7c979044cd2a953_147325.mp4\" type=\"video/mp4\" />";
                #var track = "<track label=\"izombie.112...\" srclang=\"pl\" kind=\"captions\"  src=\"http://video.anyfiles.pl/subtit/1433508336949.srt\"></track>\n";
                data = data.replace('\\"', '"')
                #printDBG(data)
                difSourcesSrc = CParsingHelper.getSearchGroups(data, '''difSourcesSrc[^=]*?=[^"']*?["'](http[^'^"]+?)['"]''', 1)[0] 
                url    = CParsingHelper.getSearchGroups(data, '''<source[^>]+?src=["'](http[^'^"]+?)['"]''', 1)[0]
                subUrl = CParsingHelper.getSearchGroups(data, '''<track[^>]+?src=["'](http[^'^"]+?)['"]''', 1)[0]
                if 'youtube' in difSourcesSrc: 
                    return self.getYTVideoUrl(difSourcesSrc)
                else:
                    return [{'name':'AnyFiles.pl', 'url':url}]
        return []
Example #18
0
 def getFilmTab(self, url, category, pager):
     sts, data = self.cm.getPage( url, {'header': self.HEADER } )
     if not sts: return 
     nextPage = re.search('<li><a href="/filmy?.+?" rel="next">&raquo;</a></li>', data)        
     data = CParsingHelper.getDataBeetwenMarkers(data, '<div class="row-fluid  movie-item">', '<div class="container">', False)[1]
     data = data.split('<div class="row-fluid  movie-item">')
     titleA = re.compile('<a class="title"[^>]+?>')
     titleB = re.compile('</small>')
     plotA  = re.compile('<p class="desc">')
     plotB  = re.compile('</div>')
     for item in data:
         title = CParsingHelper.getDataBeetwenReMarkers(item, titleA, titleB, False)[1]
         page  = self.MAINURL + CParsingHelper.getSearchGroups(item, 'class="title" href="([^"]+?)"', 1)[0]
         plot  = CParsingHelper.getDataBeetwenReMarkers(item, plotA, plotB, False)[1]
         img   = CParsingHelper.getSearchGroups(item, 'src="([^"]+?)"', 1)[0]
         if '' != title and '' != page:
             params = {'title': title, 'page': page, 'icon': img, 'plot': plot}
             self.addVideo(params)
     if nextPage:
         params = {'name': 'nextpage', 'category': category, 'title': 'Następna strona', 'page': str(int(pager) + 1)}
         self.addDir(params)
 def __addLastVersion(self, servers):
     mainUrl = "https://gitorious.org/iptvplayer-for-e2/iptvplayer-for-e2"
     sts, response = self.cm.getPage(mainUrl, {'return_data':False})
     if sts:
         finalurl = response.geturl()
         printDBG("UpdateMainAppImpl.__addLastVersion finalurl[%s]" % finalurl)
         response.close()
         crcSum = finalurl.split('/')[-1].replace(':', '')
         if 40 == len(crcSum):
             sts, data = self.cm.getPage(finalurl + "IPTVPlayer/version.py")
             if sts:
                 newVerNum = CParsingHelper.getSearchGroups(data, '&quot;([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)&quot;')[0]
                 sourceUrl = mainUrl + "/archive/%s.tar.gz" % crcSum
                 server = {'name':'gitorious.org', 'version':newVerNum, 'url':sourceUrl, 'subdir':'iptvplayer-for-e2-iptvplayer-for-e2/', 'pyver':'X.X', 'packagetype':'sourcecode'}
                 printDBG("UpdateMainAppImpl.__addLastVersion server: [%s]" % str(server))
                 servers.append(server)
         else:
             printDBG("Wrong crcSum[%s]" % crcSum)
Example #20
0
    def getVideoUrl(self, url):
        #show adult content
        #self.cm.addCookieItem(COOKIEFILE, {'name': 'AnyF18', 'value': 'mam18', 'domain': 'video.anyfiles.pl'}, False)
        if not self.isLogged():
            self.tryTologin()

        # GET VIDEO ID
        u = url.split('/')
        vidID = u[-1]
        match = re.search('([0-9]+?)\,', url )
        if match:
            vidID = match.group(1)

        # get COOKIE
        url = self.MAINURL + '/videos.jsp?id=' + vidID
        sts, data = self.cm.getPage(url, self.defaultParams)
        if not sts: 
            return []
        fUrl = self.MAINURL + "/w.jsp?id=%s&width=640&height=360&start=0&skin=0&label=false&autostart=false" % vidID
        COOKIE_JSESSIONID = self.cm.getCookieItem(self.COOKIEFILE,'JSESSIONID')
        HEADER = {'Referer' : url, 'Cookie' : 'JSESSIONID=' + COOKIE_JSESSIONID + ';', 'User-Agent': self.defaultParams['header']['User-Agent']}
        request_param = {'header':HEADER}
        
        sts, data = self.cm.getPage(fUrl, request_param)
        if not sts: return []
        
        HEADER['Referer'] = fUrl
        
        tmp = re.compile('''['"](/video-js[^'^"]+?\.js)['"]''').findall(data)
        for item in tmp:
            sts, item = self.cm.getPage( self.MAINURL + item,  {'header': HEADER})
        
        linksTab = []
        config = CParsingHelper.getSearchGroups(data, '''['"](/AutocompleteData[^'^"]+?)['"]''', 1)[0]
        if '' != config:
            sts, data = self.cm.getPage( self.MAINURL + config.replace('&amp;', '&'),  {'header': HEADER})
            printDBG(data)
            if sts:
                source  = self.cm.ph.getSearchGroups(data, '''source\s*=\s*['"]([^'^"]+?)['"]''', 1)[0]
                extlink = self.cm.ph.getSearchGroups(data, '''extlink\s*=\s*['"]([^'^"]+?)['"]''', 1)[0]
                if self.cm.isValidUrl(extlink): linksTab.extend(self.up.getVideoLinkExt(extlink))
                if self.cm.isValidUrl(source): return [{'name':'AnyFiles.pl', 'url':source}]
        return linksTab
Example #21
0
    def listItems2(self, cItem, category):
        printDBG("SeansikTV.listItems2")
        self.listItems(cItem, category)
        return

        page = cItem.get('page', 1)
        url = self._addPage(cItem.get('url'), page)
        sts, data = self.cm.getPage(url)
        if False == sts: return

        netxtPage = False
        if ">&raquo;</a>" in data:
            page = page + 1
            netxtPage = True

        marker = '<tr class="tdb_'
        data = CParsingHelper.getDataBeetwenMarkers(data, marker,
                                                    '<div class="content">',
                                                    False)[1]
        data = data.split(marker)
        for item in data:
            url = self._getFullUrl(
                CParsingHelper.getSearchGroups(item, 'href="([^"]+?)"')[0])
            title = self.cleanHtmlStr(
                CParsingHelper.getDataBeetwenMarkers(item, 'title">', '</td>',
                                                     False)[1])
            desc = self.cleanHtmlStr(marker + item)
            # validate data
            if '' == url or '' == title: continue
            params = {
                'name': 'category',
                'category': category,
                'title': title,
                'url': url,
                'desc': desc
            }
            self.addDir(params)
        if netxtPage:
            params = dict(cItem)
            params.update({'title': 'Następna strona', 'page': page})
            self.addDir(params)
Example #22
0
 def listEpisodes(self, cItem):
     printDBG("SeansikTV.listEpisodes")
     url = self._getFullUrl(cItem['url'])
     sts, data = self.cm.getPage(url)
     if False == sts: return
     data = CParsingHelper.getDataBeetwenMarkers(
         data, 'id="%s"' % cItem['season'], '</table>', False)[1]
     marker = '<tr itemprop="episode"'
     data = data.split(marker)
     if len(data): del data[0]
     for item in data:
         if 'cross_add gray' in item:
             url = self._getFullUrl(
                 CParsingHelper.getSearchGroups(item, 'href="([^"]+?)"')[0])
             title = self.cleanHtmlStr(
                 CParsingHelper.getDataBeetwenMarkers(
                     item, '</td>', '</td>', False)[1])
             desc = self.cleanHtmlStr(item.split('</b>')[1])
             # validate data
             if '' == url or '' == title: continue
             params = dict(cItem)
             params.update({'title': title, 'url': url, 'desc': desc})
             self.addVideo(params)
    def checkVersionFile(self, newVerPath):
        code = 0
        msg  = 'Wersja poprawna.'
        
        newVerFile = os_path.join(newVerPath, 'version.py')
        if os_path.isfile(newVerFile):
            verPattern = self.VERSION_PATTERN
        else:
            newVerFile = os_path.join(newVerPath, 'version.pyo')
            verPattern = '([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)'

        try:
            # get new version
            with open (newVerFile, "r") as verFile: data = verFile.read()
            newVerNum = CParsingHelper.getSearchGroups(data, verPattern)[0]
            if newVerNum != self.serversList[self.currServIdx]['version']:
                code = -1
                msg  = _("Wrong version. \n downloaded version [%s] is different from the requested [%s].") % (newVerNum, self.serversList[self.currServIdx]['version'])
        except:
            printExc()
            code = -1
            msg  = _("File [%s] reading failed.") % newVerFile
        return code, msg
 def getLinks(self, url, lang, playerType):
     printDBG("getLinks lang[%r], playerType[%r]" % (lang, playerType) )
     hostingTab = []
     HEADER = dict(self.AJAX_HEADER)
     HEADER['Referer'] = url
     if 'free' == playerType['val']:
         http_params = {'header': HEADER}
     else:
         http_params = {'header': HEADER, 'use_cookie': True, 'save_cookie': False, 'load_cookie': True, 'cookiefile': self.COOKIE_FILE}
     #post_data = { 'action': 'getPlayer', 'lang': lang['val'], 'playerType': playerType['val'] }
     post_data = { 'action': 'getPlayer', 'id': lang['val'], 'setHosting': '1' }
     
     sts, data = self.cm.getPage( url, http_params, post_data)
     if not sts or 'Player premium jest dostępny tylko dla' in data: 
         return hostingTab
     
     # get players ID
     playersData = CParsingHelper.getDataBeetwenMarkers(data, '<div class="services">', '</div>', False)[1]
     playersData = re.compile('data-id="([0-9]+?)" data-playertype="([^"]+?)"[^>]*?>([^<]+?)</a>').findall(data)
     for item in playersData:
         tmp = {'need_resolve':1, 'name': '%s|%s|%s' % (lang['title'].ljust(16), playerType['title'].center(12), item[2].strip().rjust(14)), 'url': '%s|%s|%s' % (url, item[0], playerType['val']) }
         hostingTab.append(tmp)
      
     # new method to get premium links
     if 0 == len(hostingTab):
         sts, tmp = CParsingHelper.getDataBeetwenMarkers(data, 'newPlayer.init("', '")', False)
         try:
             tmp = CParsingHelper.getSearchGroups(data, 'id="%s" data-key="([^"]+?)"' % tmp)[0]
             tmp = base64.b64decode(tmp[2:])
             tmp = byteify( json.loads(tmp)['url'] )
             title = '%s | premium' % lang['title'].ljust(16)
             tmp = {'need_resolve':1, 'name': title, 'url': tmp}
             hostingTab.append(tmp)
             printDBG("||||||||||||||||||||||||||||||||||||%s|||||||||||||||||||||||||||||||" % tmp)
         except:
             printExc()
     return hostingTab
Example #25
0
    def getHostingTable(self, urlItem):
        printDBG("SeansikTV.getHostingTable")
        # use cache if possible
        if 0 < len(self.linksCacheCache.get('tab', [])) and (
                urlItem['url'] +
                urlItem.get('ver', '')) == self.linksCacheCache.get(
                    'marker', None):
            return self.linksCacheCache['tab']
        hostingTab = []

        sts, data = self.cm.getPage(self._getFullUrl(urlItem['url']))
        if not sts: return hostingTab

        long_hashes = CParsingHelper.getSearchGroups(
            data, '_sasa[ ]*?=[ ]*?{([^}]+?)}')[0]
        short_hashes = CParsingHelper.getDataBeetwenMarkers(
            data, '<div id="translation_', '<div class="content"', False)[1]
        #printDBG("long_hashes[%s]" % long_hashes)
        #printDBG("short_hashes[%s]" % short_hashes)

        marker = '<h3 class="brb"'
        data = CParsingHelper.getDataBeetwenMarkers(data, marker,
                                                    '<div id="boxShow">',
                                                    False)[1]
        data = data.split(marker)
        for item in data:
            embed_id = CParsingHelper.getSearchGroups(
                item, 'id="embedTitle_([0-9]+?)">')[0]
            if '' == embed_id: continue
            quality = CParsingHelper.getDataBeetwenMarkers(
                item, '<span class="f-left">', '</span>', False)[1]
            hosting = CParsingHelper.getDataBeetwenMarkers(
                item, '<b>', '</b>', False)[1].strip()
            translation = CParsingHelper.getDataBeetwenMarkers(
                item, 'align="rigth">', '</span>', False)[1].strip()

            title = CParsingHelper.removeDoubles(
                translation + ': ' + hosting + ' ' + quality, ' ')
            if len(embed_id):
                # get embed hash
                short_hash = CParsingHelper.getSearchGroups(
                    short_hashes,
                    '''<div onclick="frame\('([^']+?)', this, event\);" data-id="%s"'''
                    % embed_id)[0]
                if '' == short_hash:
                    short_hash = CParsingHelper.getSearchGroups(
                        short_hashes,
                        '<div data-vid_key="([^"]+?)".+?data-id="%s"' %
                        embed_id)[0]
                #printDBG("embed_id[%s] short_hash[%s]" % (embed_id, short_hash))
                if '' == short_hash: continue
                long_hash = CParsingHelper.getSearchGroups(
                    long_hashes, '"%s":"([^"]+?)"' % short_hash)[0]
                if '' == long_hash: continue
                try:
                    url = base64.b64decode(long_hash)
                    if 'src=' in url:
                        url = CParsingHelper.getSearchGroups(
                            url, 'src="([^"]+?)"')[0]
                    printDBG("======================================= [%s]" %
                             url)
                    #if 1 != self.up.checkHostSupport('http://' + hosting + '/'):
                    #    continue
                except:
                    continue
                #if url.startswith('http'):
                hostingTab.append({
                    'name':
                    title,
                    'url':
                    strwithmeta(self.cleanHtmlStr(url), {'hosting': hosting}),
                    'need_resolve':
                    1
                })
        self.linksCacheCache = {'marker': urlItem['url'], 'tab': hostingTab}
        return hostingTab
    def __init__(self, session, params={}):
        # params: vk_title, movie_title
        self.session = session
        Screen.__init__(self, session)

        self.params = params
        self.params['login'] = config.plugins.iptvplayer.opensuborg_login.value
        self.params[
            'password'] = config.plugins.iptvplayer.opensuborg_password.value

        self.searchPattern = CParsingHelper.getNormalizeStr(
            self.params.get('movie_title', ''))

        # try to guess season and episode number
        try:
            tmp = CParsingHelper.getSearchGroups(self.searchPattern + ' ',
                                                 's([0-9]+?)e([0-9]+?)[^0-9]',
                                                 2)
            self.episodeData = {'season': int(tmp[0]), 'episode': int(tmp[1])}
        except:
            self.episodeData = {'season': -1, 'episode': -1}

        self.onShown.append(self.onStart)
        self.onClose.append(self.__onClose)

        self.subProvider = OpenSubOrgProvider()

        self["title"] = Label(" ")
        self["console"] = Label(" ")

        self["label_red"] = Label(_("Cancel"))
        self["label_yellow"] = Label(_("Move group"))
        self["label_green"] = Label(_("Apply"))

        self["icon_red"] = Cover3()
        self["icon_yellow"] = Cover3()
        self["icon_green"] = Cover3()

        self["list"] = IPTVMainNavigatorList()
        self["list"].connectSelChanged(self.onSelectionChanged)

        self["actions"] = ActionMap(
            [
                "ColorActions", "SetupActions", "WizardActions",
                "ListboxActions"
            ], {
                "cancel": self.keyExit,
                "ok": self.keyOK,
                "red": self.keyRed,
                "yellow": self.keyYellow,
                "green": self.keyGreen,
            }, -2)

        self.iconPixmap = {}
        for icon in ['red', 'yellow', 'green']:
            self.iconPixmap[icon] = LoadPixmap(GetIconDir(icon + '.png'))

        self.movieTitle = ''
        self.stackList = []
        self.stackItems = []

        self.defaultLanguage = GetDefaultLang()

        self.listMode = False
        self.downloadedSubFilePath = ''
        self.loginPassed = False
        self.tmpItem = None
    def getVideoUrl(self, url):
        #show adult content
        #self.cm.addCookieItem(COOKIEFILE, {'name': 'AnyF18', 'value': 'mam18', 'domain': 'video.anyfiles.pl'}, False)
        if not self.isLogged():
            self.tryTologin()

        # GET VIDEO ID
        u = url.split('/')
        vidID = u[-1]
        match = re.search('([0-9]+?)\,', url)
        if match:
            vidID = match.group(1)

        # get COOKIE
        sts, data = self.cm.getPage(self.MAINURL + '/videos.jsp?id=' + vidID,
                                    self.defaultParams)
        if not sts:
            return []
        fUrl = self.MAINURL + "/w.jsp?id=%s&width=620&height=349&pos=&skin=0" % vidID
        COOKIE_JSESSIONID = self.cm.getCookieItem(self.COOKIEFILE,
                                                  'JSESSIONID')
        HEADER = {
            'Referer':
            url,
            'Cookie':
            'JSESSIONID=' + COOKIE_JSESSIONID,
            'User-Agent':
            'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0'
        }
        request_param = {'header': HEADER}
        sts, data = self.cm.getPage(fUrl, request_param)
        if not sts:
            return []

        #document.cookie = "__utdc_8a85608c7ff88b4de47cdc08107a8108=f68082abdaab664660b0c60289346552"+expires+"; path=";
        match = re.search('document.cookie = "([^"]+?)"', data)
        if match:
            printDBG(
                "========================================================================== B"
            )
            #printDBG(data)
            printDBG(
                "========================================================================== C"
            )
            HEADER['Cookie'] = HEADER['Cookie'] + '; ' + match.group(1)
            HEADER[
                'Referer'] = self.MAINURL + '/flowplaer/flowplayer.commercial-3.2.16.swf'
            config = CParsingHelper.getSearchGroups(
                data, 'var flashvars = {[^"]+?config: "([^"]+?)" }', 1)[0]
            if '' == config:
                printDBG(
                    "========================================================================== D"
                )
                config = CParsingHelper.getSearchGroups(
                    data, 'src="/?(pcsevlet\?code=[^"]+?)"', 1)[0]
            if '' != config:
                printDBG(
                    "========================================================================== E"
                )
                sts, data = self.cm.getPage(self.MAINURL + '/' + config,
                                            {'header': HEADER})
                if sts:
                    url = CParsingHelper.getSearchGroups(
                        data, "'url':'(http[^']+?mp4)'", 1)[0]
                    if '' != url:
                        return [{'name': 'AnyFiles', 'url': url}]
                    url = CParsingHelper.getSearchGroups(
                        data, "'url':'api:([^']+?)'", 1)[0]
                    if '' != url:
                        return self.getYTVideoUrl(
                            'http://www.youtube.com/watch?v=' + url)
        return []
Example #28
0
    def getLinks(self, url, lang, playerType):
        printDBG("getLinks lang[%r], playerType[%r]" % (lang, playerType))
        hostingTab = []
        HEADER = dict(self.AJAX_HEADER)
        HEADER['Referer'] = url
        if 'free' == playerType['val']:
            http_params = {'header': HEADER}
        else:
            http_params = {
                'header': HEADER,
                'use_cookie': True,
                'save_cookie': False,
                'load_cookie': True,
                'cookiefile': self.COOKIE_FILE
            }
        #post_data = { 'action': 'getPlayer', 'lang': lang['val'], 'playerType': playerType['val'] }
        post_data = {
            'action': 'getPlayer',
            'id': lang['val'],
            'setHosting': '1'
        }

        sts, data = self.cm.getPage(url, http_params, post_data)
        if not sts or 'Player premium jest dostępny tylko dla' in data:
            return hostingTab

        # get players ID
        playersData = CParsingHelper.getDataBeetwenMarkers(
            data, '<div class="services">', '</div>', False)[1]
        playersData = re.compile(
            'data-id="([0-9]+?)" data-playertype="([^"]+?)"[^>]*?>([^<]+?)</a>'
        ).findall(data)
        for item in playersData:
            tmp = {
                'need_resolve':
                1,
                'name':
                '%s|%s|%s' %
                (lang['title'].ljust(16), playerType['title'].center(12),
                 item[2].strip().rjust(14)),
                'url':
                '%s|%s|%s' % (url, item[0], playerType['val'])
            }
            hostingTab.append(tmp)

        # new method to get premium links
        if 0 == len(hostingTab):
            sts, tmp = CParsingHelper.getDataBeetwenMarkers(
                data, 'newPlayer.init("', '")', False)
            try:
                tmp = CParsingHelper.getSearchGroups(
                    data, 'id="%s" data-key="([^"]+?)"' % tmp)[0]
                tmp = base64.b64decode(tmp[2:])
                tmp = byteify(json.loads(tmp)['url'])
                title = '%s | premium' % lang['title'].ljust(16)
                tmp = {'need_resolve': 1, 'name': title, 'url': tmp}
                hostingTab.append(tmp)
                printDBG(
                    "||||||||||||||||||||||||||||||||||||%s|||||||||||||||||||||||||||||||"
                    % tmp)
            except:
                printExc()
        return hostingTab