mirror of
				https://github.com/ytdl-org/youtube-dl.git
				synced 2025-10-29 09:26:20 -07:00 
			
		
		
		
	[bigo] add support for bigo.tv (#30635)
* [bigo] add support for bigo.tv * [bigo] prepend "Bigo says" * title fallback * add error for invalid json data
This commit is contained in:
		
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							3472227074
						
					
				
				
					commit
					782bfd26db
				
			
							
								
								
									
										59
									
								
								youtube_dl/extractor/bigo.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								youtube_dl/extractor/bigo.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,59 @@ | |||||||
|  | # coding: utf-8 | ||||||
|  | from __future__ import unicode_literals | ||||||
|  |  | ||||||
|  | from .common import InfoExtractor | ||||||
|  | from ..utils import ExtractorError, urlencode_postdata | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class BigoIE(InfoExtractor): | ||||||
|  |     _VALID_URL = r'https?://(?:www\.)?bigo\.tv/(?:[a-z]{2,}/)?(?P<id>[^/]+)' | ||||||
|  |  | ||||||
|  |     _TESTS = [{ | ||||||
|  |         'url': 'https://www.bigo.tv/ja/221338632', | ||||||
|  |         'info_dict': { | ||||||
|  |             'id': '6576287577575737440', | ||||||
|  |             'title': '土よ〜💁♂️ 休憩室/REST room', | ||||||
|  |             'thumbnail': r're:https?://.+', | ||||||
|  |             'uploader': '✨Shin💫', | ||||||
|  |             'uploader_id': '221338632', | ||||||
|  |             'is_live': True, | ||||||
|  |         }, | ||||||
|  |         'skip': 'livestream', | ||||||
|  |     }, { | ||||||
|  |         'url': 'https://www.bigo.tv/th/Tarlerm1304', | ||||||
|  |         'only_matching': True, | ||||||
|  |     }, { | ||||||
|  |         'url': 'https://bigo.tv/115976881', | ||||||
|  |         'only_matching': True, | ||||||
|  |     }] | ||||||
|  |  | ||||||
|  |     def _real_extract(self, url): | ||||||
|  |         user_id = self._match_id(url) | ||||||
|  |  | ||||||
|  |         info_raw = self._download_json( | ||||||
|  |             'https://bigo.tv/studio/getInternalStudioInfo', | ||||||
|  |             user_id, data=urlencode_postdata({'siteId': user_id})) | ||||||
|  |  | ||||||
|  |         if not isinstance(info_raw, dict): | ||||||
|  |             raise ExtractorError('Received invalid JSON data') | ||||||
|  |         if info_raw.get('code'): | ||||||
|  |             raise ExtractorError( | ||||||
|  |                 'Bigo says: %s (code %s)' % (info_raw.get('msg'), info_raw.get('code')), expected=True) | ||||||
|  |         info = info_raw.get('data') or {} | ||||||
|  |  | ||||||
|  |         if not info.get('alive'): | ||||||
|  |             raise ExtractorError('This user is offline.', expected=True) | ||||||
|  |  | ||||||
|  |         return { | ||||||
|  |             'id': info.get('roomId') or user_id, | ||||||
|  |             'title': info.get('roomTopic') or info.get('nick_name') or user_id, | ||||||
|  |             'formats': [{ | ||||||
|  |                 'url': info.get('hls_src'), | ||||||
|  |                 'ext': 'mp4', | ||||||
|  |                 'protocol': 'm3u8', | ||||||
|  |             }], | ||||||
|  |             'thumbnail': info.get('snapshot'), | ||||||
|  |             'uploader': info.get('nick_name'), | ||||||
|  |             'uploader_id': user_id, | ||||||
|  |             'is_live': True, | ||||||
|  |         } | ||||||
| @@ -115,6 +115,7 @@ from .bfmtv import ( | |||||||
| ) | ) | ||||||
| from .bibeltv import BibelTVIE | from .bibeltv import BibelTVIE | ||||||
| from .bigflix import BigflixIE | from .bigflix import BigflixIE | ||||||
|  | from .bigo import BigoIE | ||||||
| from .bild import BildIE | from .bild import BildIE | ||||||
| from .bilibili import ( | from .bilibili import ( | ||||||
|     BiliBiliIE, |     BiliBiliIE, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user