|
1 | 1 | from beetsplug.beetstream.utils import *
|
2 |
| -from beetsplug.beetstream import app |
| 2 | +from beetsplug.beetstream import app, stream |
3 | 3 | from flask import g, request, Response
|
4 | 4 | from beets.random import random_objs
|
5 | 5 | import xml.etree.cElementTree as ET
|
@@ -47,26 +47,26 @@ def songs_by_genre():
|
47 | 47 | @app.route('/rest/stream', methods=["GET", "POST"])
|
48 | 48 | @app.route('/rest/stream.view', methods=["GET", "POST"])
|
49 | 49 | def stream_song():
|
50 |
| - maxBitrate = int(request.values.get('maxBitRate') or 0) # TODO |
51 |
| - format = request.values.get('format') #TODO |
52 |
| - return stream(maxBitrate) |
| 50 | + maxBitrate = int(request.values.get('maxBitRate') or 0) |
| 51 | + format = request.values.get('format') |
| 52 | + |
| 53 | + id = int(song_subid_to_beetid(request.values.get('id'))) |
| 54 | + item = g.lib.get_item(id) |
| 55 | + |
| 56 | + itemPath = item.path.decode('utf-8') |
| 57 | + |
| 58 | + if format == 'raw' or maxBitrate <= 0 or item.bitrate <= maxBitrate * 1000: |
| 59 | + return stream.send_raw_file(itemPath) |
| 60 | + else: |
| 61 | + return stream.try_to_transcode(itemPath, maxBitrate) |
53 | 62 |
|
54 | 63 | @app.route('/rest/download', methods=["GET", "POST"])
|
55 | 64 | @app.route('/rest/download.view', methods=["GET", "POST"])
|
56 | 65 | def download_song():
|
57 |
| - return stream(0) |
58 |
| - |
59 |
| -def stream(maxBitrate): |
60 | 66 | id = int(song_subid_to_beetid(request.values.get('id')))
|
61 | 67 | item = g.lib.get_item(id)
|
62 | 68 |
|
63 |
| - def generate(): |
64 |
| - with open(item.path, "rb") as songFile: |
65 |
| - data = songFile.read(1024) |
66 |
| - while data: |
67 |
| - yield data |
68 |
| - data = songFile.read(1024) |
69 |
| - return Response(generate(), mimetype=path_to_content_type(item.path.decode('utf-8'))) |
| 69 | + return stream.send_raw_file(item.path.decode('utf-8')) |
70 | 70 |
|
71 | 71 | @app.route('/rest/getRandomSongs', methods=["GET", "POST"])
|
72 | 72 | @app.route('/rest/getRandomSongs.view', methods=["GET", "POST"])
|
|
0 commit comments