[teamcoco] relax _VALID_URL regex and add a fallback for format extraction(fixes #16484)
This commit is contained in:
		
							parent
							
								
									acd620c930
								
							
						
					
					
						commit
						f2b1fa07ec
					
				
					 1 changed files with 20 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -16,7 +16,7 @@ from ..utils import (
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
class TeamcocoIE(InfoExtractor):
 | 
			
		||||
    _VALID_URL = r'https?://teamcoco\.com/video/(?P<id>([^/]+/)*[^/?#]+)'
 | 
			
		||||
    _VALID_URL = r'https?://teamcoco\.com/(?P<id>([^/]+/)*[^/?#]+)'
 | 
			
		||||
    _TESTS = [
 | 
			
		||||
        {
 | 
			
		||||
            'url': 'http://teamcoco.com/video/mary-kay-remote',
 | 
			
		||||
| 
						 | 
				
			
			@ -70,6 +70,15 @@ class TeamcocoIE(InfoExtractor):
 | 
			
		|||
        }, {
 | 
			
		||||
            'url': 'http://teamcoco.com/video/the-conan-audiencey-awards-for-04/25/18',
 | 
			
		||||
            'only_matching': True,
 | 
			
		||||
        }, {
 | 
			
		||||
            'url': 'http://teamcoco.com/italy/conan-jordan-schlansky-hit-the-streets-of-florence',
 | 
			
		||||
            'only_matching': True,
 | 
			
		||||
        }, {
 | 
			
		||||
            'url': 'http://teamcoco.com/haiti/conan-s-haitian-history-lesson',
 | 
			
		||||
            'only_matching': True,
 | 
			
		||||
        }, {
 | 
			
		||||
            'url': 'http://teamcoco.com/israel/conan-hits-the-streets-beaches-of-tel-aviv',
 | 
			
		||||
            'only_matching': True,
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -84,7 +93,7 @@ class TeamcocoIE(InfoExtractor):
 | 
			
		|||
        display_id = self._match_id(url)
 | 
			
		||||
 | 
			
		||||
        response = self._graphql_call('''{
 | 
			
		||||
  %s(slug: "video/%s") {
 | 
			
		||||
  %s(slug: "%s") {
 | 
			
		||||
    ... on RecordSlug {
 | 
			
		||||
      record {
 | 
			
		||||
        id
 | 
			
		||||
| 
						 | 
				
			
			@ -94,6 +103,9 @@ class TeamcocoIE(InfoExtractor):
 | 
			
		|||
        thumb {
 | 
			
		||||
          preview
 | 
			
		||||
        }
 | 
			
		||||
        file {
 | 
			
		||||
          url
 | 
			
		||||
        }
 | 
			
		||||
        tags {
 | 
			
		||||
          name
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -111,15 +123,15 @@ class TeamcocoIE(InfoExtractor):
 | 
			
		|||
        record = response['record']
 | 
			
		||||
        video_id = record['id']
 | 
			
		||||
 | 
			
		||||
        srcs = self._graphql_call('''{
 | 
			
		||||
        video_sources = self._graphql_call('''{
 | 
			
		||||
  %s(id: "%s") {
 | 
			
		||||
    src
 | 
			
		||||
  }
 | 
			
		||||
}''', 'RecordVideoSource', video_id)['src']
 | 
			
		||||
}''', 'RecordVideoSource', video_id) or {}
 | 
			
		||||
 | 
			
		||||
        formats = []
 | 
			
		||||
        get_quality = qualities(['low', 'sd', 'hd', 'uhd'])
 | 
			
		||||
        for format_id, src in srcs.items():
 | 
			
		||||
        for format_id, src in video_sources.get('src', {}).items():
 | 
			
		||||
            if not isinstance(src, dict):
 | 
			
		||||
                continue
 | 
			
		||||
            src_url = src.get('src')
 | 
			
		||||
| 
						 | 
				
			
			@ -146,6 +158,9 @@ class TeamcocoIE(InfoExtractor):
 | 
			
		|||
                    'format_id': format_id,
 | 
			
		||||
                    'quality': get_quality(format_id),
 | 
			
		||||
                })
 | 
			
		||||
        if not formats:
 | 
			
		||||
            formats = self._extract_m3u8_formats(
 | 
			
		||||
                record['file']['url'], video_id, 'mp4', fatal=False)
 | 
			
		||||
        self._sort_formats(formats)
 | 
			
		||||
 | 
			
		||||
        return {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue