|
@ -12,13 +12,13 @@ from ..utils import ( |
|
|
|
|
|
|
|
|
class CCCIE(InfoExtractor): |
|
|
class CCCIE(InfoExtractor): |
|
|
IE_NAME = 'media.ccc.de' |
|
|
IE_NAME = 'media.ccc.de' |
|
|
_VALID_URL = r'https?://(?:www\.)?media\.ccc\.de/[^?#]+/[^?#/]*?_(?P<id>[0-9]{8,})._[^?#/]*\.html' |
|
|
|
|
|
|
|
|
_VALID_URL = r'https?://(?:www\.)?media\.ccc\.de/v/(?P<id>[^/?#&]+)' |
|
|
|
|
|
|
|
|
_TEST = { |
|
|
|
|
|
'url': 'http://media.ccc.de/browse/congress/2013/30C3_-_5443_-_en_-_saal_g_-_201312281830_-_introduction_to_processor_design_-_byterazor.html#video', |
|
|
|
|
|
|
|
|
_TESTS = [{ |
|
|
|
|
|
'url': 'https://media.ccc.de/v/30C3_-_5443_-_en_-_saal_g_-_201312281830_-_introduction_to_processor_design_-_byterazor#video', |
|
|
'md5': '3a1eda8f3a29515d27f5adb967d7e740', |
|
|
'md5': '3a1eda8f3a29515d27f5adb967d7e740', |
|
|
'info_dict': { |
|
|
'info_dict': { |
|
|
'id': '20131228183', |
|
|
|
|
|
|
|
|
'id': '30C3_-_5443_-_en_-_saal_g_-_201312281830_-_introduction_to_processor_design_-_byterazor', |
|
|
'ext': 'mp4', |
|
|
'ext': 'mp4', |
|
|
'title': 'Introduction to Processor Design', |
|
|
'title': 'Introduction to Processor Design', |
|
|
'description': 'md5:5ddbf8c734800267f2cee4eab187bc1b', |
|
|
'description': 'md5:5ddbf8c734800267f2cee4eab187bc1b', |
|
@ -26,7 +26,10 @@ class CCCIE(InfoExtractor): |
|
|
'view_count': int, |
|
|
'view_count': int, |
|
|
'upload_date': '20131229', |
|
|
'upload_date': '20131229', |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
}, { |
|
|
|
|
|
'url': 'https://media.ccc.de/v/32c3-7368-shopshifting#download', |
|
|
|
|
|
'only_matching': True, |
|
|
|
|
|
}] |
|
|
|
|
|
|
|
|
def _real_extract(self, url): |
|
|
def _real_extract(self, url): |
|
|
video_id = self._match_id(url) |
|
|
video_id = self._match_id(url) |
|
|