aboutsummaryrefslogtreecommitdiffstats
path: root/yt_dlp/extractor/crunchyroll.py
diff options
context:
space:
mode:
authorpukkandan <pukkandan.ytdlp@gmail.com>2022-08-12 13:08:32 +0530
committerpukkandan <pukkandan.ytdlp@gmail.com>2022-08-12 13:13:11 +0530
commit5da42f2b9b29e69cff8a2ea22d3cf9c586e470d6 (patch)
treeef57d916ffa8c1f9acc0dd044851a63c81e35aae /yt_dlp/extractor/crunchyroll.py
parent1155ecef29187bff975ceb51c755722c660e0387 (diff)
downloadhypervideo-pre-5da42f2b9b29e69cff8a2ea22d3cf9c586e470d6.tar.lz
hypervideo-pre-5da42f2b9b29e69cff8a2ea22d3cf9c586e470d6.tar.xz
hypervideo-pre-5da42f2b9b29e69cff8a2ea22d3cf9c586e470d6.zip
[extractor/crunchyroll] Improve `_VALID_URL`s
Closes #4633
Diffstat (limited to 'yt_dlp/extractor/crunchyroll.py')
-rw-r--r--yt_dlp/extractor/crunchyroll.py25
1 files changed, 20 insertions, 5 deletions
diff --git a/yt_dlp/extractor/crunchyroll.py b/yt_dlp/extractor/crunchyroll.py
index fccf05480..d4968c13b 100644
--- a/yt_dlp/extractor/crunchyroll.py
+++ b/yt_dlp/extractor/crunchyroll.py
@@ -114,7 +114,14 @@ class CrunchyrollBaseIE(InfoExtractor):
class CrunchyrollIE(CrunchyrollBaseIE, VRVBaseIE):
IE_NAME = 'crunchyroll'
- _VALID_URL = r'https?://(?:(?P<prefix>www|m)\.)?(?P<url>crunchyroll\.(?:com|fr)/(?:media(?:-|/\?id=)|(?!series/|watch/)(?:[^/]+/){1,2}[^/?&]*?)(?P<id>[0-9]+))(?:[/?&]|$)'
+ _VALID_URL = r'''(?x)
+ https?://(?:(?P<prefix>www|m)\.)?(?P<url>
+ crunchyroll\.(?:com|fr)/(?:
+ media(?:-|/\?id=)|
+ (?!series/|watch/)(?:[^/]+/){1,2}[^/?&#]*?
+ )(?P<id>[0-9]+)
+ )(?:[/?&#]|$)'''
+
_TESTS = [{
'url': 'http://www.crunchyroll.com/wanna-be-the-strongest-in-the-world/episode-1-an-idol-wrestler-is-born-645513',
'info_dict': {
@@ -758,7 +765,11 @@ class CrunchyrollBetaBaseIE(CrunchyrollBaseIE):
class CrunchyrollBetaIE(CrunchyrollBetaBaseIE):
IE_NAME = 'crunchyroll:beta'
- _VALID_URL = r'https?://beta\.crunchyroll\.com/(?P<lang>(?:\w{2}(?:-\w{2})?/)?)watch/(?P<id>\w+)/(?P<display_id>[\w\-]*)/?(?:\?|$)'
+ _VALID_URL = r'''(?x)
+ https?://beta\.crunchyroll\.com/
+ (?P<lang>(?:\w{2}(?:-\w{2})?/)?)
+ watch/(?P<id>\w+)
+ (?:/(?P<display_id>[\w-]+))?/?(?:[?#]|$)'''
_TESTS = [{
'url': 'https://beta.crunchyroll.com/watch/GY2P1Q98Y/to-the-future',
'info_dict': {
@@ -780,7 +791,7 @@ class CrunchyrollBetaIE(CrunchyrollBetaBaseIE):
},
'params': {'skip_download': 'm3u8'},
}, {
- 'url': 'https://beta.crunchyroll.com/watch/GY2P1Q98Y/',
+ 'url': 'https://beta.crunchyroll.com/watch/GY2P1Q98Y',
'only_matching': True,
}, {
'url': 'https://beta.crunchyroll.com/pt-br/watch/G8WUN8VKP/the-ruler-of-conspiracy',
@@ -867,7 +878,11 @@ class CrunchyrollBetaIE(CrunchyrollBetaBaseIE):
class CrunchyrollBetaShowIE(CrunchyrollBetaBaseIE):
IE_NAME = 'crunchyroll:playlist:beta'
- _VALID_URL = r'https?://beta\.crunchyroll\.com/(?P<lang>(?:\w{2}(?:-\w{2})?/)?)series/(?P<id>\w+)/(?P<display_id>[\w\-]*)/?(?:\?|$)'
+ _VALID_URL = r'''(?x)
+ https?://beta\.crunchyroll\.com/
+ (?P<lang>(?:\w{2}(?:-\w{2})?/)?)
+ series/(?P<id>\w+)
+ (?:/(?P<display_id>[\w-]+))?/?(?:[?#]|$)'''
_TESTS = [{
'url': 'https://beta.crunchyroll.com/series/GY19NQ2QR/Girl-Friend-BETA',
'info_dict': {
@@ -876,7 +891,7 @@ class CrunchyrollBetaShowIE(CrunchyrollBetaBaseIE):
},
'playlist_mincount': 10,
}, {
- 'url': 'https://beta.crunchyroll.com/it/series/GY19NQ2QR/Girl-Friend-BETA',
+ 'url': 'https://beta.crunchyroll.com/it/series/GY19NQ2QR',
'only_matching': True,
}]