def doDowanloadSubtitle(self, callback, subItem, tmpDir, subDir):
     self.outerCallback = callback
     self.tmpData = {'subItem':subItem, 'tmpDir':tmpDir, 'subDir':subDir}
     # subItem === private_data
     
     tmpFile = tmpDir + OpenSubOrgProvider.TMP_FILE_NAME
     self.filesToRemove.append(tmpFile)
     self.tmpData['tmpFile'] = tmpFile
     tmpFile = " '{0}' ".format(tmpFile)
     
     if not subItem.get('napisy_24', False):
         params = {'User-Agent': OpenSubOrgProvider.USER_AGENT}
         url     = " '{0}' ".format(subItem['SubDownloadLink'])
         cmd = DMHelper.getBaseWgetCmd(params) + url + ' -O ' + tmpFile + ' > /dev/null 2>&1 '
         printDBG('doDowanloadSubtitle cmd[%s]' % cmd)
         self.iptv_sys = iptv_system(cmd, self._doDowanloadSubtitleCallback)
     else:
         tmpFileZip = self.tmpData['tmpFile'] + '.zip'
         self.tmpData['tmpFileZip'] = tmpFileZip
         self.filesToRemove.append(tmpFileZip)
         tmpFileZip = " '{0}' ".format(tmpFileZip)
         params = {'User-Agent': self.NAPISY24_USER_AGENT, 'Referer':'http://napisy24.pl/'}
         url     = "'http://napisy24.pl/run/pages/download.php?napisId={0}&typ=sr'".format(subItem['id'])
         cmd = DMHelper.getBaseWgetCmd(params) + url + ' -O ' + tmpFileZip + ' > /dev/null 2>&1 '
         printDBG('_doSearchSubtitleNapisy24Callback cmd[%s]' % cmd)
         self.iptv_sys = iptv_system(cmd, self._doDowanloadSubtitle24Callback)
 def doDowanloadSubtitle(self, callback, subItem, tmpDir, subDir):
     self.outerCallback = callback
     self.tmpData = {'subItem':subItem, 'tmpDir':tmpDir, 'subDir':subDir}
     # subItem === private_data
     
     tmpFile = tmpDir + OpenSubOrgProvider.TMP_FILE_NAME
     self.filesToRemove.append(tmpFile)
     self.tmpData['tmpFile'] = tmpFile
     tmpFile = " '{0}' ".format(tmpFile)
     
     if not subItem.get('napisy_24', False):
         params = {'User-Agent': OpenSubOrgProvider.USER_AGENT}
         url     = " '{0}' ".format(subItem['SubDownloadLink'])
         cmd = DMHelper.getBaseWgetCmd(params) + url + ' -O ' + tmpFile + ' > /dev/null 2>&1 '
         printDBG('doDowanloadSubtitle cmd[%s]' % cmd)
         self.iptv_sys = iptv_system(cmd, self._doDowanloadSubtitleCallback)
     else:
         tmpFileZip = self.tmpData['tmpFile'] + '.zip'
         self.tmpData['tmpFileZip'] = tmpFileZip
         self.filesToRemove.append(tmpFileZip)
         tmpFileZip = " '{0}' ".format(tmpFileZip)
         params = {'User-Agent': self.NAPISY24_USER_AGENT, 'Referer':'http://napisy24.pl/'}
         url     = "'http://napisy24.pl/run/pages/download.php?napisId={0}&typ=sr'".format(subItem['id'])
         cmd = DMHelper.getBaseWgetCmd(params) + url + ' -O ' + tmpFileZip + ' > /dev/null 2>&1 '
         printDBG('_doSearchSubtitleNapisy24Callback cmd[%s]' % cmd)
         self.iptv_sys = iptv_system(cmd, self._doDowanloadSubtitle24Callback)
    def doDowanloadSubtitle(self, callback, subItem, tmpDir, subDir):
        self.outerCallback = callback
        self.tmpData = {"subItem": subItem, "tmpDir": tmpDir, "subDir": subDir}
        # subItem === private_data

        tmpFile = tmpDir + OpenSubOrgProvider.TMP_FILE_NAME
        self.filesToRemove.append(tmpFile)
        self.tmpData["tmpFile"] = tmpFile
        tmpFile = " '{0}' ".format(tmpFile)

        if not subItem.get("napisy_24", False):
            params = {"User-Agent": OpenSubOrgProvider.USER_AGENT}
            url = " '{0}' ".format(subItem["SubDownloadLink"])
            cmd = DMHelper.getBaseWgetCmd(params) + url + " -O " + tmpFile + " > /dev/null 2>&1 "
            printDBG("doDowanloadSubtitle cmd[%s]" % cmd)
            self.iptv_sys = iptv_system(cmd, self._doDowanloadSubtitleCallback)
        else:
            tmpFileZip = self.tmpData["tmpFile"] + ".zip"
            self.tmpData["tmpFileZip"] = tmpFileZip
            self.filesToRemove.append(tmpFileZip)
            tmpFileZip = " '{0}' ".format(tmpFileZip)
            params = {"User-Agent": self.NAPISY24_USER_AGENT, "Referer": "http://napisy24.pl/"}
            url = "'http://napisy24.pl/run/pages/download.php?napisId={0}&typ=sr'".format(subItem["id"])
            cmd = DMHelper.getBaseWgetCmd(params) + url + " -O " + tmpFileZip + " > /dev/null 2>&1 "
            printDBG("_doSearchSubtitleNapisy24Callback cmd[%s]" % cmd)
            self.iptv_sys = iptv_system(cmd, self._doDowanloadSubtitle24Callback)
 def goGetEpisodeType(self, privateData):
     url  = "'http://www.imdb.com/title/tt{0}/episodes/_ajax?season={1}'".format(privateData['id'], privateData['season'])
     grep =  '?ref_=ttep_ep{0}"'.format(privateData['episode'])
     grep = " | grep '{0}'".format(grep)
     cmd  = DMHelper.getBaseWgetCmd({}) + url + ' -O - 2>/dev/null ' + grep
     printDBG('doGetEpisodes cmd[%s]' % cmd)
     self.iptv_sys = iptv_system(cmd, self._goGetEpisodeTypeCallback)
    def start(self, url, filePath, params={}, info_from=None, retries=0):
        '''
            Owervrite start from BaseDownloader
        '''
        self.url = url
        self.filePath = filePath
        self.downloaderParams = params
        self.fileExtension = ''  # should be implemented in future

        self.outData = ''
        self.contentType = 'unknown'
        if None == info_from:
            info_from = WgetDownloader.INFO.FROM_FILE
        self.infoFrom = info_from

        cmd = DMHelper.getBaseWgetCmd(self.downloaderParams) + (
            ' --progress=dot:default -t %d ' % retries
        ) + '"' + self.url + '" -O "' + self.filePath + '" > /dev/null'
        printDBG("Download cmd[%s]" % cmd)

        self.console = eConsoleAppContainer()
        self.console_appClosed_conn = eConnectCallback(self.console.appClosed,
                                                       self._cmdFinished)
        self.console_stderrAvail_conn = eConnectCallback(
            self.console.stderrAvail, self._dataAvail)
        self.console.execute(cmd)

        self.wgetStatus = self.WGET_STS.CONNECTING
        self.status = DMHelper.STS.DOWNLOADING

        self.onStart()
        return BaseDownloader.CODE_OK
 def _doSearchMovieNapisy24(self):
     params = {'User-Agent': self.NAPISY24_USER_AGENT, 'Referer':'http://napisy24.pl/'}
     query = 'title={0}'.format(urllib.quote(self.tmpData['title']))
     url     = "'http://napisy24.pl/libs/webapi.php?{0}'".format(query)
     cmd = DMHelper.getBaseWgetCmd(params) + url + ' -O - 2> /dev/null '
     printDBG('_doSearchMovieNapisy24 cmd[%s]' % cmd)
     self.iptv_sys = iptv_system(cmd, self._doSearchMovieNapisy24Callback)
