diff --git a/yt_dlp/extractor/_extractors.py b/yt_dlp/extractor/_extractors.py index 34c98b537..e880810c0 100644 --- a/yt_dlp/extractor/_extractors.py +++ b/yt_dlp/extractor/_extractors.py @@ -1950,6 +1950,7 @@ SpankBangIE, SpankBangPlaylistIE, ) +from .speedrun import SpeedRunIE from .spiegel import SpiegelIE from .spike import ( BellatorIE, diff --git a/yt_dlp/extractor/speedrun.py b/yt_dlp/extractor/speedrun.py new file mode 100644 index 000000000..1e29f15bd --- /dev/null +++ b/yt_dlp/extractor/speedrun.py @@ -0,0 +1,25 @@ +from .common import InfoExtractor + +# Speedrun.com has the ability to host twitch embeds as well which is why this +# script was needed. + + +class SpeedRunIE(InfoExtractor): + IE_NAME = 'speedrun' + _VALID_URL = r'https?://(?:www\.)?speedrun\.com/[^/?#]+/runs/(?P[^?/#]+)' + + _TESTS = [{ + 'url': 'https://www.speedrun.com/smg1/runs/yvnjr9om', + 'only_matching': True, + }, { + 'url': 'https://www.speedrun.com/pm64/runs/y96x462y', + 'only_matching': True, + }] + + def _real_extract(self, url): + video_id = self._match_id(url) + webpage = self._download_webpage(url, video_id) + embed_url = self._search_regex( + r'