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.
39 lines
1.1 KiB
39 lines
1.1 KiB
import socket
|
|
import threading
|
|
|
|
from Library import Library
|
|
from Song import Song
|
|
import os
|
|
|
|
SONGS_DIR = os.path.join('../songs')
|
|
|
|
library = Library()
|
|
library.initialize(SONGS_DIR)
|
|
|
|
def handle_client(client_socket):
|
|
request = client_socket.recv(1024).decode('utf-8')
|
|
print(f"Received: {request}")
|
|
|
|
if request == 'getSongList':
|
|
client_socket.send(library.get_song_list().encode('utf-8'))
|
|
|
|
elif request.startswith('getSong:'):
|
|
song_id = int(request.split(':')[1])
|
|
song: Song = library.get_song_by_id(song_id)
|
|
print(f"Sending song: {song.name} by {song.author} to {client_socket.getpeername()}")
|
|
client_socket.send(song.get_data())
|
|
client_socket.close()
|
|
|
|
def start_server():
|
|
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
server.bind(("0.0.0.0", 9999))
|
|
server.listen(5)
|
|
print("Listening on port 9999")
|
|
|
|
while True:
|
|
client, addr = server.accept()
|
|
print(f"Accepted connection from: {addr[0]}:{addr[1]}")
|
|
client_handler = threading.Thread(target=handle_client, args=(client,))
|
|
client_handler.start()
|
|
|
|
start_server() |