Esempio n. 7
0
    def doStartDownload(self):
        self.outData = ''
        self.contentType = 'unknown'
        filePath = self.multi['files'][self.currIdx]
        url = self.multi['urls'][self.currIdx]

        info = ""
        retries = 0

        cmd = DMHelper.getBaseWgetCmd(self.downloaderParams) + (
            ' %s -t %d ' % (info, retries)
        ) + '"' + url + '" -O "' + filePath + '" > /dev/null'
        printDBG("doStartDownload cmd[%s]" % cmd)

        self.console = eConsoleAppContainer()
        self.console_appClosed_conn = eConnectCallback(self.console.appClosed,
                                                       self._cmdFinished)
        self.console_stderrAvail_conn = eConnectCallback(
            self.console.stderrAvail, self._dataAvail)
        self.console.execute(E2PrioFix(cmd))

        self.status = DMHelper.STS.DOWNLOADING

        self.onStart()
        return BaseDownloader.CODE_OK
 def doGetItemType(self, callback, privateData):
     self.outerCallback = callback
     self.tmpData = {}
     self.itemTypeCache = {'type':'movie'}        
     url     = "'https://api.themoviedb.org/3/find/tt{0}?api_key={1}&external_source=imdb_id'".format(privateData['id'], base64.b64decode('NjMxMWY4MmQ1MjAxNDI2NWQ3NjVkMzk4MDJhYWZhYTc='))
     cmd = DMHelper.getBaseWgetCmd({}) + url + ' -O - 2> /dev/null '
     self.iptv_sys = iptv_system(cmd, self._doGetItemTypeCallback)
 def goGetEpisodeType(self, privateData):
     url  = "'http://www.imdb.com/title/tt{0}/episodes/_ajax?season={1}'".format(privateData['id'], privateData['season'])
     grep =  '?ref_=ttep_ep{0}"'.format(privateData['episode'])
     grep = " | grep '{0}'".format(grep)
     cmd  = DMHelper.getBaseWgetCmd({}) + url + ' -O - 2>/dev/null ' + grep
     printDBG('doGetEpisodes cmd[%s]' % cmd)
     self.iptv_sys = iptv_system(cmd, self._goGetEpisodeTypeCallback)
 def _doSearchMovieNapisy24(self):
     params = {'User-Agent': self.NAPISY24_USER_AGENT, 'Referer':'http://napisy24.pl/'}
     query = 'title={0}'.format(urllib.quote(self.tmpData['title']))
     url     = "'http://napisy24.pl/libs/webapi.php?{0}'".format(query)
     cmd = DMHelper.getBaseWgetCmd(params) + url + ' -O - 2> /dev/null '
     printDBG('_doSearchMovieNapisy24 cmd[%s]' % cmd)
     self.iptv_sys = iptv_system(cmd, self._doSearchMovieNapisy24Callback)
