diff options
Diffstat (limited to 'pkgs/aszlig/firefox/ff2mpv.py')
-rw-r--r-- | pkgs/aszlig/firefox/ff2mpv.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/pkgs/aszlig/firefox/ff2mpv.py b/pkgs/aszlig/firefox/ff2mpv.py new file mode 100644 index 00000000..a983c982 --- /dev/null +++ b/pkgs/aszlig/firefox/ff2mpv.py @@ -0,0 +1,38 @@ +import sys +import struct +import json +from subprocess import Popen, DEVNULL + + +def main(): + message = get_message() + url = message.get("url") + + mpv_args = ["--no-terminal", "--pause", "--force-window=immediate"] + + args = ["mpv", *mpv_args, "--", url] + Popen(args, stdin=DEVNULL, stdout=DEVNULL, stderr=DEVNULL) + # Need to respond something to avoid "Error: An unexpected error occurred" + # in Browser Console. + send_message("ok") + + +def get_message(): + raw_length = sys.stdin.buffer.read(4) + if not raw_length: + return {} + length = struct.unpack("@I", raw_length)[0] + message = sys.stdin.buffer.read(length).decode("utf-8") + return json.loads(message) + + +def send_message(message): + content = json.dumps(message).encode("utf-8") + length = struct.pack("@I", len(content)) + sys.stdout.buffer.write(length) + sys.stdout.buffer.write(content) + sys.stdout.buffer.flush() + + +if __name__ == "__main__": + main() |