diff --git a/cmd/ytdl/test_ytdl.py b/cmd/ytdl/test_ytdl.py index 2090047..1de32ae 100644 --- a/cmd/ytdl/test_ytdl.py +++ b/cmd/ytdl/test_ytdl.py @@ -4,9 +4,11 @@ import unittest class TestYtdl(unittest.TestCase): def test_resolve(self): - self.assertIsNotNone(ytdl._resolve('https://youtube.com/watch?v=ygIUF678y40', {'format': 'video', 'quality': 'low'})) - self.assertIsNotNone(ytdl._resolve('https://youtube.com/watch?v=WyaEiO4hyik', {'format': 'audio', 'quality': 'high'})) + self.assertIsNotNone( + ytdl._resolve('https://youtube.com/watch?v=ygIUF678y40', {'format': 'video', 'quality': 'low', 'provider': 'youtube'})) + self.assertIsNotNone( + ytdl._resolve('https://youtube.com/watch?v=WyaEiO4hyik', {'format': 'audio', 'quality': 'high', 'provider': 'youtube'})) def test_vimeo(self): self.assertIsNotNone( - ytdl._resolve('https://vimeo.com/237715420', {'format': 'video', 'quality': 'low'})) + ytdl._resolve('https://vimeo.com/237715420', {'format': 'video', 'quality': 'low', 'provider': 'vimeo'})) diff --git a/cmd/ytdl/ytdl.py b/cmd/ytdl/ytdl.py index 19600e4..bc7c72a 100644 --- a/cmd/ytdl/ytdl.py +++ b/cmd/ytdl/ytdl.py @@ -62,9 +62,16 @@ def _resolve(url, metadata): raise InvalidUsage('Invalid URL') try: + provider = metadata['provider'] + with youtube_dl.YoutubeDL(opts) as ytdl: info = ytdl.extract_info(url, download=False) - return _choose_url(info, metadata) + if provider == 'youtube': + return _choose_url(info, metadata) + elif provider == 'vimeo': + return info['url'] + else: + raise ValueError('undefined provider') except DownloadError: raise except Exception as e: