Merge pull request #79 from ytdl-org/master
[pull] master from ytdl-org:master
This commit is contained in:
commit
314979e04f
@ -18,43 +18,10 @@ from ..utils import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class PlatziIE(InfoExtractor):
|
class PlatziBaseIE(InfoExtractor):
|
||||||
_VALID_URL = r'''(?x)
|
|
||||||
https?://
|
|
||||||
(?:
|
|
||||||
platzi\.com/clases| # es version
|
|
||||||
courses\.platzi\.com/classes # en version
|
|
||||||
)/[^/]+/(?P<id>\d+)-[^/?\#&]+
|
|
||||||
'''
|
|
||||||
_LOGIN_URL = 'https://platzi.com/login/'
|
_LOGIN_URL = 'https://platzi.com/login/'
|
||||||
_NETRC_MACHINE = 'platzi'
|
_NETRC_MACHINE = 'platzi'
|
||||||
|
|
||||||
_TESTS = [{
|
|
||||||
'url': 'https://platzi.com/clases/1311-next-js/12074-creando-nuestra-primera-pagina/',
|
|
||||||
'md5': '8f56448241005b561c10f11a595b37e3',
|
|
||||||
'info_dict': {
|
|
||||||
'id': '12074',
|
|
||||||
'ext': 'mp4',
|
|
||||||
'title': 'Creando nuestra primera página',
|
|
||||||
'description': 'md5:4c866e45034fc76412fbf6e60ae008bc',
|
|
||||||
'duration': 420,
|
|
||||||
},
|
|
||||||
'skip': 'Requires platzi account credentials',
|
|
||||||
}, {
|
|
||||||
'url': 'https://courses.platzi.com/classes/1367-communication-codestream/13430-background/',
|
|
||||||
'info_dict': {
|
|
||||||
'id': '13430',
|
|
||||||
'ext': 'mp4',
|
|
||||||
'title': 'Background',
|
|
||||||
'description': 'md5:49c83c09404b15e6e71defaf87f6b305',
|
|
||||||
'duration': 360,
|
|
||||||
},
|
|
||||||
'skip': 'Requires platzi account credentials',
|
|
||||||
'params': {
|
|
||||||
'skip_download': True,
|
|
||||||
},
|
|
||||||
}]
|
|
||||||
|
|
||||||
def _real_initialize(self):
|
def _real_initialize(self):
|
||||||
self._login()
|
self._login()
|
||||||
|
|
||||||
@ -97,6 +64,42 @@ class PlatziIE(InfoExtractor):
|
|||||||
'Unable to login: %s' % error, expected=True)
|
'Unable to login: %s' % error, expected=True)
|
||||||
raise ExtractorError('Unable to log in')
|
raise ExtractorError('Unable to log in')
|
||||||
|
|
||||||
|
|
||||||
|
class PlatziIE(PlatziBaseIE):
|
||||||
|
_VALID_URL = r'''(?x)
|
||||||
|
https?://
|
||||||
|
(?:
|
||||||
|
platzi\.com/clases| # es version
|
||||||
|
courses\.platzi\.com/classes # en version
|
||||||
|
)/[^/]+/(?P<id>\d+)-[^/?\#&]+
|
||||||
|
'''
|
||||||
|
|
||||||
|
_TESTS = [{
|
||||||
|
'url': 'https://platzi.com/clases/1311-next-js/12074-creando-nuestra-primera-pagina/',
|
||||||
|
'md5': '8f56448241005b561c10f11a595b37e3',
|
||||||
|
'info_dict': {
|
||||||
|
'id': '12074',
|
||||||
|
'ext': 'mp4',
|
||||||
|
'title': 'Creando nuestra primera página',
|
||||||
|
'description': 'md5:4c866e45034fc76412fbf6e60ae008bc',
|
||||||
|
'duration': 420,
|
||||||
|
},
|
||||||
|
'skip': 'Requires platzi account credentials',
|
||||||
|
}, {
|
||||||
|
'url': 'https://courses.platzi.com/classes/1367-communication-codestream/13430-background/',
|
||||||
|
'info_dict': {
|
||||||
|
'id': '13430',
|
||||||
|
'ext': 'mp4',
|
||||||
|
'title': 'Background',
|
||||||
|
'description': 'md5:49c83c09404b15e6e71defaf87f6b305',
|
||||||
|
'duration': 360,
|
||||||
|
},
|
||||||
|
'skip': 'Requires platzi account credentials',
|
||||||
|
'params': {
|
||||||
|
'skip_download': True,
|
||||||
|
},
|
||||||
|
}]
|
||||||
|
|
||||||
def _real_extract(self, url):
|
def _real_extract(self, url):
|
||||||
lecture_id = self._match_id(url)
|
lecture_id = self._match_id(url)
|
||||||
|
|
||||||
@ -104,7 +107,11 @@ class PlatziIE(InfoExtractor):
|
|||||||
|
|
||||||
data = self._parse_json(
|
data = self._parse_json(
|
||||||
self._search_regex(
|
self._search_regex(
|
||||||
r'client_data\s*=\s*({.+?})\s*;', webpage, 'client data'),
|
# client_data may contain "};" so that we have to try more
|
||||||
|
# strict regex first
|
||||||
|
(r'client_data\s*=\s*({.+?})\s*;\s*\n',
|
||||||
|
r'client_data\s*=\s*({.+?})\s*;'),
|
||||||
|
webpage, 'client data'),
|
||||||
lecture_id)
|
lecture_id)
|
||||||
|
|
||||||
material = data['initialState']['material']
|
material = data['initialState']['material']
|
||||||
@ -146,7 +153,7 @@ class PlatziIE(InfoExtractor):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class PlatziCourseIE(InfoExtractor):
|
class PlatziCourseIE(PlatziBaseIE):
|
||||||
_VALID_URL = r'''(?x)
|
_VALID_URL = r'''(?x)
|
||||||
https?://
|
https?://
|
||||||
(?:
|
(?:
|
||||||
|
@ -391,6 +391,12 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
|||||||
(?:www\.)?tube\.poal\.co/|
|
(?:www\.)?tube\.poal\.co/|
|
||||||
(?:www\.)?vid\.wxzm\.sx/|
|
(?:www\.)?vid\.wxzm\.sx/|
|
||||||
(?:www\.)?yt\.elukerio\.org/|
|
(?:www\.)?yt\.elukerio\.org/|
|
||||||
|
(?:www\.)?kgg2m7yk5aybusll\.onion/|
|
||||||
|
(?:www\.)?qklhadlycap4cnod\.onion/|
|
||||||
|
(?:www\.)?axqzx4s6s54s32yentfqojs3x5i7faxza6xo3ehd4bzzsg2ii4fv2iid\.onion/|
|
||||||
|
(?:www\.)?c7hqkpkpemu6e7emz5b4vyz7idjgdvgaaa3dyimmeojqbgpea3xqjoid\.onion/|
|
||||||
|
(?:www\.)?fz253lmuao3strwbfbmx46yu7acac2jz27iwtorgmbqlkurlclmancad\.onion/|
|
||||||
|
(?:www\.)?invidious\.l4qlywnpwqsluw65ts7md3khrivpirse744un3x7mlskqauz5pyuzgqd\.onion/|
|
||||||
youtube\.googleapis\.com/) # the various hostnames, with wildcard subdomains
|
youtube\.googleapis\.com/) # the various hostnames, with wildcard subdomains
|
||||||
(?:.*?\#/)? # handle anchor (#/) redirect urls
|
(?:.*?\#/)? # handle anchor (#/) redirect urls
|
||||||
(?: # the various things that can precede the ID:
|
(?: # the various things that can precede the ID:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user