diff --git a/src/you_get/extractors/bilibili.py b/src/you_get/extractors/bilibili.py
index 48c91925..caaa91d6 100644
--- a/src/you_get/extractors/bilibili.py
+++ b/src/you_get/extractors/bilibili.py
@@ -177,6 +177,11 @@ class Bilibili(VideoExtractor):
self.url = 'https://www.bilibili.com/%s' % match1(self.url, r'/s/(.+)')
html_content = get_content(self.url, headers=self.bilibili_headers())
+ # redirect: festival
+ elif re.match(r'https?://(www\.)?bilibili\.com/festival/(.+)', self.url):
+ self.url = 'https://www.bilibili.com/video/%s' % match1(self.url, r'bvid=([^&]+)')
+ html_content = get_content(self.url, headers=self.bilibili_headers())
+
# sort it out
if re.match(r'https?://(www\.)?bilibili\.com/audio/au(\d+)', self.url):
sort = 'audio'
@@ -203,30 +208,43 @@ class Bilibili(VideoExtractor):
playinfo_text = match1(html_content, r'__playinfo__=(.*?)