Skip to content

Commit

Permalink
[niconico:tag] Add support for searching tags (#2789)
Browse files Browse the repository at this point in the history
  • Loading branch information
Lesmiscore committed Feb 15, 2022
1 parent df635a0 commit 9a5b012
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 1 deletion.
1 change: 1 addition & 0 deletions yt_dlp/extractor/extractors.py
Original file line number Diff line number Diff line change
Expand Up @@ -1011,6 +1011,7 @@
NicovideoSearchDateIE,
NicovideoSearchIE,
NicovideoSearchURLIE,
NicovideoTagURLIE,
)
from .ninecninemedia import (
NineCNineMediaIE,
Expand Down
23 changes: 22 additions & 1 deletion yt_dlp/extractor/niconico.py
Original file line number Diff line number Diff line change
Expand Up @@ -663,6 +663,8 @@ def pagefunc(pagenum):


class NicovideoSearchBaseIE(InfoExtractor):
_SEARCH_TYPE = 'search'

def _entries(self, url, item_id, query=None, note='Downloading page %(page)s'):
query = query or {}
pages = [query['page']] if 'page' in query else itertools.count(1)
Expand All @@ -677,7 +679,7 @@ def _entries(self, url, item_id, query=None, note='Downloading page %(page)s'):

def _search_results(self, query):
return self._entries(
self._proto_relative_url(f'//www.nicovideo.jp/search/{query}'), query)
self._proto_relative_url(f'//www.nicovideo.jp/{self._SEARCH_TYPE}/{query}'), query)


class NicovideoSearchIE(NicovideoSearchBaseIE, SearchInfoExtractor):
Expand Down Expand Up @@ -757,6 +759,25 @@ def _get_entries_for_date(self, url, item_id, start_date, end_date=None, page_nu
yield from super()._entries(url, item_id, query=query, note=note)


class NicovideoTagURLIE(NicovideoSearchBaseIE):
IE_NAME = 'niconico:tag'
IE_DESC = 'NicoNico video tag URLs'
_SEARCH_TYPE = 'tag'
_VALID_URL = r'https?://(?:www\.)?nicovideo\.jp/tag/(?P<id>[^?#&]+)?'
_TESTS = [{
'url': 'https://www.nicovideo.jp/tag/ドキュメンタリー淫夢',
'info_dict': {
'id': 'ドキュメンタリー淫夢',
'title': 'ドキュメンタリー淫夢'
},
'playlist_mincount': 400,
}]

def _real_extract(self, url):
query = self._match_id(url)
return self.playlist_result(self._entries(url, query), query, query)


class NiconicoUserIE(InfoExtractor):
_VALID_URL = r'https?://(?:www\.)?nicovideo\.jp/user/(?P<id>\d+)/?(?:$|[#?])'
_TEST = {
Expand Down

0 comments on commit 9a5b012

Please sign in to comment.