mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	[niconico] Add user extractor
Co-authored by: animelover1984
This commit is contained in:
		| @@ -822,7 +822,7 @@ from .nick import ( | |||||||
|     NickNightIE, |     NickNightIE, | ||||||
|     NickRuIE, |     NickRuIE, | ||||||
| ) | ) | ||||||
| from .niconico import NiconicoIE, NiconicoPlaylistIE | from .niconico import NiconicoIE, NiconicoPlaylistIE, NiconicoUserIE | ||||||
| from .ninecninemedia import NineCNineMediaIE | from .ninecninemedia import NineCNineMediaIE | ||||||
| from .ninegag import NineGagIE | from .ninegag import NineGagIE | ||||||
| from .ninenow import NineNowIE | from .ninenow import NineNowIE | ||||||
|   | |||||||
| @@ -600,7 +600,7 @@ class NiconicoIE(InfoExtractor): | |||||||
|  |  | ||||||
|  |  | ||||||
| class NiconicoPlaylistIE(InfoExtractor): | class NiconicoPlaylistIE(InfoExtractor): | ||||||
|     _VALID_URL = r'https?://(?:www\.)?nicovideo\.jp/(?:user/\d+/)?mylist/(?P<id>\d+)' |     _VALID_URL = r'https?://(?:www\.)?nicovideo\.jp/(?:user/\d+/|my/)?mylist/(?P<id>\d+)' | ||||||
|  |  | ||||||
|     _TESTS = [{ |     _TESTS = [{ | ||||||
|         'url': 'http://www.nicovideo.jp/mylist/27411728', |         'url': 'http://www.nicovideo.jp/mylist/27411728', | ||||||
| @@ -658,3 +658,40 @@ class NiconicoPlaylistIE(InfoExtractor): | |||||||
|             'uploader_id': uploader_id, |             'uploader_id': uploader_id, | ||||||
|             'entries': OnDemandPagedList(pagefunc, 25), |             'entries': OnDemandPagedList(pagefunc, 25), | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class NiconicoUserIE(InfoExtractor): | ||||||
|  |     _VALID_URL = r'https?://(?:www\.)?nicovideo\.jp/user/(?P<id>\d+)/?(?:$|[#?])' | ||||||
|  |     _TEST = { | ||||||
|  |         'url': 'https://www.nicovideo.jp/user/419948', | ||||||
|  |         'info_dict': { | ||||||
|  |             'id': '419948', | ||||||
|  |         }, | ||||||
|  |         'playlist_mincount': 101, | ||||||
|  |     } | ||||||
|  |     _API_URL = "https://nvapi.nicovideo.jp/v1/users/%s/videos?sortKey=registeredAt&sortOrder=desc&pageSize=%s&page=%s" | ||||||
|  |     _api_headers = { | ||||||
|  |         'X-Frontend-ID': '6', | ||||||
|  |         'X-Frontend-Version': '0', | ||||||
|  |         'X-Niconico-Language': 'en-us' | ||||||
|  |     } | ||||||
|  |     _PAGE_SIZE = 100 | ||||||
|  |  | ||||||
|  |     def _entries(self, list_id, ): | ||||||
|  |         total_count = 1 | ||||||
|  |         count = page_num = 0 | ||||||
|  |         while count < total_count: | ||||||
|  |             json_parsed = self._download_json( | ||||||
|  |                 self._API_URL % (list_id, self._PAGE_SIZE, page_num + 1), list_id, | ||||||
|  |                 headers=self._api_headers, | ||||||
|  |                 note='Downloading JSON metadata%s' % (' page %d' % page_num if page_num else '')) | ||||||
|  |             if not page_num: | ||||||
|  |                 total_count = int_or_none(json_parsed['data'].get('totalCount')) | ||||||
|  |             for entry in json_parsed["data"]["items"]: | ||||||
|  |                 count += 1 | ||||||
|  |                 yield self.url_result('https://www.nicovideo.jp/watch/%s' % entry['id']) | ||||||
|  |             page_num += 1 | ||||||
|  |  | ||||||
|  |     def _real_extract(self, url): | ||||||
|  |         list_id = self._match_id(url) | ||||||
|  |         return self.playlist_result(self._entries(list_id), list_id, ie=NiconicoIE.ie_key()) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 pukkandan
					pukkandan