From b43bd864851f2862e26caa85461c5d825d49d463 Mon Sep 17 00:00:00 2001
From: N/Ame <173015200+grqz@users.noreply.github.com>
Date: Fri, 16 Aug 2024 07:33:41 +1200
Subject: [PATCH] [ie/bilibili] Fix festival URL support (#10740)

Closes #10739
Authored by: grqz, bashonly

Co-authored-by: bashonly <88596187+bashonly@users.noreply.github.com>
---
 yt_dlp/extractor/bilibili.py | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/yt_dlp/extractor/bilibili.py b/yt_dlp/extractor/bilibili.py
index a84b7a6f7..3163df8ab 100644
--- a/yt_dlp/extractor/bilibili.py
+++ b/yt_dlp/extractor/bilibili.py
@@ -298,7 +298,7 @@ class BilibiliBaseIE(InfoExtractor):
 
 
 class BiliBiliIE(BilibiliBaseIE):
-    _VALID_URL = r'https?://(?:www\.)?bilibili\.com/(?:video/|festival/\w+\?(?:[^#]*&)?bvid=)[aAbB][vV](?P<id>[^/?#&]+)'
+    _VALID_URL = r'https?://(?:www\.)?bilibili\.com/(?:video/|festival/[^/?#]+\?(?:[^#]*&)?bvid=)[aAbB][vV](?P<id>[^/?#&]+)'
 
     _TESTS = [{
         'url': 'https://www.bilibili.com/video/BV13x41117TL',
@@ -622,6 +622,10 @@ class BiliBiliIE(BilibiliBaseIE):
             'ext': 'mp4',
         },
         'skip': 'geo-restricted',
+    }, {
+        'note': 'has - in the last path segment of the url',
+        'url': 'https://www.bilibili.com/festival/bh3-7th?bvid=BV1tr4y1f7p2&',
+        'only_matching': True,
     }]
 
     def _real_extract(self, url):