projects
/
youtube-dl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[youtube] Enforce using chunked HTTP downloading for DASH formats
[youtube-dl]
/
youtube_dl
/
extractor
/
udemy.py
diff --git
a/youtube_dl/extractor/udemy.py
b/youtube_dl/extractor/udemy.py
index 3b02f43e3b22064d88989390f9cdfce0c777ecaf..195f5ce78d308126a1077cda11a4c00b437343fe 100644
(file)
--- a/
youtube_dl/extractor/udemy.py
+++ b/
youtube_dl/extractor/udemy.py
@@
-62,11
+62,11
@@
class UdemyIE(InfoExtractor):
def _extract_course_info(self, webpage, video_id):
course = self._parse_json(
unescapeHTML(self._search_regex(
def _extract_course_info(self, webpage, video_id):
course = self._parse_json(
unescapeHTML(self._search_regex(
- r'ng-init=["\'].*\bcourse=({.+?});', webpage, 'course', default='{}')),
+ r'ng-init=["\'].*\bcourse=({.+?})[;"\']',
+ webpage, 'course', default='{}')),
video_id, fatal=False) or {}
course_id = course.get('id') or self._search_regex(
video_id, fatal=False) or {}
course_id = course.get('id') or self._search_regex(
- (r'"id"\s*:\s*(\d+)', r'data-course-id=["\'](\d+)'),
- webpage, 'course id')
+ r'data-course-id=["\'](\d+)', webpage, 'course id')
return course_id, course.get('title')
def _enroll_course(self, base_url, webpage, course_id):
return course_id, course.get('title')
def _enroll_course(self, base_url, webpage, course_id):
@@
-74,7
+74,7
@@
class UdemyIE(InfoExtractor):
return compat_urlparse.urljoin(base_url, url) if not url.startswith('http') else url
checkout_url = unescapeHTML(self._search_regex(
return compat_urlparse.urljoin(base_url, url) if not url.startswith('http') else url
checkout_url = unescapeHTML(self._search_regex(
- r'href=(["\'])(?P<url>(?:https?://(?:www\.)?udemy\.com)?/
payment
/checkout/.+?)\1',
+ r'href=(["\'])(?P<url>(?:https?://(?:www\.)?udemy\.com)?/
(?:payment|cart)
/checkout/.+?)\1',
webpage, 'checkout url', group='url', default=None))
if checkout_url:
raise ExtractorError(
webpage, 'checkout url', group='url', default=None))
if checkout_url:
raise ExtractorError(
@@
-164,7
+164,7
@@
class UdemyIE(InfoExtractor):
})
response = self._download_webpage(
})
response = self._download_webpage(
- self._LOGIN_URL, None, 'Logging in
as %s' % username
,
+ self._LOGIN_URL, None, 'Logging in
'
,
data=urlencode_postdata(login_form),
headers={
'Referer': self._ORIGIN_URL,
data=urlencode_postdata(login_form),
headers={
'Referer': self._ORIGIN_URL,
@@
-257,6
+257,11
@@
class UdemyIE(InfoExtractor):
video_url = source.get('file') or source.get('src')
if not video_url or not isinstance(video_url, compat_str):
continue
video_url = source.get('file') or source.get('src')
if not video_url or not isinstance(video_url, compat_str):
continue
+ if source.get('type') == 'application/x-mpegURL' or determine_ext(video_url) == 'm3u8':
+ formats.extend(self._extract_m3u8_formats(
+ video_url, video_id, 'mp4', entry_protocol='m3u8_native',
+ m3u8_id='hls', fatal=False))
+ continue
format_id = source.get('label')
f = {
'url': video_url,
format_id = source.get('label')
f = {
'url': video_url,