Esempio n. 11
0
    def start(self, url, filePath, params = {}, info_from=None, retries=0):
        '''
            Owervrite start from BaseDownloader
        '''
        self.url              = url
        self.filePath         = filePath
        self.downloaderParams = params
        self.fileExtension    = '' # should be implemented in future
        
        self.outData = ''
        self.contentType = 'unknown'
        if None == info_from:
            info_from = WgetDownloader.INFO.FROM_FILE
        self.infoFrom    = info_from
        
        if self.infoFrom == WgetDownloader.INFO.FROM_DOTS:
            info = "--progress=dot:default"
        else: info = ""
        
        cmd = DMHelper.getBaseWgetCmd(self.downloaderParams) + (' %s -t %d ' % (info, retries)) + '"' + self.url + '" -O "' + self.filePath + '" > /dev/null'
        printDBG("Download cmd[%s]" % cmd)
        
        self.console = eConsoleAppContainer()
        self.console_appClosed_conn  = eConnectCallback(self.console.appClosed, self._cmdFinished)
        self.console_stderrAvail_conn = eConnectCallback(self.console.stderrAvail, self._dataAvail)
        self.console.execute( E2PrioFix( cmd ) )

        self.wgetStatus = self.WGET_STS.CONNECTING
        self.status     = DMHelper.STS.DOWNLOADING
        
        self.onStart()
        return BaseDownloader.CODE_OK
    def _startFragment(self, tryAgain=False):
        printDBG("_startFragment tryAgain[%r]" % tryAgain)
        self.outData = ''
        self.remoteFragmentSize = -1
        self.remoteFragmentType = 'unknown'
                            
        if 0 > self.localFileSize:
            self.m3u8_prevLocalFileSize = 0
        else:
            self.m3u8_prevLocalFileSize = self.localFileSize
        ##############################################################################
        # frist download nextFragment conntent
        ##############################################################################
        self.downloadType = self.DOWNLOAD_TYPE.SEGMENT
 
        if None != self.console:
            self.console_appClosed_conn = None
            self.console_stderrAvail_conn = None
        #self.console = eConsoleAppContainer()
        self.console_appClosed_conn = eConnectCallback(self.console.appClosed,  self._cmdFinished )
        self.console_stderrAvail_conn = eConnectCallback(self.console.stderrAvail, self._dataAvail )
        
        if tryAgain and self.tries >= self.MAX_RETRIES:
            if not self.liveStream:
                return DMHelper.STS.INTERRUPTED
            else:
                # even if fragment is lost this is not big problem, download next one, 
                # this is a live stream this can happen :)
                tryAgain = False
            
        currentFragment = None
        if False == tryAgain:
            self.tries = 0
            if (self.currentFragment + 1) < len(self.fragmentList):
                self.currentFragment += 1
                currentFragment = self.fragmentList[self.currentFragment]  
        else:
            self.tries += 1
            currentFragment = self.fragmentList[self.currentFragment]        
        
        if None != currentFragment:
            self.wgetStatus = self.WGET_STS.CONNECTING
            cmd = DMHelper.getBaseWgetCmd(self.downloaderParams) + (' --tries=1 --timeout=%d ' % self._getTimeout()) + '"' + currentFragment + '" -O - >> "' + self.filePath + '"'
            printDBG("Download cmd[%s]" % cmd)
            self.console.execute( E2PrioFix( cmd ) )
            
            #with open("/home/sulge/tmp/m3u8.txt", "a") as myfile:
            #with open("/hdd/dbg_m3u8.txt", "a") as myfile:
            #    myfile.write(currentFragment+"\n")
                
            return DMHelper.STS.DOWNLOADING
        else:
            if self.liveStream:
                # we are in live so wait for new fragments
                printDBG("m3u8 downloader - wait for new fragments ----------------------------------------------------------------")
                self.downloadType = self.DOWNLOAD_TYPE.WAITTING
                self.console.execute( E2PrioFix( "sleep 2" ) )
                return DMHelper.STS.DOWNLOADING 
            else:
                return DMHelper.STS.DOWNLOADED
    def start(self, url, filePath, params = {}):
        '''
            Owervrite start from BaseDownloader
        '''
        self.url              = url
        self.filePath         = filePath
        self.downloaderParams = params
        self.fileExtension    = '' # should be implemented in future
        if 'ustream.tv' in url:
            self.streamSelector = strwithmeta(url).meta.get('iptv_chank_url', '')
        else:
            self.streamSelector = strwithmeta(url).meta.get('iptv_bitrate', 0)
        
        self.outData = ''
        self.contentType = 'unknown'
        
        baseWgetCmd = DMHelper.getBaseWgetCmd(self.downloaderParams) 
        
        cmd = DMHelper.GET_F4M_PATH() + (" '%s'" % baseWgetCmd) + (' "%s"' % self.url) + (' "%s"' % self.filePath) + (' %s' % self.streamSelector) + ' > /dev/null'

        printDBG("F4mDownloader::start cmd[%s]" % cmd)
        
        self.console = eConsoleAppContainer()
        self.console_appClosed_conn = eConnectCallback(self.console.appClosed, self._cmdFinished)
        self.console_stderrAvail_conn = eConnectCallback(self.console.stderrAvail, self._dataAvail)
        self.console.execute( cmd )
        
        self.status     = DMHelper.STS.DOWNLOADING
        
        self.onStart()
        return BaseDownloader.CODE_OK
