Ejemplo n.º 1
0
def recode(url,
           duration=None,
           vfmt=2,
           outpath='./',
           npf=3,
           freq=10,
           tmin=5,
           tmax=20,
           proxy=None,
           log=None):
    assert duration is None or duration > 0
    name = '%s.%s.ts' % (_util.get_time_string(), hash(url))
    outfile = pjoin(outpath, name)
    log.info("|=> begin: %s", url)
    if duration:
        log.info("|=>duration: %d", duration)
    log.info("|=> output: %s", outfile)

    _util.assure_path(outpath)
    axel = WorkShop(tmin=tmin, tmax=tmax, log=log)
    m3u8 = M3u8Stream(axel=axel, proxy=proxy, log=log)
    fetcher = HttpFetcher()
    start_at = time.time()
    try:
        with open(outfile, 'wb') as fp:
            if url.find('m3u8') > 0 or __is_url_file(url):
                axel.serve()
                m3u8.recode(url=url,
                            duration=duration,
                            vfmt=vfmt,
                            fp=fp,
                            npf=npf,
                            freq=cfg.freq)
            else:
                fetcher.fetch(url=url, fp=fp)
        log.info("|=> end: total=%.2fs, out=%s",
                 time.time() - start_at, outfile)
    finally:
        if axel.isAlive():
            axel.setToStop()
            axel.join()
Ejemplo n.º 2
0
 def __init__(self,
              url,
              fp,
              data_range,
              parent,
              headers=None,
              proxy=None,
              callback=None,
              log=None):
     threadutil.WorkBase.__init__(self, parent=parent)
     self.url = url
     self.fp = fp
     self.data_range = data_range
     self.proxy = proxy
     self.headers = headers
     self.__callback = callback
     self.log = log
     self.__retry_count = 0
     self.__http_fetcher = HttpFetcher(log=log)
     if self.proxy:
         self.__http_fetcher.set_proxy(self.proxy)