diff options
| -rwxr-xr-x | youtube_dl/YoutubeDL.py | 41 | 
1 files changed, 23 insertions, 18 deletions
| diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index a2b45859c..dad44435f 100755 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -1597,6 +1597,28 @@ class YoutubeDL(object):          self.cookiejar.add_cookie_header(pr)          return pr.get_header('Cookie') +    def _fill_common_fields(self, info_dict, final=True): + +        for ts_key, date_key in ( +                ('timestamp', 'upload_date'), +                ('release_timestamp', 'release_date'), +        ): +            if info_dict.get(date_key) is None and info_dict.get(ts_key) is not None: +                # Working around out-of-range timestamp values (e.g. negative ones on Windows, +                # see http://bugs.python.org/issue1646728) +                try: +                    upload_date = datetime.datetime.utcfromtimestamp(info_dict[ts_key]) +                    info_dict[date_key] = compat_str(upload_date.strftime('%Y%m%d')) +                except (ValueError, OverflowError, OSError): +                    pass + +        # Auto generate title fields corresponding to the *_number fields when missing +        # in order to always have clean titles. This is very common for TV series. +        if final: +            for field in ('chapter', 'season', 'episode'): +                if info_dict.get('%s_number' % field) is not None and not info_dict.get(field): +                    info_dict[field] = '%s %d' % (field.capitalize(), info_dict['%s_number' % field]) +      def process_video_result(self, info_dict, download=True):          assert info_dict.get('_type', 'video') == 'video' @@ -1664,24 +1686,7 @@ class YoutubeDL(object):          if 'display_id' not in info_dict and 'id' in info_dict:              info_dict['display_id'] = info_dict['id'] -        for ts_key, date_key in ( -                ('timestamp', 'upload_date'), -                ('release_timestamp', 'release_date'), -        ): -            if info_dict.get(date_key) is None and info_dict.get(ts_key) is not None: -                # Working around out-of-range timestamp values (e.g. negative ones on Windows, -                # see http://bugs.python.org/issue1646728) -                try: -                    upload_date = datetime.datetime.utcfromtimestamp(info_dict[ts_key]) -                    info_dict[date_key] = compat_str(upload_date.strftime('%Y%m%d')) -                except (ValueError, OverflowError, OSError): -                    pass - -        # Auto generate title fields corresponding to the *_number fields when missing -        # in order to always have clean titles. This is very common for TV series. -        for field in ('chapter', 'season', 'episode'): -            if info_dict.get('%s_number' % field) is not None and not info_dict.get(field): -                info_dict[field] = '%s %d' % (field.capitalize(), info_dict['%s_number' % field]) +        self._fill_common_fields(info_dict)          for cc_kind in ('subtitles', 'automatic_captions'):              cc = info_dict.get(cc_kind) | 
