mirror of
https://github.com/Benexl/FastAnime.git
synced 2025-12-25 12:24:52 -08:00
50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
from subprocess import Popen, PIPE, DEVNULL
|
|
import os
|
|
import threading
|
|
|
|
|
|
class MPVPlayer:
|
|
def __init__(self):
|
|
self.mpv_process = None
|
|
self.mpv_thread = None
|
|
|
|
def start_mpv(self):
|
|
if self.mpv_process is None:
|
|
self.mpv_thread = threading.Thread(target=self.run_mpv)
|
|
self.mpv_thread.start()
|
|
|
|
def run_mpv(self, url):
|
|
self.mpv_process = Popen(
|
|
["mpv", "--input-ipc-server=/tmp/mpvsocket", "--osc", url],
|
|
stdin=PIPE,
|
|
stdout=DEVNULL,
|
|
stderr=DEVNULL,
|
|
preexec_fn=os.setsid,
|
|
)
|
|
self.mpv_process.wait()
|
|
self.mpv_process = None
|
|
|
|
def send_command(self, command):
|
|
if self.mpv_process:
|
|
if not self.mpv_process.stdin:
|
|
return
|
|
self.mpv_process.stdin.write(f"{command}\n".encode("utf-8"))
|
|
self.mpv_process.stdin.flush()
|
|
|
|
def pause(self):
|
|
self.send_command('{"command": ["set_property", "pause", true]}')
|
|
|
|
def play(self):
|
|
self.send_command('{"command": ["set_property", "pause", false]}')
|
|
|
|
def stop_mpv(self):
|
|
if self.mpv_process:
|
|
self.send_command('{"command": ["quit"]}')
|
|
self.mpv_process = None
|
|
if not self.mpv_thread:
|
|
return
|
|
self.mpv_thread.join()
|
|
|
|
|
|
mpv_player = MPVPlayer()
|