Merge pull request #41 from kokarare1212/deepsource-transform-2e7b1565
Format code with yapf
This commit is contained in:
@@ -1,12 +1,13 @@
|
|||||||
from librespot.audio.decoders import AudioQuality
|
|
||||||
from librespot.core import Session
|
|
||||||
from librespot.metadata import TrackId
|
|
||||||
from librespot.player.codecs import VorbisOnlyAudioQuality
|
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import socket
|
import socket
|
||||||
import threading
|
import threading
|
||||||
|
|
||||||
|
from librespot.audio.decoders import AudioQuality
|
||||||
|
from librespot.core import Session
|
||||||
|
from librespot.metadata import TrackId
|
||||||
|
from librespot.player.codecs import VorbisOnlyAudioQuality
|
||||||
|
|
||||||
session: Session
|
session: Session
|
||||||
sock: socket
|
sock: socket
|
||||||
|
|
||||||
@@ -31,7 +32,8 @@ def handler(client: socket.socket, address: str):
|
|||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
req_header[key.decode().lower()] = value.decode()
|
req_header[key.decode().lower()] = value.decode()
|
||||||
status, headers, content, manually = response(client, req_uri.decode(), req_header, req_body_str)
|
status, headers, content, manually = response(client, req_uri.decode(),
|
||||||
|
req_header, req_body_str)
|
||||||
if not manually:
|
if not manually:
|
||||||
client.send(req_http_version + b" " + status.encode() + b"\r\n")
|
client.send(req_http_version + b" " + status.encode() + b"\r\n")
|
||||||
client.send(b"Access-Control-Allow-Origin: *\r\n")
|
client.send(b"Access-Control-Allow-Origin: *\r\n")
|
||||||
@@ -72,28 +74,42 @@ def main():
|
|||||||
threading.Thread(target=handler, args=sock.accept()).start()
|
threading.Thread(target=handler, args=sock.accept()).start()
|
||||||
|
|
||||||
|
|
||||||
def response(client: socket.socket, uri: str, header: dict, body: bytes) -> tuple[str, list, bytes, bool]:
|
def response(client: socket.socket, uri: str, header: dict,
|
||||||
|
body: bytes) -> tuple[str, list, bytes, bool]:
|
||||||
if re.search(r"^/audio/track/([0-9a-zA-Z]{22})$", uri) is not None:
|
if re.search(r"^/audio/track/([0-9a-zA-Z]{22})$", uri) is not None:
|
||||||
track_id_search = re.search(r"^/audio/track/(?P<TrackID>[0-9a-zA-Z]{22})$", uri)
|
track_id_search = re.search(
|
||||||
|
r"^/audio/track/(?P<TrackID>[0-9a-zA-Z]{22})$", uri)
|
||||||
track_id_str = track_id_search.group("TrackID")
|
track_id_str = track_id_search.group("TrackID")
|
||||||
track_id = TrackId.from_base62(track_id_str)
|
track_id = TrackId.from_base62(track_id_str)
|
||||||
stream = session.content_feeder() \
|
stream = session.content_feeder().load(
|
||||||
.load(track_id, VorbisOnlyAudioQuality(AudioQuality.VERY_HIGH), False, None)
|
track_id, VorbisOnlyAudioQuality(AudioQuality.VERY_HIGH), False,
|
||||||
|
None)
|
||||||
start = 0
|
start = 0
|
||||||
end = stream.input_stream.stream().size()
|
end = stream.input_stream.stream().size()
|
||||||
if header.get("range") is not None:
|
if header.get("range") is not None:
|
||||||
range_search = re.search("^bytes=(?P<start>[0-9]+?)-(?P<end>[0-9]+?)$", header.get("range"))
|
range_search = re.search(
|
||||||
|
"^bytes=(?P<start>[0-9]+?)-(?P<end>[0-9]+?)$",
|
||||||
|
header.get("range"))
|
||||||
if range_search is not None:
|
if range_search is not None:
|
||||||
start = int(range_search.group("start"))
|
start = int(range_search.group("start"))
|
||||||
end = int(range_search.group("end")) if int(range_search.group("end")) <= stream.input_stream.stream().size() else stream.input_stream.stream().size()
|
end = (int(range_search.group("end"))
|
||||||
|
if int(range_search.group("end")) <=
|
||||||
|
stream.input_stream.stream().size() else
|
||||||
|
stream.input_stream.stream().size())
|
||||||
stream.input_stream.stream().skip(start)
|
stream.input_stream.stream().skip(start)
|
||||||
client.send(b"HTTP/1.0 200 OK\r\n")
|
client.send(b"HTTP/1.0 200 OK\r\n")
|
||||||
client.send(b"Access-Control-Allow-Origin: *\r\n")
|
client.send(b"Access-Control-Allow-Origin: *\r\n")
|
||||||
client.send(b"Content-Length: " + (str(stream.input_stream.stream().size()).encode() if stream.input_stream.stream().size() == end else "{}-{}/{}".format(start, end, stream.input_stream.stream().size()).encode()) + b"\r\n")
|
client.send(b"Content-Length: " +
|
||||||
|
(str(stream.input_stream.stream().size()).encode() if
|
||||||
|
stream.input_stream.stream().size() == end else "{}-{}/{}"
|
||||||
|
.format(start, end,
|
||||||
|
stream.input_stream.stream().size()).encode()) +
|
||||||
|
b"\r\n")
|
||||||
client.send(b"Content-Type: audio/ogg\r\n")
|
client.send(b"Content-Type: audio/ogg\r\n")
|
||||||
client.send(b"\r\n")
|
client.send(b"\r\n")
|
||||||
while True:
|
while True:
|
||||||
if stream.input_stream.stream().pos() >= stream.input_stream.stream().size():
|
if (stream.input_stream.stream().pos() >=
|
||||||
|
stream.input_stream.stream().size()):
|
||||||
break
|
break
|
||||||
byte = stream.input_stream.stream().read()
|
byte = stream.input_stream.stream().read()
|
||||||
client.send(bytes([byte]))
|
client.send(bytes([byte]))
|
||||||
|
|||||||
Reference in New Issue
Block a user