forked from quentin/quentin.dufour.io
Ajoute un exemple ICY
This commit is contained in:
parent
28a3150346
commit
5637d38418
1 changed files with 38 additions and 0 deletions
38
assets/code/icy.py
Normal file
38
assets/code/icy.py
Normal file
|
@ -0,0 +1,38 @@
|
|||
import asyncio
|
||||
|
||||
async def readHeaders(reader):
|
||||
status_code = await reader.readline()
|
||||
assert (status_code, b'HTTP/1.0 200 OK\r\n')
|
||||
|
||||
headers = {}
|
||||
while True:
|
||||
data = await reader.readline()
|
||||
if data == b'\r\n':
|
||||
print("End of metadata part, all key/value headers have been read")
|
||||
return headers
|
||||
print(data)
|
||||
header_name, header_value = data.split(b':', 1)
|
||||
headers[header_name] = header_value
|
||||
|
||||
|
||||
async def icy():
|
||||
reader, writer = await asyncio.open_connection('streaming.radionti.com', 80)
|
||||
|
||||
writer.write(b"""GET /nti-320.mp3 HTTP/1.0
|
||||
Host: streaming.radionti.com
|
||||
User-Agent: Icy-Test
|
||||
Accept: */*
|
||||
Icy-Metadata: 1
|
||||
|
||||
""")
|
||||
|
||||
headers = await readHeaders(reader)
|
||||
metaint = int(headers[b'icy-metaint'])
|
||||
|
||||
while True:
|
||||
audio = await reader.readexactly(metaint)
|
||||
metadata_size = int.from_bytes(await reader.readexactly(1), "big") * 16
|
||||
metadata_content = await reader.readexactly(metadata_size)
|
||||
print(metadata_content)
|
||||
|
||||
asyncio.run(icy())
|
Loading…
Reference in a new issue