mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	| @@ -2043,7 +2043,10 @@ from .varzesh3 import Varzesh3IE | ||||
| from .vbox7 import Vbox7IE | ||||
| from .veehd import VeeHDIE | ||||
| from .veo import VeoIE | ||||
| from .veoh import VeohIE | ||||
| from .veoh import ( | ||||
|     VeohIE, | ||||
|     VeohUserIE | ||||
| ) | ||||
| from .vesti import VestiIE | ||||
| from .vevo import ( | ||||
|     VevoIE, | ||||
|   | ||||
| @@ -1,9 +1,14 @@ | ||||
| import functools | ||||
| import json | ||||
| 
 | ||||
| from .common import InfoExtractor | ||||
| from ..utils import ( | ||||
|     ExtractorError, | ||||
|     OnDemandPagedList, | ||||
|     int_or_none, | ||||
|     parse_duration, | ||||
|     qualities, | ||||
|     try_get | ||||
|     try_get, | ||||
| ) | ||||
| 
 | ||||
| 
 | ||||
| @@ -123,3 +128,62 @@ class VeohIE(InfoExtractor): | ||||
|             'categories': categories, | ||||
|             'tags': tags.split(', ') if tags else None, | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
| class VeohUserIE(VeohIE): | ||||
|     _VALID_URL = r'https?://(?:www\.)?veoh\.com/users/(?P<id>[\w-]+)' | ||||
|     IE_NAME = 'veoh:user' | ||||
| 
 | ||||
|     _TESTS = [ | ||||
|         { | ||||
|             'url': 'https://www.veoh.com/users/valentinazoe', | ||||
|             'info_dict': { | ||||
|                 'id': 'valentinazoe', | ||||
|                 'title': 'valentinazoe (Uploads)' | ||||
|             }, | ||||
|             'playlist_mincount': 75 | ||||
|         }, | ||||
|         { | ||||
|             'url': 'https://www.veoh.com/users/PiensaLibre', | ||||
|             'info_dict': { | ||||
|                 'id': 'PiensaLibre', | ||||
|                 'title': 'PiensaLibre (Uploads)' | ||||
|             }, | ||||
|             'playlist_mincount': 2 | ||||
|         }] | ||||
| 
 | ||||
|     _PAGE_SIZE = 16 | ||||
| 
 | ||||
|     def _fetch_page(self, uploader, page): | ||||
|         response = self._download_json( | ||||
|             'https://www.veoh.com/users/published/videos', uploader, | ||||
|             note=f'Downloading videos page {page + 1}', | ||||
|             headers={ | ||||
|                 'x-csrf-token': self._TOKEN, | ||||
|                 'content-type': 'application/json;charset=UTF-8' | ||||
|             }, | ||||
|             data=json.dumps({ | ||||
|                 'username': uploader, | ||||
|                 'maxResults': self._PAGE_SIZE, | ||||
|                 'page': page + 1, | ||||
|                 'requestName': 'userPage' | ||||
|             }).encode('utf-8')) | ||||
|         if not response.get('success'): | ||||
|             raise ExtractorError(response['message']) | ||||
| 
 | ||||
|         for video in response['videos']: | ||||
|             yield self.url_result(f'https://www.veoh.com/watch/{video["permalinkId"]}', VeohIE, | ||||
|                                   video['permalinkId'], video.get('title')) | ||||
| 
 | ||||
|     def _real_initialize(self): | ||||
|         webpage = self._download_webpage( | ||||
|             'https://www.veoh.com', None, note='Downloading authorization token') | ||||
|         self._TOKEN = self._search_regex( | ||||
|             r'csrfToken:\s*(["\'])(?P<token>[0-9a-zA-Z]{40})\1', webpage, | ||||
|             'request token', group='token') | ||||
| 
 | ||||
|     def _real_extract(self, url): | ||||
|         uploader = self._match_id(url) | ||||
|         return self.playlist_result(OnDemandPagedList( | ||||
|             functools.partial(self._fetch_page, uploader), | ||||
|             self._PAGE_SIZE), uploader, f'{uploader} (Uploads)') | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Audrey
					Audrey