projects
/
youtube-dl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[youtube] Fix extraction.
[youtube-dl]
/
youtube_dl
/
extractor
/
udemy.py
diff --git
a/youtube_dl/extractor/udemy.py
b/youtube_dl/extractor/udemy.py
index 89a7f6adefb55652f09e25ced2f163341309c717..2a4faecefbc271f1f88dfe38d2fe284e0bbd9158 100644
(file)
--- a/
youtube_dl/extractor/udemy.py
+++ b/
youtube_dl/extractor/udemy.py
@@
-29,7
+29,7
@@
class UdemyIE(InfoExtractor):
IE_NAME = 'udemy'
_VALID_URL = r'''(?x)
https?://
IE_NAME = 'udemy'
_VALID_URL = r'''(?x)
https?://
-
www\.
udemy\.com/
+
(?:[^/]+\.)?
udemy\.com/
(?:
[^#]+\#/lecture/|
lecture/view/?\?lectureId=|
(?:
[^#]+\#/lecture/|
lecture/view/?\?lectureId=|
@@
-64,6
+64,9
@@
class UdemyIE(InfoExtractor):
# only outputs rendition
'url': 'https://www.udemy.com/how-you-can-help-your-local-community-5-amazing-examples/learn/v4/t/lecture/3225750?start=0',
'only_matching': True,
# only outputs rendition
'url': 'https://www.udemy.com/how-you-can-help-your-local-community-5-amazing-examples/learn/v4/t/lecture/3225750?start=0',
'only_matching': True,
+ }, {
+ 'url': 'https://wipro.udemy.com/java-tutorial/#/lecture/172757',
+ 'only_matching': True,
}]
def _extract_course_info(self, webpage, video_id):
}]
def _extract_course_info(self, webpage, video_id):
@@
-73,7
+76,10
@@
class UdemyIE(InfoExtractor):
webpage, 'course', default='{}')),
video_id, fatal=False) or {}
course_id = course.get('id') or self._search_regex(
webpage, 'course', default='{}')),
video_id, fatal=False) or {}
course_id = course.get('id') or self._search_regex(
- r'data-course-id=["\'](\d+)', webpage, 'course id')
+ [
+ r'data-course-id=["\'](\d+)',
+ r'"courseId"\s*:\s*(\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):
@@
-372,7
+378,7
@@
class UdemyIE(InfoExtractor):
}, res))
# react rendition since 2017.04.15 (see
}, res))
# react rendition since 2017.04.15 (see
- # https://github.com/
rg3
/youtube-dl/issues/12744)
+ # https://github.com/
ytdl-org
/youtube-dl/issues/12744)
data = self._parse_json(
self._search_regex(
r'videojs-setup-data=(["\'])(?P<data>{.+?})\1', view_html,
data = self._parse_json(
self._search_regex(
r'videojs-setup-data=(["\'])(?P<data>{.+?})\1', view_html,
@@
-415,8
+421,14
@@
class UdemyIE(InfoExtractor):
class UdemyCourseIE(UdemyIE):
IE_NAME = 'udemy:course'
class UdemyCourseIE(UdemyIE):
IE_NAME = 'udemy:course'
- _VALID_URL = r'https?://(?:www\.)?udemy\.com/(?P<id>[^/?#&]+)'
- _TESTS = []
+ _VALID_URL = r'https?://(?:[^/]+\.)?udemy\.com/(?P<id>[^/?#&]+)'
+ _TESTS = [{
+ 'url': 'https://www.udemy.com/java-tutorial/',
+ 'only_matching': True,
+ }, {
+ 'url': 'https://wipro.udemy.com/java-tutorial/',
+ 'only_matching': True,
+ }]
@classmethod
def suitable(cls, url):
@classmethod
def suitable(cls, url):