Esempio n. 14
0
 def _getPageWget(self, url, params={}, post_data=None):
     cmd = DMHelper.getBaseWgetCmd(params.get('header', {})) +  (" '%s' " % url)
     if post_data != None:
         if params.get('raw_post_data', False):
             post_data_str = post_data
         else:
             post_data_str = urllib.urlencode(post_data)
         cmd += " --post-data '{0}' ".format(post_data_str)
     
     if params.get('use_cookie', False):
         cmd += " --keep-session-cookies "
         cookieFile = str(params.get('cookiefile', ''))
         if params.get('load_cookie', False) and fileExists(cookieFile):
             cmd += "  --load-cookies '%s' " %  cookieFile
         if params.get('save_cookie', False):
             cmd += "  --save-cookies '%s' " %  cookieFile
     cmd += ' -O - 2> /dev/null'
     
     printDBG('_getPageWget request: [%s]' % cmd)
     
     data = iptv_execute()( cmd )
     if not data['sts'] or 0 != data['code']: 
         return False, None
     else:
         return True, data['data']
Esempio n. 15
0
 def _doSearchMovieNapisy24(self):
     params = {"User-Agent": self.NAPISY24_USER_AGENT, "Referer": "http://napisy24.pl/"}
     query = "title={0}".format(urllib.quote(self.tmpData["title"]))
     url = "'http://napisy24.pl/libs/webapi.php?{0}'".format(query)
     cmd = DMHelper.getBaseWgetCmd(params) + url + " -O - 2> /dev/null "
     printDBG("_doSearchMovieNapisy24 cmd[%s]" % cmd)
     self.iptv_sys = iptv_system(cmd, self._doSearchMovieNapisy24Callback)
Esempio n. 16
0
    def start(self, url, filePath, params={}):
        '''
            Owervrite start from BaseDownloader
        '''
        self.url = url
        self.filePath = filePath
        self.downloaderParams = params
        self.fileExtension = '' # should be implemented in future
        if 'ustream.tv' in url:
            self.streamSelector = strwithmeta(url).meta.get('iptv_chank_url', '')
        else:
            self.streamSelector = strwithmeta(url).meta.get('iptv_bitrate', 0)

        self.outData = ''
        self.contentType = 'unknown'

        baseWgetCmd = DMHelper.getBaseWgetCmd(self.downloaderParams)

        cmd = DMHelper.GET_F4M_PATH() + (" '%s'" % baseWgetCmd) + (' "%s"' % self.url) + (' "%s"' % self.filePath) + (' %s' % self.streamSelector) + ' > /dev/null'

        printDBG("F4mDownloader::start cmd[%s]" % cmd)

        self.console = eConsoleAppContainer()
        self.console_appClosed_conn = eConnectCallback(self.console.appClosed, self._cmdFinished)
        self.console_stderrAvail_conn = eConnectCallback(self.console.stderrAvail, self._dataAvail)
        self.console.execute(E2PrioFix(cmd))

        self.status = DMHelper.STS.DOWNLOADING

        self.onStart()
        return BaseDownloader.CODE_OK
    def _startFragment(self, tryAgain=False):
        printDBG("_startFragment tryAgain[%r]" % tryAgain)
        self.outData = ''
        self.remoteFragmentSize = -1
        self.remoteFragmentType = 'unknown'
                            
        if 0 > self.localFileSize:
            self.m3u8_prevLocalFileSize = 0
        else:
            self.m3u8_prevLocalFileSize = self.localFileSize
        ##############################################################################
        # frist download nextFragment conntent
        ##############################################################################
        self.downloadType = self.DOWNLOAD_TYPE.SEGMENT
 
        if None != self.console:
            self.console_appClosed_conn = None
            self.console_stderrAvail_conn = None
        #self.console = eConsoleAppContainer()
        self.console_appClosed_conn = eConnectCallback(self.console.appClosed,  self._cmdFinished )
        self.console_stderrAvail_conn = eConnectCallback(self.console.stderrAvail, self._dataAvail )
        
        if tryAgain and self.tries >= self.MAX_RETRIES:
            if not self.liveStream:
                return DMHelper.STS.INTERRUPTED
            else:
                # even if fragment is lost this is not big problem, download next one, 
                # this is a live stream this can happen :)
                tryAgain = False
            
        currentFragment = None
        if False == tryAgain:
            self.tries = 0
            if (self.currentFragment + 1) < len(self.fragmentList):
                self.currentFragment += 1
                currentFragment = self.fragmentList[self.currentFragment]  
        else:
            self.tries += 1
            currentFragment = self.fragmentList[self.currentFragment]        
        
        if None != currentFragment:
            self.wgetStatus = self.WGET_STS.CONNECTING
            cmd = DMHelper.getBaseWgetCmd(self.downloaderParams) + (' --tries=1 --timeout=%d ' % self._getTimeout()) + '"' + currentFragment + '" -O - >> "' + self.filePath + '"'
            printDBG("Download cmd[%s]" % cmd)
            self.console.execute( cmd )
            
            #with open("/home/sulge/tmp/m3u8.txt", "a") as myfile:
            #    myfile.write(currentFragment+"\n")
                
            return DMHelper.STS.DOWNLOADING
        else:
            if self.liveStream:
                # we are in live so wait for new fragments
                printDBG("m3u8 downloader - wait for new fragments ----------------------------------------------------------------")
                self.downloadType = self.DOWNLOAD_TYPE.WAITTING
                self.console.execute( "sleep 2" )
                return DMHelper.STS.DOWNLOADING 
            else:
                return DMHelper.STS.DOWNLOADED
