Initial commit

This commit is contained in:
2025-02-12 20:47:16 +02:00
commit 935fe6500a
4 changed files with 74 additions and 0 deletions

54
jelly.py Normal file
View File

@@ -0,0 +1,54 @@
import signal
import socket
import sys
import os
def graceful_exit(signum, frame):
print(f"Exit requested by {signum}")
sys.exit(0)
def get_env(name):
value = os.environ.get(name)
if value is None:
print(f"Missing env variable '{name}'")
print("Exiting")
sys.exit(1)
return value
def main():
jelly_id = get_env('JELLY_ID')
jelly_name = get_env('JELLY_NAME')
jelly_addr = get_env('JELLY_ADDR')
payload = ('{"Address":"%(addr)s","Id":"%(id)s","Name":"%(name)s","EndpointAddress":null}' % {
'addr': jelly_addr,
'id': jelly_id,
'name': jelly_name,
}).encode()
print(f"Listening for JellyFin client discovery broadcasts")
print('Address: "%(addr)s", Id: "%(id)s", Name: "%(name)s"' % {
'addr': jelly_addr,
'id': jelly_id,
'name': jelly_name,
})
signal.signal(signal.SIGINT, graceful_exit)
signal.signal(signal.SIGTERM, graceful_exit)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(('', 7359))
while True:
msg, addr = s.recvfrom(1024)
if msg == b'Who is JellyfinServer?':
print(f"Broadcast {addr}: {msg}")
s.sendto(payload, addr)
else:
print(f"Unknown broadcast {addr}: {msg}")
if __name__ == "__main__":
main()