|
|
@ -24,7 +24,18 @@ from ..utils import (
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class BiliBiliIE(InfoExtractor):
|
|
|
|
class BiliBiliIE(InfoExtractor):
|
|
|
|
_VALID_URL = r'https?://(?:www\.|bangumi\.|)bilibili\.(?:tv|com)/(?:video/av|anime/(?P<anime_id>\d+)/play#)(?P<id>\d+)'
|
|
|
|
_VALID_URL = r'''(?x)
|
|
|
|
|
|
|
|
https?://
|
|
|
|
|
|
|
|
(?:(?:www|bangumi)\.)?
|
|
|
|
|
|
|
|
bilibili\.(?:tv|com)/
|
|
|
|
|
|
|
|
(?:
|
|
|
|
|
|
|
|
(?:
|
|
|
|
|
|
|
|
video/[aA][vV]|
|
|
|
|
|
|
|
|
anime/(?P<anime_id>\d+)/play\#
|
|
|
|
|
|
|
|
)(?P<id_bv>\d+)|
|
|
|
|
|
|
|
|
video/[bB][vV](?P<id>[^/?#&]+)
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
'''
|
|
|
|
|
|
|
|
|
|
|
|
_TESTS = [{
|
|
|
|
_TESTS = [{
|
|
|
|
'url': 'http://www.bilibili.tv/video/av1074402/',
|
|
|
|
'url': 'http://www.bilibili.tv/video/av1074402/',
|
|
|
@ -92,6 +103,10 @@ class BiliBiliIE(InfoExtractor):
|
|
|
|
'skip_download': True, # Test metadata only
|
|
|
|
'skip_download': True, # Test metadata only
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}]
|
|
|
|
}]
|
|
|
|
|
|
|
|
}, {
|
|
|
|
|
|
|
|
# new BV video id format
|
|
|
|
|
|
|
|
'url': 'https://www.bilibili.com/video/BV1JE411F741',
|
|
|
|
|
|
|
|
'only_matching': True,
|
|
|
|
}]
|
|
|
|
}]
|
|
|
|
|
|
|
|
|
|
|
|
_APP_KEY = 'iVGUTjsxvpLeuDCf'
|
|
|
|
_APP_KEY = 'iVGUTjsxvpLeuDCf'
|
|
|
@ -109,7 +124,7 @@ class BiliBiliIE(InfoExtractor):
|
|
|
|
url, smuggled_data = unsmuggle_url(url, {})
|
|
|
|
url, smuggled_data = unsmuggle_url(url, {})
|
|
|
|
|
|
|
|
|
|
|
|
mobj = re.match(self._VALID_URL, url)
|
|
|
|
mobj = re.match(self._VALID_URL, url)
|
|
|
|
video_id = mobj.group('id')
|
|
|
|
video_id = mobj.group('id') or mobj.group('id_bv')
|
|
|
|
anime_id = mobj.group('anime_id')
|
|
|
|
anime_id = mobj.group('anime_id')
|
|
|
|
webpage = self._download_webpage(url, video_id)
|
|
|
|
webpage = self._download_webpage(url, video_id)
|
|
|
|
|
|
|
|
|
|
|
|