diff options
Diffstat (limited to 'youtube_dl/utils.py')
| -rw-r--r-- | youtube_dl/utils.py | 31 | 
1 files changed, 31 insertions, 0 deletions
| diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index 3e81c308b..1d9785341 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -572,6 +572,11 @@ class ExtractorError(Exception):          return u''.join(traceback.format_tb(self.traceback)) +class RegexNotFoundError(ExtractorError): +    """Error when a regex didn't match""" +    pass + +  class DownloadError(Exception):      """Download Error exception. @@ -945,3 +950,29 @@ class locked_file(object):  def shell_quote(args):      return ' '.join(map(pipes.quote, args)) + + +def takewhile_inclusive(pred, seq): +    """ Like itertools.takewhile, but include the latest evaluated element +        (the first element so that Not pred(e)) """ +    for e in seq: +        yield e +        if not pred(e): +            return + + +def smuggle_url(url, data): +    """ Pass additional data in a URL for internal use. """ + +    sdata = compat_urllib_parse.urlencode( +        {u'__youtubedl_smuggle': json.dumps(data)}) +    return url + u'#' + sdata + + +def unsmuggle_url(smug_url): +    if not '#__youtubedl_smuggle' in smug_url: +        return smug_url, None +    url, _, sdata = smug_url.rpartition(u'#') +    jsond = compat_parse_qs(sdata)[u'__youtubedl_smuggle'][0] +    data = json.loads(jsond) +    return url, data | 
