You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
883 B
32 lines
883 B
7 months ago
|
import socket
|
||
|
|
||
|
|
||
|
class Requestor(object):
|
||
|
|
||
|
def __init__(self, host: str, port: int):
|
||
|
self.host = host
|
||
|
self.port = port
|
||
|
|
||
|
|
||
|
def getSongList(self) -> list:
|
||
|
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||
|
client.connect((self.host, self.port))
|
||
|
client.send('getSongList'.encode('utf-8'))
|
||
|
song_list = client.recv(1024).decode('utf-8')
|
||
|
client.close()
|
||
|
return song_list.split('\n')
|
||
|
|
||
|
def getSong(self, song_id: int) -> bytes:
|
||
|
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||
|
client.connect((self.host, self.port))
|
||
|
client.send(f'getSong:{song_id}'.encode('utf-8'))
|
||
|
|
||
|
song_data = b""
|
||
|
while True:
|
||
|
chunk = client.recv(1024)
|
||
|
if not chunk:
|
||
|
break
|
||
|
song_data += chunk
|
||
|
|
||
|
client.close()
|
||
|
return song_data
|