#!/usr/bin/env python3 """Simple URL handler based on domains""" import argparse import subprocess import sys from urllib.parse import urlparse BROWSER = 'qutebrowser' VIDEO_DOMAINS = ['www.youtube.com', 'youtube.com', 'youtu.be', 'vimeo.com'] AUDIO_DOMAINS = ['soundcloud.com'] def play(url, audio=False): """Wraps youtube-dl and mpv""" output = subprocess.check_output( ['youtube-dl', '-e', '--user-agent', '', url], stderr=subprocess.STDOUT, universal_newlines=True).split('\n') title = output[0] command = ['mpv', '--title=' + title] if audio: command.append('--force-window=yes') command.append(url) subprocess.call(command) def main(): """main function""" parser = argparse.ArgumentParser() parser.add_argument('url') args = parser.parse_args() url = urlparse(args.url) domain = url.netloc scheme = url.scheme if scheme == 'file': subprocess.call([BROWSER, args.url]) elif scheme in ['http', 'https']: if not domain: sys.exit("invalid URL specified") if domain in VIDEO_DOMAINS: play(args.url) elif domain in AUDIO_DOMAINS: play(args.url, True) else: subprocess.call([BROWSER, args.url]) else: sys.exit('unknown scheme') if __name__ == '__main__': main()