Esempio n. 18
0
 def doGetItemTypeOLD(self, callback, privateData):
     self.outerCallback = callback
     self.tmpData = {}
     self.itemTypeCache = {"type": "movie"}
     url = "'http://www.omdbapi.com/?i=tt{0}&plot=short&r=json'".format(privateData["id"])
     cmd = DMHelper.getBaseWgetCmd({}) + url + " -O - 2> /dev/null "
     printDBG("doGetItemType cmd[%s]" % cmd)
     self.iptv_sys = iptv_system(cmd, self._doGetItemTypeCallback)
Esempio n. 19
0
 def doGetItemTypeOLD(self, callback, privateData):
     self.outerCallback = callback
     self.tmpData = {}
     self.itemTypeCache = {'type':'movie'}        
     url     = "'http://www.omdbapi.com/?i=tt{0}&plot=short&r=json'".format(privateData['id'])
     cmd = DMHelper.getBaseWgetCmd({}) + url + ' -O - 2> /dev/null '
     printDBG('doGetItemType cmd[%s]' % cmd)
     self.iptv_sys = iptv_system(cmd, self._doGetItemTypeCallback)
 def doGetItemType(self, callback, privateData):
     self.outerCallback = callback
     self.tmpData = {'imdbid':privateData['id'], 'title':privateData['title']}
     self.itemTypeCache = {'type':'movie'}        
     url     = "'https://api.themoviedb.org/3/find/tt{0}?api_key={1}&external_source=imdb_id'".format(privateData['id'], base64.b64decode('NjMxMWY4MmQ1MjAxNDI2NWQ3NjVkMzk4MDJhYWZhYTc='))
     #printDBG(url)
     cmd = DMHelper.getBaseWgetCmd({}) + url + ' -O - 2> /dev/null '
     self.iptv_sys = iptv_system(cmd, self._doGetItemTypeCallback)
Esempio n. 21
0
 def doGetItemType(self, callback, privateData):
     self.outerCallback = callback
     self.tmpData = {}
     self.itemTypeCache = {"type": "movie"}
     url = "'https://api.themoviedb.org/3/find/tt{0}?api_key={1}&external_source=imdb_id'".format(
         privateData["id"], base64.b64decode("NjMxMWY4MmQ1MjAxNDI2NWQ3NjVkMzk4MDJhYWZhYTc=")
     )
     cmd = DMHelper.getBaseWgetCmd({}) + url + " -O - 2> /dev/null "
     self.iptv_sys = iptv_system(cmd, self._doGetItemTypeCallback)
Esempio n. 22
0
    def _getPage(self, callback, url, params={}, post_data=None):
        if 'User-Agent' not in params: params['User-Agent'] =OpenSubOrgProvider.USER_AGENT
        
        if None != post_data:
            post_data = " --post-data '{0}' ".format(post_data)
        else: post_data = ''
            
        url = " '{0}' ".format(url)
        cmd = DMHelper.getBaseWgetCmd(params) + post_data + url + ' -O - 2> /dev/null'

        self.iptv_sys = iptv_system(cmd, callback)
    def _getPage(self, callback, url, params={}, post_data=None):
        if 'User-Agent' not in params: params['User-Agent'] =OpenSubOrgProvider.USER_AGENT
        
        if None != post_data:
            post_data = " --post-data '{0}' ".format(post_data)
        else: post_data = ''
            
        url = " '{0}' ".format(url)
        cmd = DMHelper.getBaseWgetCmd(params) + post_data + url + ' -O - 2> /dev/null'

        self.iptv_sys = iptv_system(cmd, callback)
Esempio n. 24
0
 def _startM3U8(self, m3u8Url):
     self.m3u8Url = m3u8Url
     self.outData = ''
     ##############################################################################
     # frist download m3u8 conntent
     ##############################################################################
     self.downloadType = self.DOWNLOAD_TYPE.M3U8
     m3u8Url = self._addTimeStampToUrl( self.m3u8Url )
     cmd = DMHelper.getBaseWgetCmd(self.downloaderParams) + (' --tries=0 --timeout=%d ' % self._getTimeout()) + '"' + m3u8Url + '" -O - 2> /dev/null'
     printDBG("Download cmd[%s]" % cmd)
     self.console_appClosed_conn = eConnectCallback(self.console.appClosed,  self._cmdFinished )
     self.console_stdoutAvail_conn = eConnectCallback(self.console.stdoutAvail, self._dataAvail )
     self.console.execute( E2PrioFix( cmd ) )
