diff options
| author | Philipp Hagemeister <phihag@phihag.de> | 2013-11-25 15:46:54 +0100 | 
|---|---|---|
| committer | Philipp Hagemeister <phihag@phihag.de> | 2013-11-25 15:46:54 +0100 | 
| commit | 5db07df634713fe73e15e98de62f70ffe3a47871 (patch) | |
| tree | f2f9755b017909bec079f8d335abba8f8d7ad531 | |
| parent | ea36cbac5e089d5e37a2f92ea58375a5883d0af2 (diff) | |
Fix --download-archive (Fixes #1826)
| -rw-r--r-- | youtube_dl/YoutubeDL.py | 27 | 
1 files changed, 17 insertions, 10 deletions
| diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index 30ba94666..a1ef3a94a 100644 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -836,20 +836,26 @@ class YoutubeDL(object):              except (IOError, OSError):                  self.report_warning(u'Unable to remove downloaded video file') -    def in_download_archive(self, info_dict): -        fn = self.params.get('download_archive') -        if fn is None: -            return False -        extractor = info_dict.get('extractor_id') +    def _make_archive_id(self, info_dict): +        # Future-proof against any change in case +        # and backwards compatibility with prior versions +        extractor = info_dict.get('extractor')          if extractor is None:              if 'id' in info_dict:                  extractor = info_dict.get('ie_key')  # key in a playlist          if extractor is None: +            return None  # Incomplete video information +        return extractor.lower() + u' ' + info_dict['id'] + +    def in_download_archive(self, info_dict): +        fn = self.params.get('download_archive') +        if fn is None: +            return False + +        vid_id = self._make_archive_id(info_dict) +        if vid_id is None:              return False  # Incomplete video information -        # Future-proof against any change in case -        # and backwards compatibility with prior versions -        extractor = extractor.lower() -        vid_id = extractor + u' ' + info_dict['id'] +          try:              with locked_file(fn, 'r', encoding='utf-8') as archive_file:                  for line in archive_file: @@ -864,7 +870,8 @@ class YoutubeDL(object):          fn = self.params.get('download_archive')          if fn is None:              return -        vid_id = info_dict['extractor'] + u' ' + info_dict['id'] +        vid_id = self._make_archive_id(info_dict) +        assert vid_id          with locked_file(fn, 'a', encoding='utf-8') as archive_file:              archive_file.write(vid_id + u'\n') | 
