mirror of
https://github.com/ytdl-org/youtube-dl.git
synced 2024-12-19 11:34:04 +00:00
[archiveorg] Add test, simplify and modernize
This commit is contained in:
parent
0fa629d05b
commit
e8e28989eb
@ -1,50 +1,48 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
import json
|
|
||||||
import re
|
|
||||||
|
|
||||||
from .common import InfoExtractor
|
from .common import InfoExtractor
|
||||||
from ..utils import (
|
from ..utils import unified_strdate
|
||||||
unified_strdate,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class ArchiveOrgIE(InfoExtractor):
|
class ArchiveOrgIE(InfoExtractor):
|
||||||
IE_NAME = 'archive.org'
|
IE_NAME = 'archive.org'
|
||||||
IE_DESC = 'archive.org videos'
|
IE_DESC = 'archive.org videos'
|
||||||
_VALID_URL = r'(?:https?://)?(?:www\.)?archive\.org/details/(?P<id>[^?/]+)(?:[?].*)?$'
|
_VALID_URL = r'https?://(?:www\.)?archive\.org/details/(?P<id>[^?/]+)(?:[?].*)?$'
|
||||||
_TEST = {
|
_TESTS = [{
|
||||||
"url": "http://archive.org/details/XD300-23_68HighlightsAResearchCntAugHumanIntellect",
|
'url': 'http://archive.org/details/XD300-23_68HighlightsAResearchCntAugHumanIntellect',
|
||||||
'file': 'XD300-23_68HighlightsAResearchCntAugHumanIntellect.ogv',
|
|
||||||
'md5': '8af1d4cf447933ed3c7f4871162602db',
|
'md5': '8af1d4cf447933ed3c7f4871162602db',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
"title": "1968 Demo - FJCC Conference Presentation Reel #1",
|
'id': 'XD300-23_68HighlightsAResearchCntAugHumanIntellect',
|
||||||
"description": "Reel 1 of 3: Also known as the \"Mother of All Demos\", Doug Engelbart's presentation at the Fall Joint Computer Conference in San Francisco, December 9, 1968 titled \"A Research Center for Augmenting Human Intellect.\" For this presentation, Doug and his team astonished the audience by not only relating their research, but demonstrating it live. This was the debut of the mouse, interactive computing, hypermedia, computer supported software engineering, video teleconferencing, etc. See also <a href=\"http://dougengelbart.org/firsts/dougs-1968-demo.html\" rel=\"nofollow\">Doug's 1968 Demo page</a> for more background, highlights, links, and the detailed paper published in this conference proceedings. Filmed on 3 reels: Reel 1 | <a href=\"http://www.archive.org/details/XD300-24_68HighlightsAResearchCntAugHumanIntellect\" rel=\"nofollow\">Reel 2</a> | <a href=\"http://www.archive.org/details/XD300-25_68HighlightsAResearchCntAugHumanIntellect\" rel=\"nofollow\">Reel 3</a>",
|
'ext': 'ogv',
|
||||||
"upload_date": "19681210",
|
'title': '1968 Demo - FJCC Conference Presentation Reel #1',
|
||||||
"uploader": "SRI International"
|
'description': 'md5:1780b464abaca9991d8968c877bb53ed',
|
||||||
|
'upload_date': '19681210',
|
||||||
|
'uploader': 'SRI International'
|
||||||
}
|
}
|
||||||
|
}, {
|
||||||
|
'url': 'https://archive.org/details/Cops1922',
|
||||||
|
'md5': '18f2a19e6d89af8425671da1cf3d4e04',
|
||||||
|
'info_dict': {
|
||||||
|
'id': 'Cops1922',
|
||||||
|
'ext': 'ogv',
|
||||||
|
'title': 'Buster Keaton\'s "Cops" (1922)',
|
||||||
|
'description': 'md5:70f72ee70882f713d4578725461ffcc3',
|
||||||
}
|
}
|
||||||
|
}]
|
||||||
def get_optional_metadata(self, data, field):
|
|
||||||
try:
|
|
||||||
return data['metadata'][field][0]
|
|
||||||
except KeyError:
|
|
||||||
return None
|
|
||||||
|
|
||||||
def _real_extract(self, url):
|
def _real_extract(self, url):
|
||||||
mobj = re.match(self._VALID_URL, url)
|
video_id = self._match_id(url)
|
||||||
video_id = mobj.group('id')
|
|
||||||
|
|
||||||
json_url = url + ('?' if '?' in url else '&') + 'output=json'
|
json_url = url + ('?' if '?' in url else '&') + 'output=json'
|
||||||
json_data = self._download_webpage(json_url, video_id)
|
data = self._download_json(json_url, video_id)
|
||||||
data = json.loads(json_data)
|
|
||||||
|
|
||||||
title = self.get_optional_metadata(data, 'title')
|
def get_optional(data_dict, field):
|
||||||
description = self.get_optional_metadata(data, 'description')
|
return data_dict['metadata'].get(field, [None])[0]
|
||||||
uploader = self.get_optional_metadata(data, 'creator')
|
|
||||||
upload_date = self.get_optional_metadata(data, 'date')
|
title = get_optional(data, 'title')
|
||||||
if upload_date:
|
description = get_optional(data, 'description')
|
||||||
upload_date = unified_strdate(upload_date)
|
uploader = get_optional(data, 'creator')
|
||||||
|
upload_date = unified_strdate(get_optional(data, 'date'))
|
||||||
|
|
||||||
formats = [
|
formats = [
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user