Esempio n. 25
0
 def _doSearchSubtitleNapisy24(self, type='imdb'):
     self.tmpData['type'] = type
     params = {'User-Agent': self.NAPISY24_USER_AGENT, 'Referer':'http://napisy24.pl/'}
     
     if type == 'imdb':
         query = 'imdb=tt{0}'.format(self.tmpData['imdbid'])
     else:
         query = 'title={0}'.format(urllib.quote(self.tmpData['title']))
     
     url     = "'http://napisy24.pl/libs/webapi.php?{0}'".format(query)
     cmd = DMHelper.getBaseWgetCmd(params) + url + ' -O - 2> /dev/null '
     printDBG('_doSearchSubtitleNapisy24Callback cmd[%s]' % cmd)
     self.iptv_sys = iptv_system(cmd, self._doSearchSubtitleNapisy24Callback)
 def _doSearchSubtitleNapisy24(self, type='imdb'):
     self.tmpData['type'] = type
     params = {'User-Agent': self.NAPISY24_USER_AGENT, 'Referer':'http://napisy24.pl/'}
     
     if type == 'imdb':
         query = 'imdb=tt{0}'.format(self.tmpData['imdbid'])
     else:
         query = 'title={0}'.format(urllib.quote(self.tmpData['title']))
     
     url     = "'http://napisy24.pl/libs/webapi.php?{0}'".format(query)
     cmd = DMHelper.getBaseWgetCmd(params) + url + ' -O - 2> /dev/null '
     printDBG('_doSearchSubtitleNapisy24Callback cmd[%s]' % cmd)
     self.iptv_sys = iptv_system(cmd, self._doSearchSubtitleNapisy24Callback)
Esempio n. 27
0
    def _doSearchSubtitleNapisy24(self, type="imdb"):
        self.tmpData["type"] = type
        params = {"User-Agent": self.NAPISY24_USER_AGENT, "Referer": "http://napisy24.pl/"}

        if type == "imdb":
            query = "imdb=tt{0}".format(self.tmpData["imdbid"])
        else:
            query = "title={0}".format(urllib.quote(self.tmpData["title"]))

        url = "'http://napisy24.pl/libs/webapi.php?{0}'".format(query)
        cmd = DMHelper.getBaseWgetCmd(params) + url + " -O - 2> /dev/null "
        printDBG("_doSearchSubtitleNapisy24Callback cmd[%s]" % cmd)
        self.iptv_sys = iptv_system(cmd, self._doSearchSubtitleNapisy24Callback)
Esempio n. 28
0
 def _updateM3U8Finished(self, code=0):
     printDBG('m3u8 _updateM3U8Finished update code[%d]--- ' % (code))
     if self.liveStream and self.M3U8Updater:
         if 0 < len(self.M3U8ListData) and 0 == code:
             try:
                 m3u8Obj = m3u8.inits(self.M3U8ListData, self.m3u8Url)
                 if self.liveStream and not m3u8Obj.is_variant:
                     self.refreshDelay = int(m3u8Obj.target_duration)
                     if self.refreshDelay < 5:
                         self.refreshDelay = 5
                     if 0 < len(m3u8Obj.segments):
                         newFragments = [
                             self._segUri(seg.absolute_uri)
                             for seg in m3u8Obj.segments
                         ]
                         #self.mergeFragmentsList(newFragments)
                         self.mergeFragmentsListWithChecking(
                             newFragments,
                             m3u8Obj.media_sequence + len(m3u8Obj.segments))
                         printDBG(
                             'm3u8 _updateM3U8Finished list updated ---')
             except Exception:
                 printDBG(
                     "m3u8 _updateM3U8Finished exception url[%s] data[%s]" %
                     (self.m3u8Url, self.M3U8ListData))
         else:
             printDBG('m3u8 _updateM3U8Finished no data ---')
         # hardcode
         self.M3U8UpdaterRefreshDelay += 1
         if self.refreshDelay < self.M3U8UpdaterRefreshDelay or 0 != code:
             self.M3U8UpdaterRefreshDelay = 0
             self.M3U8ListData = ''
             m3u8Url = self._addTimeStampToUrl(self.m3u8Url)
             printDBG(
                 ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> [%s]"
                 % m3u8Url)
             cmd = DMHelper.getBaseWgetCmd(self.downloaderParams) + (
                 ' --tries=0 --timeout=%d ' %
                 self._getTimeout()) + '"' + m3u8Url + '" -O - 2> /dev/null'
             printDBG("m3u8 _updateM3U8Finished download cmd[%s]" % cmd)
             self.M3U8Updater.execute(E2PrioFix(cmd))
             return
         else:
             self.M3U8Updater.execute(E2PrioFix("sleep 1"))
             return
     printDBG(
         "|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||")
     printDBG(
         "||||||||||||| m3u8 _updateM3U8Finished FINISHED |||||||||||||")
     printDBG(
         "|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||")
