diff options
| author | Johannes Knoedtel <johannes@dev-baron.de> | 2014-12-28 20:04:21 +0100 | 
|---|---|---|
| committer | Johannes Knoedtel <johannes@dev-baron.de> | 2014-12-28 20:31:25 +0100 | 
| commit | ff7a07d5c4d260a8b27fa7bf523c405725f9cb20 (patch) | |
| tree | feaaceeb68c18609b50349abc6bb1664bfbed7fc | |
| parent | 5a1840305746b7242c8d8307e945b9f889603a8b (diff) | |
[archiveorg] most metadata fields are optional
Example: https://archive.org/details/Cops1922
| -rw-r--r-- | youtube_dl/extractor/archiveorg.py | 16 | 
1 files changed, 12 insertions, 4 deletions
| diff --git a/youtube_dl/extractor/archiveorg.py b/youtube_dl/extractor/archiveorg.py index 34ce8429b..ba94b5454 100644 --- a/youtube_dl/extractor/archiveorg.py +++ b/youtube_dl/extractor/archiveorg.py @@ -25,6 +25,12 @@ class ArchiveOrgIE(InfoExtractor):          }      } +    def get_optional_metadata(self, data, field): +        try: +            return data['metadata'][field][0] +        except KeyError: +            return None +      def _real_extract(self, url):          mobj = re.match(self._VALID_URL, url)          video_id = mobj.group('id') @@ -33,10 +39,12 @@ class ArchiveOrgIE(InfoExtractor):          json_data = self._download_webpage(json_url, video_id)          data = json.loads(json_data) -        title = data['metadata']['title'][0] -        description = data['metadata']['description'][0] -        uploader = data['metadata']['creator'][0] -        upload_date = unified_strdate(data['metadata']['date'][0]) +        title = self.get_optional_metadata(data, 'title') +        description = self.get_optional_metadata(data, 'description') +        uploader = self.get_optional_metadata(data, 'creator') +        upload_date = self.get_optional_metadata(data, 'date') +        if upload_date: +            upload_date = unified_strdate(upload_date)          formats = [              { | 
