diff options
| -rw-r--r-- | devscripts/youtube_genalgo.py | 2 | ||||
| -rw-r--r-- | youtube_dl/__init__.py | 27 | ||||
| -rw-r--r-- | youtube_dl/extractor/videofyme.py | 7 | ||||
| -rw-r--r-- | youtube_dl/extractor/youtube.py | 23 | ||||
| -rw-r--r-- | youtube_dl/version.py | 2 | 
5 files changed, 33 insertions, 28 deletions
| diff --git a/devscripts/youtube_genalgo.py b/devscripts/youtube_genalgo.py index dca963e8f..504ca1b2c 100644 --- a/devscripts/youtube_genalgo.py +++ b/devscripts/youtube_genalgo.py @@ -34,7 +34,7 @@ tests = [       ".>/?;}[{=+_)(*&^%<#!MNBVCXZASPFGHJKLwOIUYTREWQ0987654321mnbvcxzasdfghjklpoiuytreq"),      # 82      ("qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKHGFDSAZXCVBNM!@#$%^&*(-+={[};?/>.<", -     "Q>/?;}[{=+-(*<^%$#@!MNBVCXZASDFGHKLPOIUY8REWT0q&7654321mnbvcxzasdfghjklpoiuytrew9"), +     "wertyuioplkjhgfdsaqxcvbnm1234567890QWERTYUIOPLKHGFDSAZXCVBNM!@#$%^&z(-+={[};?/>.<"),      # 81 - vflLC8JvQ 2013/07/25      ("qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKHGFDSAZXCVBNM!@#$%^&*(-+={[};?/>.",       "C>/?;}[{=+-(*&^%$#@!MNBVYXZASDFGHKLPOIU.TREWQ0q87659321mnbvcxzasdfghjkl4oiuytrewp"), diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py index 3f77dba69..f4890f1a6 100644 --- a/youtube_dl/__init__.py +++ b/youtube_dl/__init__.py @@ -120,6 +120,7 @@ def parseOpts(overrideArguments=None):      selection      = optparse.OptionGroup(parser, 'Video Selection')      authentication = optparse.OptionGroup(parser, 'Authentication Options')      video_format   = optparse.OptionGroup(parser, 'Video Format Options') +    subtitles      = optparse.OptionGroup(parser, 'Subtitle Options')      downloader     = optparse.OptionGroup(parser, 'Download Options')      postproc       = optparse.OptionGroup(parser, 'Post-processing Options')      filesystem     = optparse.OptionGroup(parser, 'Filesystem Options') @@ -186,25 +187,26 @@ def parseOpts(overrideArguments=None):              action='store', dest='format_limit', metavar='FORMAT', help='highest quality format to download')      video_format.add_option('-F', '--list-formats',              action='store_true', dest='listformats', help='list all available formats (currently youtube only)') -    video_format.add_option('--write-sub', '--write-srt', + +    subtitles.add_option('--write-sub', '--write-srt',              action='store_true', dest='writesubtitles',              help='write subtitle file (currently youtube only)', default=False) -    video_format.add_option('--write-auto-sub', '--write-automatic-sub', +    subtitles.add_option('--write-auto-sub', '--write-automatic-sub',              action='store_true', dest='writeautomaticsub',              help='write automatic subtitle file (currently youtube only)', default=False) -    video_format.add_option('--only-sub', +    subtitles.add_option('--only-sub',              action='store_true', dest='skip_download',              help='[deprecated] alias of --skip-download', default=False) -    video_format.add_option('--all-subs', +    subtitles.add_option('--all-subs',              action='store_true', dest='allsubtitles', -            help='downloads all the available subtitles of the video (currently youtube only)', default=False) -    video_format.add_option('--list-subs', +            help='downloads all the available subtitles of the video', default=False) +    subtitles.add_option('--list-subs',              action='store_true', dest='listsubtitles', -            help='lists all available subtitles for the video (currently youtube only)', default=False) -    video_format.add_option('--sub-format', +            help='lists all available subtitles for the video', default=False) +    subtitles.add_option('--sub-format',              action='store', dest='subtitlesformat', metavar='FORMAT', -            help='subtitle format [srt/sbv/vtt] (default=srt) (currently youtube only)', default='srt') -    video_format.add_option('--sub-lang', '--srt-lang', +            help='subtitle format (default=srt) ([sbv/vtt] youtube only)', default='srt') +    subtitles.add_option('--sub-lang', '--srt-lang',              action='store', dest='subtitleslang', metavar='LANG',              help='language of the subtitles to download (optional) use IETF language tags like \'en\'') @@ -329,6 +331,7 @@ def parseOpts(overrideArguments=None):      parser.add_option_group(filesystem)      parser.add_option_group(verbosity)      parser.add_option_group(video_format) +    parser.add_option_group(subtitles)      parser.add_option_group(authentication)      parser.add_option_group(postproc) @@ -344,7 +347,7 @@ def parseOpts(overrideArguments=None):              userConfFile = os.path.join(os.path.expanduser('~'), '.config', 'youtube-dl.conf')          systemConf = _readOptions('/etc/youtube-dl.conf')          userConf = _readOptions(userConfFile) -        commandLineConf = sys.argv[1:]  +        commandLineConf = sys.argv[1:]          argv = systemConf + userConf + commandLineConf          opts, args = parser.parse_args(argv)          if opts.verbose: @@ -378,7 +381,7 @@ def _real_main(argv=None):      # Set user agent      if opts.user_agent is not None:          std_headers['User-Agent'] = opts.user_agent -     +      # Set referer      if opts.referer is not None:          std_headers['Referer'] = opts.referer diff --git a/youtube_dl/extractor/videofyme.py b/youtube_dl/extractor/videofyme.py index 04106672b..94f64ffa5 100644 --- a/youtube_dl/extractor/videofyme.py +++ b/youtube_dl/extractor/videofyme.py @@ -14,7 +14,7 @@ class VideofyMeIE(InfoExtractor):      _TEST = {          u'url': u'http://www.videofy.me/thisisvideofyme/1100701',          u'file':  u'1100701.mp4', -        u'md5': u'2046dd5758541d630bfa93e741e2fd79', +        u'md5': u'c77d700bdc16ae2e9f3c26019bd96143',          u'info_dict': {              u'title': u'This is VideofyMe',              u'description': None, @@ -32,9 +32,8 @@ class VideofyMeIE(InfoExtractor):          config = xml.etree.ElementTree.fromstring(config_xml.encode('utf-8'))          video = config.find('video')          sources = video.find('sources') -        url_node = find_xpath_attr(sources, 'source', 'id', 'HQ on') -        if url_node is None: -            url_node = find_xpath_attr(sources, 'source', 'id', 'HQ off') +        url_node = next(node for node in [find_xpath_attr(sources, 'source', 'id', 'HQ %s' % key)  +            for key in ['on', 'av', 'off']] if node is not None)          video_url = url_node.find('url').text          return {'id': video_id, diff --git a/youtube_dl/extractor/youtube.py b/youtube_dl/extractor/youtube.py index 7d6d07b17..e402ef17f 100644 --- a/youtube_dl/extractor/youtube.py +++ b/youtube_dl/extractor/youtube.py @@ -155,19 +155,22 @@ class YoutubeIE(YoutubeBaseInfoExtractor):      # Listed in order of quality      _available_formats = ['38', '37', '46', '22', '45', '35', '44', '34', '18', '43', '6', '5', '17', '13',                            '95', '94', '93', '92', '132', '151', -                          '85', '84', '102', '83', '101', '82', '100',        # 3D -                          '138', '137', '136', '135', '134', '133', '160',    # Dash video mp4 -                          '141', '140', '139',                                # Dash auido mp4 -                          '248', '247', '246', '245', '244', '243', '242',    # Dash video webm -                          '172', '171',                                       # Dash audio webm +                          # 3D +                          '85', '84', '102', '83', '101', '82', '100', +                          # Dash video +                          '138', '137', '248', '136', '247', '135', '246', +                          '245', '244', '134', '243', '133', '242', '160', +                          # Dash audio +                          '141', '172', '140', '171', '139',                            ]      _available_formats_prefer_free = ['38', '46', '37', '45', '22', '44', '35', '43', '34', '18', '6', '5', '17', '13',                                        '95', '94', '93', '92', '132', '151',                                        '85', '102', '84', '101', '83', '100', '82', -                                      '248', '247', '246', '245', '244', '243', '242',    # Dash video webm -                                      '172', '171',                                       # Dash audio webm -                                      '138', '137', '136', '135', '134', '133', '160',    # Dash video mp4 -                                      '141', '140', '139',                                # Dash auido mp4 +                                      # Dash video +                                      '138', '248', '137', '247', '136', '246', '245', +                                      '244', '135', '243', '134', '242', '133', '160', +                                      # Dash audio +                                      '172', '141', '171', '140', '139',                                        ]      _video_extensions = {          '13': '3gp', @@ -428,7 +431,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):          elif len(s) == 83:              return s[81:64:-1] + s[82] + s[63:52:-1] + s[45] + s[51:45:-1] + s[1] + s[44:1:-1] + s[0]          elif len(s) == 82: -            return s[36] + s[79:67:-1] + s[81] + s[66:40:-1] + s[33] + s[39:36:-1] + s[40] + s[35] + s[0] + s[67] + s[32:0:-1] + s[34] +            return s[1:19] + s[0] + s[20:68] + s[19] + s[69:82]          elif len(s) == 81:              return s[56] + s[79:56:-1] + s[41] + s[55:41:-1] + s[80] + s[40:34:-1] + s[0] + s[33:29:-1] + s[34] + s[28:9:-1] + s[29] + s[8:0:-1] + s[9]          elif len(s) == 79: diff --git a/youtube_dl/version.py b/youtube_dl/version.py index 58e26bc49..3536e923f 100644 --- a/youtube_dl/version.py +++ b/youtube_dl/version.py @@ -1,2 +1,2 @@ -__version__ = '2013.08.21' +__version__ = '2013.08.22' | 