Esempio n. 29
0
 def _startM3U8(self, wait=0):
     self.outData = ''
     ##############################################################################
     # frist download m3u8 conntent
     ##############################################################################
     self.downloadType = self.DOWNLOAD_TYPE.M3U8
     m3u8Url = self._addTimeStampToUrl( self.m3u8Url )
     cmd = DMHelper.getBaseWgetCmd(self.downloaderParams) + (' --tries=0 --timeout=%d ' % self._getTimeout()) + '"' + m3u8Url + '" -O '
     if wait > 0:
         cmd = (' sleep %s && ' % wait) + cmd
     printDBG("Download cmd[%s]" % cmd)
     self.console_appClosed_conn = eConnectCallback(self.console.appClosed,  self._cmdFinished )
     self.console_stdoutAvail_conn = eConnectCallback(self.console.stdoutAvail, self._dataAvail )
     self.console.execute( E2PrioFix( cmd ) )
Esempio n. 30
0
 def doGetEpisodes(self, callback, privateData, episodeData):
     self.outerCallback = callback
     self.tmpData = {'private_data':privateData, 'episode_data':episodeData}
     
     year = self.itemTypeCache.get('year', '')
     if year != '':
         year = '&year=%s' % year
     else:
         year = ''
     
     url     = "'http://imdbapi.poromenos.org/js/?name={0}{1}'".format(urllib.quote(self.itemTypeCache.get('title', '')), year)
     cmd = DMHelper.getBaseWgetCmd({}) + url + ' -O - 2> /dev/null '
     printDBG('doGetEpisodes cmd[%s]' % cmd)
     self.iptv_sys = iptv_system(cmd, self._doGetEpisodesCallback)
 def doGetEpisodesOld(self, callback, privateData, episodeData):
     self.outerCallback = callback
     self.tmpData = {'private_data':privateData, 'episode_data':episodeData}
     
     year = self.itemTypeCache.get('year', '')
     if year != '':
         year = '&year=%s' % year
     else:
         year = ''
     
     url     = "'http://imdbapi.poromenos.org/js/?name={0}{1}'".format(urllib.quote(self.itemTypeCache.get('title', '')), year)
     cmd = DMHelper.getBaseWgetCmd({}) + url + ' -O - 2> /dev/null '
     printDBG('doGetEpisodes cmd[%s]' % cmd)
     self.iptv_sys = iptv_system(cmd, self._doGetEpisodesCallback)
Esempio n. 32
0
    def getPageWithWget(self, url, params={}, post_data=None):
        from Plugins.Extensions.IPTVPlayer.iptvdm.iptvdh import DMHelper
        cmd = DMHelper.getBaseWgetCmd(params.get('header',
                                                 {})) + (" '%s' " % url)
        if post_data != None:
            if params.get('raw_post_data', False):
                post_data_str = post_data
            else:
                post_data_str = urllib.urlencode(post_data)
            cmd += " --post-data '{0}' ".format(post_data_str)

        if params.get('use_cookie', False):
            cmd += " --keep-session-cookies "
            cookieFile = str(params.get('cookiefile', ''))
            if params.get('load_cookie', False) and fileExists(cookieFile):
                cmd += "  --load-cookies '%s' " % cookieFile
            if params.get('save_cookie', False):
                cmd += "  --save-cookies '%s' " % cookieFile
        cmd += ' -O - 2> /dev/null'

        printDBG('_getPageWget request: [%s]' % cmd)
        from Plugins.Extensions.IPTVPlayer.components.asynccall import iptv_execute

        data = iptv_execute()(cmd)

        if params.get('use_cookie', False) and params.get(
                'save_cookie', False) and fileExists(cookieFile):
            # fix cookie

            try:
                f = open(cookieFile, "r")
                cookieStr = f.read()
                f.close()

                marker = '# HTTP cookie file.'
                if cookieStr.startswith(marker):
                    cookieStr = cookieStr.replace(marker,
                                                  '# HTTP Cookie File.')
                    f = open(cookieFile, "w")
                    f.write(cookieStr)
                    f.close()
            except Exception:
                printExc()

        if not data['sts'] or 0 != data['code']:
            return False, None
        else:
            return True, data['data']
Esempio n. 33
0
    def doGetEpisodes(self, callback, privateData, episodeData):
        self.outerCallback = callback
        self.tmpData = {"private_data": privateData, "episode_data": episodeData}

        year = self.itemTypeCache.get("year", "")
        if year != "":
            year = "&year=%s" % year
        else:
            year = ""

        url = "'http://imdbapi.poromenos.org/js/?name={0}{1}'".format(
            urllib.quote(self.itemTypeCache.get("title", "")), year
        )
        cmd = DMHelper.getBaseWgetCmd({}) + url + " -O - 2> /dev/null "
        printDBG("doGetEpisodes cmd[%s]" % cmd)
        self.iptv_sys = iptv_system(cmd, self._doGetEpisodesCallback)
 def _startM3U8(self, m3u8Url):
     self.m3u8Url = m3u8Url
     self.outData = ''
     ##############################################################################
     # frist download m3u8 conntent
     ##############################################################################
     self.downloadType = self.DOWNLOAD_TYPE.M3U8
     m3u8Url = self.m3u8Url
     if '?' in m3u8Url: m3u8Url += '&iptv_stamp='
     else: m3u8Url += '?iptv_stamp='
     m3u8Url += ('%s' % time())
     cmd = DMHelper.getBaseWgetCmd(self.downloaderParams) + (' --tries=0 --timeout=%d ' % self._getTimeout()) + '"' + m3u8Url + '" -O - 2> /dev/null'
     printDBG("Download cmd[%s]" % cmd)
     self.console_appClosed_conn = eConnectCallback(self.console.appClosed,  self._cmdFinished )
     self.console_stdoutAvail_conn = eConnectCallback(self.console.stdoutAvail, self._dataAvail )
     self.console.execute( cmd )
