mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	[skip travis] renaming
to avoid using same folder when using pip install for example
This commit is contained in:
		
							
								
								
									
										97
									
								
								youtube_dlc/extractor/dlive.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								youtube_dlc/extractor/dlive.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,97 @@ | ||||
| from __future__ import unicode_literals | ||||
|  | ||||
| import json | ||||
| import re | ||||
|  | ||||
| from .common import InfoExtractor | ||||
| from ..utils import int_or_none | ||||
|  | ||||
|  | ||||
| class DLiveVODIE(InfoExtractor): | ||||
|     IE_NAME = 'dlive:vod' | ||||
|     _VALID_URL = r'https?://(?:www\.)?dlive\.tv/p/(?P<uploader_id>.+?)\+(?P<id>[^/?#&]+)' | ||||
|     _TESTS = [{ | ||||
|         'url': 'https://dlive.tv/p/pdp+3mTzOl4WR', | ||||
|         'info_dict': { | ||||
|             'id': '3mTzOl4WR', | ||||
|             'ext': 'mp4', | ||||
|             'title': 'Minecraft with james charles epic', | ||||
|             'upload_date': '20190701', | ||||
|             'timestamp': 1562011015, | ||||
|             'uploader_id': 'pdp', | ||||
|         } | ||||
|     }, { | ||||
|         'url': 'https://dlive.tv/p/pdpreplay+D-RD-xSZg', | ||||
|         'only_matching': True, | ||||
|     }] | ||||
|  | ||||
|     def _real_extract(self, url): | ||||
|         uploader_id, vod_id = re.match(self._VALID_URL, url).groups() | ||||
|         broadcast = self._download_json( | ||||
|             'https://graphigo.prd.dlive.tv/', vod_id, | ||||
|             data=json.dumps({'query': '''query { | ||||
|   pastBroadcast(permlink:"%s+%s") { | ||||
|     content | ||||
|     createdAt | ||||
|     length | ||||
|     playbackUrl | ||||
|     title | ||||
|     thumbnailUrl | ||||
|     viewCount | ||||
|   } | ||||
| }''' % (uploader_id, vod_id)}).encode())['data']['pastBroadcast'] | ||||
|         title = broadcast['title'] | ||||
|         formats = self._extract_m3u8_formats( | ||||
|             broadcast['playbackUrl'], vod_id, 'mp4', 'm3u8_native') | ||||
|         self._sort_formats(formats) | ||||
|         return { | ||||
|             'id': vod_id, | ||||
|             'title': title, | ||||
|             'uploader_id': uploader_id, | ||||
|             'formats': formats, | ||||
|             'description': broadcast.get('content'), | ||||
|             'thumbnail': broadcast.get('thumbnailUrl'), | ||||
|             'timestamp': int_or_none(broadcast.get('createdAt'), 1000), | ||||
|             'view_count': int_or_none(broadcast.get('viewCount')), | ||||
|         } | ||||
|  | ||||
|  | ||||
| class DLiveStreamIE(InfoExtractor): | ||||
|     IE_NAME = 'dlive:stream' | ||||
|     _VALID_URL = r'https?://(?:www\.)?dlive\.tv/(?!p/)(?P<id>[\w.-]+)' | ||||
|  | ||||
|     def _real_extract(self, url): | ||||
|         display_name = self._match_id(url) | ||||
|         user = self._download_json( | ||||
|             'https://graphigo.prd.dlive.tv/', display_name, | ||||
|             data=json.dumps({'query': '''query { | ||||
|   userByDisplayName(displayname:"%s") { | ||||
|     livestream { | ||||
|       content | ||||
|       createdAt | ||||
|       title | ||||
|       thumbnailUrl | ||||
|       watchingCount | ||||
|     } | ||||
|     username | ||||
|   } | ||||
| }''' % display_name}).encode())['data']['userByDisplayName'] | ||||
|         livestream = user['livestream'] | ||||
|         title = livestream['title'] | ||||
|         username = user['username'] | ||||
|         formats = self._extract_m3u8_formats( | ||||
|             'https://live.prd.dlive.tv/hls/live/%s.m3u8' % username, | ||||
|             display_name, 'mp4') | ||||
|         self._sort_formats(formats) | ||||
|         return { | ||||
|             'id': display_name, | ||||
|             'title': self._live_title(title), | ||||
|             'uploader': display_name, | ||||
|             'uploader_id': username, | ||||
|             'formats': formats, | ||||
|             'description': livestream.get('content'), | ||||
|             'thumbnail': livestream.get('thumbnailUrl'), | ||||
|             'is_live': True, | ||||
|             'timestamp': int_or_none(livestream.get('createdAt'), 1000), | ||||
|             'view_count': int_or_none(livestream.get('watchingCount')), | ||||
|         } | ||||
		Reference in New Issue
	
	Block a user
	 Unknown
					Unknown