1
0
mirror of https://github.com/l1ving/youtube-dl synced 2024-12-31 02:05:34 +08:00

[teamcoco] fix extraction and add suport for subdomains(closes #17099)(closes #20339)

This commit is contained in:
Remita Amine 2019-04-05 08:26:04 +01:00
parent 2bbde1d09a
commit 69e6efac16

View File

@ -16,7 +16,7 @@ from ..utils import (
class TeamcocoIE(TurnerBaseIE): class TeamcocoIE(TurnerBaseIE):
_VALID_URL = r'https?://teamcoco\.com/(?P<id>([^/]+/)*[^/?#]+)' _VALID_URL = r'https?://(?:\w+\.)?teamcoco\.com/(?P<id>([^/]+/)*[^/?#]+)'
_TESTS = [ _TESTS = [
{ {
'url': 'http://teamcoco.com/video/mary-kay-remote', 'url': 'http://teamcoco.com/video/mary-kay-remote',
@ -79,15 +79,20 @@ class TeamcocoIE(TurnerBaseIE):
}, { }, {
'url': 'http://teamcoco.com/israel/conan-hits-the-streets-beaches-of-tel-aviv', 'url': 'http://teamcoco.com/israel/conan-hits-the-streets-beaches-of-tel-aviv',
'only_matching': True, 'only_matching': True,
}, {
'url': 'https://conan25.teamcoco.com/video/ice-cube-kevin-hart-conan-share-lyft',
'only_matching': True,
} }
] ]
def _graphql_call(self, query_template, object_type, object_id): def _graphql_call(self, query_template, object_type, object_id):
find_object = 'find' + object_type find_object = 'find' + object_type
return self._download_json( return self._download_json(
'http://teamcoco.com/graphql/', object_id, data=json.dumps({ 'https://teamcoco.com/graphql', object_id, data=json.dumps({
'query': query_template % (find_object, object_id) 'query': query_template % (find_object, object_id)
}))['data'][find_object] }).encode(), headers={
'Content-Type': 'application/json',
})['data'][find_object]
def _real_extract(self, url): def _real_extract(self, url):
display_id = self._match_id(url) display_id = self._match_id(url)
@ -145,7 +150,12 @@ class TeamcocoIE(TurnerBaseIE):
'accessTokenType': 'jws', 'accessTokenType': 'jws',
})) }))
else: else:
video_sources = self._graphql_call('''{ d = self._download_json(
'https://teamcoco.com/_truman/d/' + video_id,
video_id, fatal=False) or {}
video_sources = d.get('meta') or {}
if not video_sources:
video_sources = self._graphql_call('''{
%s(id: "%s") { %s(id: "%s") {
src src
} }