Esempio n. 35
0
    def start(self, url, filePath, params={}, info_from=None, retries=0):
        '''
            Owervrite start from BaseDownloader
        '''
        self.url = url
        self.filePath = filePath
        self.downloaderParams = params
        self.fileExtension = ''  # should be implemented in future

        self.outData = ''
        self.contentType = 'unknown'
        if None == info_from:
            info_from = WgetDownloader.INFO.FROM_FILE
        self.infoFrom = info_from

        if self.infoFrom == WgetDownloader.INFO.FROM_DOTS:
            info = "--progress=dot:default"
        else:
            info = ""

        # remove file if exists
        if fileExists(self.filePath):
            rm(self.filePath)

        self.downloadCmd = DMHelper.getBaseWgetCmd(self.downloaderParams) + (
            ' %s -t %d ' %
            (info, retries)) + '"' + self.url + '" -O "' + self.filePath + '"'
        printDBG("Download cmd[%s]" % self.downloadCmd)

        if self.downloaderParams.get('iptv_wget_continue', False):
            self.maxContinueRetry = 3

        self.console = eConsoleAppContainer()
        self.console_appClosed_conn = eConnectCallback(self.console.appClosed,
                                                       self._cmdFinished)
        self.console_stderrAvail_conn = eConnectCallback(
            self.console.stderrAvail, self._dataAvail)
        self.console.execute(E2PrioFix(self.downloadCmd))

        self.wgetStatus = self.WGET_STS.CONNECTING
        self.status = DMHelper.STS.DOWNLOADING

        self.onStart()
        return BaseDownloader.CODE_OK
 def doStartDownload(self):
     self.outData = ''
     self.contentType = 'unknown'
     filePath = self.multi['files'][self.currIdx]
     url      = self.multi['urls'][self.currIdx]
     
     info    = ""
     retries = 0
     
     cmd = DMHelper.getBaseWgetCmd(self.downloaderParams) + (' %s -t %d ' % (info, retries)) + '"' + url + '" -O "' + filePath + '" > /dev/null'
     printDBG("doStartDownload cmd[%s]" % cmd)
     
     self.console = eConsoleAppContainer()
     self.console_appClosed_conn = eConnectCallback(self.console.appClosed, self._cmdFinished)
     self.console_stderrAvail_conn = eConnectCallback(self.console.stderrAvail, self._dataAvail)
     self.console.execute( E2PrioFix( cmd ) )
     
     self.status = DMHelper.STS.DOWNLOADING
     
     self.onStart()
     return BaseDownloader.CODE_OK
 def _updateM3U8Finished(self, code=0):
     printDBG('m3u8 _updateM3U8Finished update code[%d]--- ' % (code))
     if self.liveStream and self.M3U8Updater:
         if 0 < len(self.M3U8ListData) and 0 == code:
             try:
                 m3u8Obj = m3u8.inits(self.M3U8ListData, self.m3u8Url)
                 if self.liveStream and not m3u8Obj.is_variant:
                     self.refreshDelay = int(m3u8Obj.target_duration)
                     if self.refreshDelay < 5:
                         self.refreshDelay = 5
                     if 0 < len(m3u8Obj.segments):
                         newFragments = [self._segUri(seg.absolute_uri) for seg in m3u8Obj.segments]
                         #self.mergeFragmentsList(newFragments)
                         self.mergeFragmentsListWithChecking(newFragments)
                         printDBG('m3u8 _updateM3U8Finished list updated ---')
             except:
                 printDBG("m3u8 _updateM3U8Finished exception url[%s] data[%s]" % (self.m3u8Url, self.M3U8ListData))
         else:
             printDBG('m3u8 _updateM3U8Finished no data ---')
         # hardcode
         self.M3U8UpdaterRefreshDelay += 1
         if self.refreshDelay < self.M3U8UpdaterRefreshDelay or 0 != code:
             self.M3U8UpdaterRefreshDelay = 0
             self.M3U8ListData = ''
             m3u8Url = self.m3u8Url
             if '?' in m3u8Url: m3u8Url += '&iptv_stamp='
             else: m3u8Url += '?iptv_stamp='
             m3u8Url += ('%s' % time())
             printDBG(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> [%s]" % m3u8Url)
             cmd = DMHelper.getBaseWgetCmd(self.downloaderParams) + (' --tries=0 --timeout=%d ' % self._getTimeout()) + '"' + m3u8Url + '" -O - 2> /dev/null'
             printDBG("m3u8 _updateM3U8Finished download cmd[%s]" % cmd)
             self.M3U8Updater.execute(cmd)
             return
         else:
             self.M3U8Updater.execute("sleep 1")
             return
     printDBG("|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||")
     printDBG("||||||||||||| m3u8 _updateM3U8Finished FINISHED |||||||||||||")
     printDBG("|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||")