from __future__ import unicode_literals
import re
-import string
from .common import InfoExtractor
-from ..utils import (
- ExtractorError,
-)
+
translation_table = {
'a': 'h', 'd': 'e', 'e': 'v', 'f': 'o', 'g': 'f', 'i': 'd', 'l': 'n',
class InfoQIE(InfoExtractor):
- _VALID_URL = r'^(?:https?://)?(?:www\.)?infoq\.com/[^/]+/[^/]+$'
+ _VALID_URL = r'https?://(?:www\.)?infoq\.com/[^/]+/(?P<id>[^/]+)$'
_TEST = {
"name": "InfoQ",
"url": "http://www.infoq.com/presentations/A-Few-of-My-Favorite-Python-Things",
def _real_extract(self, url):
mobj = re.match(self._VALID_URL, url)
+ video_id = mobj.group('id')
- webpage = self._download_webpage(url, video_id=url)
- self.report_extraction(url)
+ webpage = self._download_webpage(url, video_id)
# Extract video URL
encoded_id = self._search_regex(r"jsclassref ?= ?'([^']*)'", webpage, 'encoded id')
'id': video_id,
'url': video_url,
'title': video_title,
- 'ext': extension, # Extension is always(?) mp4, but seems to be flv
+ 'ext': extension, # Extension is always(?) mp4, but seems to be flv
'description': video_description,
}
import re
from .common import InfoExtractor
-from ..utils import (
- ExtractorError,
-)
class LiveLeakIE(InfoExtractor):
import re
from .common import InfoExtractor
-from ..utils import determine_ext
class NewgroundsIE(InfoExtractor):
- _VALID_URL = r'(?:https?://)?(?:www\.)?newgrounds\.com/audio/listen/(?P<id>\d+)'
+ _VALID_URL = r'https?://(?:www\.)?newgrounds\.com/audio/listen/(?P<id>[0-9]+)'
_TEST = {
'url': 'http://www.newgrounds.com/audio/listen/549479',
- 'file': '549479.mp3',
'md5': 'fe6033d297591288fa1c1f780386f07a',
'info_dict': {
- "title": "B7 - BusMode",
- "uploader": "Burn7",
+ 'id': '549479',
+ 'ext': 'mp3',
+ 'title': 'B7 - BusMode',
+ 'uploader': 'Burn7',
}
}
from .common import InfoExtractor
from ..utils import (
- compat_urllib_parse_urlparse,
-
ExtractorError,
)
_VALID_URL = r'https?://(?:www\.)?rbmaradio\.com/shows/(?P<videoID>[^/]+)$'
_TEST = {
'url': 'http://www.rbmaradio.com/shows/ford-lopatin-live-at-primavera-sound-2011',
- 'file': 'ford-lopatin-live-at-primavera-sound-2011.mp3',
'md5': '6bc6f9bcb18994b4c983bc3bf4384d95',
'info_dict': {
+ 'id': 'ford-lopatin-live-at-primavera-sound-2011',
+ 'ext': 'mp3',
"uploader_id": "ford-lopatin",
"location": "Spain",
"description": "Joel Ford and Daniel ’Oneohtrix Point Never’ Lopatin fly their midified pop extravaganza to Spain. Live at Primavera Sound 2011.",
raise ExtractorError('Invalid JSON: ' + str(e))
video_url = data['akamai_url'] + '&cbr=256'
- url_parts = compat_urllib_parse_urlparse(video_url)
return {
'id': video_id,
-import re
+from __future__ import unicode_literals
from .mtv import MTVServicesInfoExtractor
class SouthParkStudiosIE(MTVServicesInfoExtractor):
- IE_NAME = u'southparkstudios.com'
- _VALID_URL = r'(https?://)?(www\.)?(?P<url>southparkstudios\.com/(clips|full-episodes)/(?P<id>.+?)(\?|#|$))'
+ IE_NAME = 'southparkstudios.com'
+ _VALID_URL = r'https?://(www\.)?(?P<url>southparkstudios\.com/(clips|full-episodes)/(?P<id>.+?)(\?|#|$))'
_FEED_URL = 'http://www.southparkstudios.com/feeds/video-player/mrss'
_TESTS = [{
- u'url': u'http://www.southparkstudios.com/clips/104437/bat-daded#tab=featured',
- u'file': u'a7bff6c2-ed00-11e0-aca6-0026b9414f30.mp4',
- u'info_dict': {
- u'title': u'Bat Daded',
- u'description': u'Randy disqualifies South Park by getting into a fight with Bat Dad.',
+ 'url': 'http://www.southparkstudios.com/clips/104437/bat-daded#tab=featured',
+ 'info_dict': {
+ 'id': 'a7bff6c2-ed00-11e0-aca6-0026b9414f30',
+ 'ext': 'mp4',
+ 'title': 'Bat Daded',
+ 'description': 'Randy disqualifies South Park by getting into a fight with Bat Dad.',
},
}]
class SouthparkDeIE(SouthParkStudiosIE):
- IE_NAME = u'southpark.de'
- _VALID_URL = r'(https?://)?(www\.)?(?P<url>southpark\.de/(clips|alle-episoden)/(?P<id>.+?)(\?|#|$))'
+ IE_NAME = 'southpark.de'
+ _VALID_URL = r'https?://(www\.)?(?P<url>southpark\.de/(clips|alle-episoden)/(?P<id>.+?)(\?|#|$))'
_FEED_URL = 'http://www.southpark.de/feeds/video-player/mrss/'
_TESTS = [{
- u'url': u'http://www.southpark.de/clips/uygssh/the-government-wont-respect-my-privacy#tab=featured',
- u'file': u'85487c96-b3b9-4e39-9127-ad88583d9bf2.mp4',
- u'info_dict': {
- u'title': u'The Government Won\'t Respect My Privacy',
- u'description': u'Cartman explains the benefits of "Shitter" to Stan, Kyle and Craig.',
+ 'url': 'http://www.southpark.de/clips/uygssh/the-government-wont-respect-my-privacy#tab=featured',
+ 'info_dict': {
+ 'id': '85487c96-b3b9-4e39-9127-ad88583d9bf2',
+ 'ext': 'mp4',
+ 'title': 'The Government Won\'t Respect My Privacy',
+ 'description': 'Cartman explains the benefits of "Shitter" to Stan, Kyle and Craig.',
},
}]
from __future__ import unicode_literals
import re
-import json
import xml.etree.ElementTree
import datetime
from .common import InfoExtractor
from ..utils import (
compat_urllib_parse,
- unescapeHTML,
ExtractorError,
)