36 lines
1015 B
Python
36 lines
1015 B
Python
import yt_dlp
|
|
import subprocess
|
|
|
|
def stream_video(url):
|
|
ydl_opts = {
|
|
'format': 'bestvideo+bestaudio/best',
|
|
'quiet': True,
|
|
'no_warnings': True,
|
|
'noplaylist': True,
|
|
'forceurl': True,
|
|
'skip_download': True,
|
|
}
|
|
|
|
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
|
|
try:
|
|
info = ydl.extract_info(url, download=False)
|
|
if 'url' in info:
|
|
video_url = info['url']
|
|
else:
|
|
# For some videos (like YouTube), it's nested in 'formats'
|
|
formats = info.get('formats', [])
|
|
if formats:
|
|
video_url = formats[-1]['url']
|
|
else:
|
|
print("Could not extract video URL.")
|
|
return
|
|
|
|
print("Streaming to mpv...")
|
|
subprocess.run(['mpv', video_url])
|
|
except Exception as e:
|
|
print(f"An error occurred: {e}")
|
|
|
|
# Example usage
|
|
video_url = input("Video URL: ")
|
|
stream_video(video_url)
|