Now uses listen_token for listening private tracks

Also this is required for external transcoder
This commit is contained in:
localhost_frssoft 2023-01-02 17:43:50 +03:00
parent 221aa66a58
commit 1e3972d009
2 changed files with 20 additions and 9 deletions

View file

@ -1,4 +1,3 @@
from src.mpv_control import set_http_header
from src.settings import get_config from src.settings import get_config
import requests import requests
import json import json
@ -32,6 +31,8 @@ class current_instance:
s = requests.Session() s = requests.Session()
instance = get_config('instance') instance = get_config('instance')
token = auth.get(instance) token = auth.get(instance)
listen_token = None
@logger.catch @logger.catch
def select_instance(new_instance=None): def select_instance(new_instance=None):
@ -41,14 +42,14 @@ class current_instance:
new_token = auth.get(current_instance.instance) new_token = auth.get(current_instance.instance)
current_instance.s.headers.update({"Authorization": None, current_instance.s.headers.update({"Authorization": None,
"Accept-encoding": 'gzip'}) "Accept-encoding": 'gzip'})
set_http_header() current_instance.token = new_token
current_instance.listen_token = None
if new_token: if new_token:
s.get(f'https://{current_instance.instance}') s.get(f'https://{current_instance.instance}')
s.headers.update({ s.headers.update({
"Authorization": "Bearer " + new_token, "Authorization": "Bearer " + new_token,
"Accept-encoding": 'gzip' "Accept-encoding": 'gzip'
}) })
set_http_header(['Authorization: ' + 'Bearer ' + new_token])
if current_instance.token: if current_instance.token:
@ -56,12 +57,21 @@ if current_instance.token:
"Authorization": "Bearer " + current_instance.token, "Authorization": "Bearer " + current_instance.token,
"Accept-encoding": 'gzip' "Accept-encoding": 'gzip'
}) })
set_http_header(['Authorization: ' + 'Bearer ' + current_instance.token])
else: else:
current_instance.s.headers.update({"Accept-encoding": 'gzip'}) current_instance.s.headers.update({"Accept-encoding": 'gzip'})
# Get cookies from unauthorized instance for working some functionality (radios) # Get cookies from unauthorized instance for working some functionality (radios)
current_instance.s.get(f'https://{current_instance.instance}/') current_instance.s.get(f'https://{current_instance.instance}/')
set_http_header()
@logger.catch
def get_me():
'''Return current user if token avalaible'''
if not current_instance.token:
return
r = current_instance.s.get(f'https://{current_instance.instance}/api/v1/users/me')
resp = r.json()
current_instance.listen_token = resp['tokens']['listen']
return resp
@logger.catch @logger.catch
@ -79,6 +89,11 @@ def get_audio_file(track_uuid, listen_url=False, download=False,
"download": download, "download": download,
"to": to "to": to
} }
if current_instance.token and not current_instance.listen_token:
get_me()
if current_instance.listen_token:
params['token'] = current_instance.listen_token
if not transcoding: if not transcoding:
del params['to'] del params['to']
if listen_url: if listen_url:

View file

@ -104,10 +104,6 @@ def universal_observer(_name, value):
time.sleep(1) time.sleep(1)
def set_http_header(headers=[]):
player.http_header_fields = headers
@logger.catch @logger.catch
def player_menu(header='', storage={}): def player_menu(header='', storage={}):
player_fw_storage.storage.update(storage) player_fw_storage.storage.update(storage)