Last active
May 7, 2022 14:46
-
-
Save GluTbl/e5a3448ac6bc252d070e9c09ba0a5588 to your computer and use it in GitHub Desktop.
Python VLC Controller #vlc #python
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class player(): | |
def __init__(self): | |
self.is_initiated = False | |
self.SEEK_TIME = 20 | |
self.MAX_VOL = 512 | |
self.MIN_VOL = 0 | |
self.DEFAULT_VOL = 256 | |
self.VOL_STEP = 13 | |
self.current_vol = self.DEFAULT_VOL | |
def toggle_play(self): | |
if not self.is_initiated: | |
self.is_initiated = True | |
self.thrededreq("loop on") | |
self.thrededreq("random on") | |
self.thrededreq("add /home/pi/Desktop/myMix")#adding the music folder | |
print("Init Playing") | |
return | |
self.thrededreq("pause") | |
print("Toggle play") | |
def next(self): | |
if not self.is_initiated: | |
self.toggle_play() | |
return | |
self.thrededreq("next") | |
print("Next") | |
pass | |
def prev(self): | |
if not self.is_initiated: | |
self.toggle_play() | |
return | |
self.thrededreq("prev") | |
print("Previous") | |
pass | |
def volup(self): | |
self.current_vol = self.current_vol + self.VOL_STEP | |
self.thrededreq("volume " + str(self.current_vol)) | |
print("Volume up") | |
pass | |
def voldown(self): | |
self.current_vol = self.current_vol - self.VOL_STEP | |
self.thrededreq("volume " + str(self.current_vol)) | |
print("Volume Down") | |
pass | |
def seek(self, forward: bool): | |
length = self._timeinfo("get_length") | |
print(length) | |
cur = self._timeinfo("get_time") | |
print(cur) | |
if (forward): | |
seekable = cur + self.SEEK_TIME | |
else: | |
seekable = cur - self.SEEK_TIME | |
if seekable > length: | |
seekable = length - 5 | |
if seekable < 0: | |
seekable = 0 | |
self.thrededreq("seek " + str(seekable)) | |
print("Seek: ",seekable," Cur: ",cur,"Len: ",length) | |
pass | |
def _timeinfo(self, msg): | |
length = self.req(msg, True).split("\r\n") | |
if (len(length) < 2): | |
return None | |
length = length[1].split(" ") | |
if (len(length) < 2): | |
return None | |
try: | |
num = int(length[1]) | |
return num | |
except: | |
return None | |
def req(self, msg: str, full=False): | |
try: | |
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: | |
# Connect to server and send data | |
sock.settimeout(0.7) | |
sock.connect(('192.168.29.251', 44500)) | |
response = "" | |
received = "" | |
sock.sendall(bytes(msg + '\n', "utf-8")) | |
# if True: | |
try: | |
while (True): | |
received = (sock.recv(1024)).decode() | |
response = response + received | |
if full: | |
b = response.count("\r\n") | |
if response.count("\r\n") > 1: | |
sock.close() | |
break | |
else: | |
if response.count("\r\n") > 0: | |
sock.close() | |
break | |
except: | |
response = response + received | |
pass | |
sock.close() | |
return response | |
except: | |
return None | |
pass | |
def thrededreq(self, msg): | |
Thread(target=self.req, args=(msg,)).start() | |
#'vlc --intf rc --rc-host 127.0.0.1:44500' you need to run the vlc player from command line to allo controlling it via TCP | |
#"C:\Program Files\VideoLAN\VLC\vlc" --intf rc --rc-host 127.0.0.1:44500 | |
Player=player() | |
player.toggle_play() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment