mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	| @@ -1340,7 +1340,10 @@ from .trovo import ( | |||||||
| from .trunews import TruNewsIE | from .trunews import TruNewsIE | ||||||
| from .trutv import TruTVIE | from .trutv import TruTVIE | ||||||
| from .tube8 import Tube8IE | from .tube8 import Tube8IE | ||||||
| from .tubitv import TubiTvIE | from .tubitv import ( | ||||||
|  |     TubiTvIE, | ||||||
|  |     TubiTvShowIE, | ||||||
|  | ) | ||||||
| from .tumblr import TumblrIE | from .tumblr import TumblrIE | ||||||
| from .tunein import ( | from .tunein import ( | ||||||
|     TuneInClipIE, |     TuneInClipIE, | ||||||
|   | |||||||
| @@ -7,13 +7,19 @@ from .common import InfoExtractor | |||||||
| from ..utils import ( | from ..utils import ( | ||||||
|     ExtractorError, |     ExtractorError, | ||||||
|     int_or_none, |     int_or_none, | ||||||
|  |     js_to_json, | ||||||
|     sanitized_Request, |     sanitized_Request, | ||||||
|     urlencode_postdata, |     urlencode_postdata, | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
| class TubiTvIE(InfoExtractor): | class TubiTvIE(InfoExtractor): | ||||||
|     _VALID_URL = r'https?://(?:www\.)?tubitv\.com/(?:video|movies|tv-shows)/(?P<id>[0-9]+)' |     _VALID_URL = r'''(?x) | ||||||
|  |                     (?: | ||||||
|  |                         tubitv:| | ||||||
|  |                         https?://(?:www\.)?tubitv\.com/(?:video|movies|tv-shows)/ | ||||||
|  |                     ) | ||||||
|  |                     (?P<id>[0-9]+)''' | ||||||
|     _LOGIN_URL = 'http://tubitv.com/login' |     _LOGIN_URL = 'http://tubitv.com/login' | ||||||
|     _NETRC_MACHINE = 'tubitv' |     _NETRC_MACHINE = 'tubitv' | ||||||
|     _GEO_COUNTRIES = ['US'] |     _GEO_COUNTRIES = ['US'] | ||||||
| @@ -108,3 +114,28 @@ class TubiTvIE(InfoExtractor): | |||||||
|             'uploader_id': video_data.get('publisher_id'), |             'uploader_id': video_data.get('publisher_id'), | ||||||
|             'release_year': int_or_none(video_data.get('year')), |             'release_year': int_or_none(video_data.get('year')), | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class TubiTvShowIE(InfoExtractor): | ||||||
|  |     _VALID_URL = r'https?://(?:www\.)?tubitv\.com/series/[0-9]+/(?P<show_name>[^/?#]+)' | ||||||
|  |     _TESTS = [{ | ||||||
|  |         'url': 'https://tubitv.com/series/3936/the-joy-of-painting-with-bob-ross?start=true', | ||||||
|  |         'playlist_mincount': 390, | ||||||
|  |         'info_dict': { | ||||||
|  |             'id': 'the-joy-of-painting-with-bob-ross', | ||||||
|  |         } | ||||||
|  |     }] | ||||||
|  |  | ||||||
|  |     def _entries(self, show_url, show_name): | ||||||
|  |         show_webpage = self._download_webpage(show_url, show_name) | ||||||
|  |         show_json = self._parse_json(self._search_regex( | ||||||
|  |             r"window\.__data\s*=\s*({.+?});\s*</script>", | ||||||
|  |             show_webpage, 'data',), show_name, transform_source=js_to_json)['video'] | ||||||
|  |         for episode_id in show_json['fullContentById'].keys(): | ||||||
|  |             yield self.url_result( | ||||||
|  |                 'tubitv:%s' % episode_id, | ||||||
|  |                 ie=TubiTvIE.ie_key(), video_id=episode_id) | ||||||
|  |  | ||||||
|  |     def _real_extract(self, url): | ||||||
|  |         show_name = re.match(self._VALID_URL, url).group('show_name') | ||||||
|  |         return self.playlist_result(self._entries(url, show_name), playlist_id=show_name) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Ashish
					Ashish