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)
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 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
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']
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)
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
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 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)
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 _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 _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 ) )
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)
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( "|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||")
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 ) )
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)
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']
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 )
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("|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||")