no more automatic music scrobble, just make it manually with "share" button

This commit is contained in:
localhost_frssoft 2023-07-30 16:33:05 +03:00
parent 3310b56843
commit bcd6c220f3
3 changed files with 39 additions and 49 deletions

View File

@ -2,7 +2,7 @@ from src.fw_api import current_instance, get_radios, post_radio_session, get_tra
from src.fw_libraries import libraries from src.fw_libraries import libraries
from src.fw_tags import list_tags from src.fw_tags import list_tags
from src.utils import download_track, track_info_output from src.utils import download_track, track_info_output
from src.mpv_control import player, track_url_to_uuid, player_fw_storage, soft_volume_reduce from src.mpv_control import player, track_url_to_uuid, player_fw_storage, soft_volume_reduce, send_listen_activity
from src.settings import get_config from src.settings import get_config
from pyfzf.pyfzf import FzfPrompt from pyfzf.pyfzf import FzfPrompt
from loguru import logger from loguru import logger
@ -119,7 +119,7 @@ def radio_load(id_radio=None, type_radio='custom', name=None, related_object=Non
radio_task = threading.Thread( radio_task = threading.Thread(
target=radio_generator, args=(radio_session_id,), daemon=True) target=radio_generator, args=(radio_session_id,), daemon=True)
radio_task.start() radio_task.start()
player_items_menu = ['Next', 'Prev', 'Pause', 'Download', 'Info'] player_items_menu = ['Next', 'Prev', 'Pause', 'Download', 'Info', 'Share']
if show_like_button: if show_like_button:
player_items_menu.append('Like') player_items_menu.append('Like')
@ -163,6 +163,8 @@ def radio_load(id_radio=None, type_radio='custom', name=None, related_object=Non
track = player_fw_storage.storage.get(track_url_to_uuid()) track = player_fw_storage.storage.get(track_url_to_uuid())
track['direct_url'] = player.stream_open_filename track['direct_url'] = player.stream_open_filename
track_info_output(track) track_info_output(track)
elif select == 'Share':
send_listen_activity()
elif select == 'Like': elif select == 'Like':
favorite_track(player_fw_storage.storage.get( favorite_track(player_fw_storage.storage.get(
track_url_to_uuid())['id']) track_url_to_uuid())['id'])

View File

@ -24,8 +24,8 @@ player.volume = get_config('mpv_volume')
player.prefetch_playlist = get_config('prefetch_playlist') player.prefetch_playlist = get_config('prefetch_playlist')
show_like_button = get_config('show_like_button') show_like_button = get_config('show_like_button')
track_activity_history = get_config('track_activity_history') track_activity_history = get_config('track_activity_history')
scrobbler_to_fediverse_token = get_config('scrobbler_to_fediverse_token') share_to_fediverse_token = get_config('share_to_fediverse_token')
scrobbler_to_fediverse_instance = get_config('scrobbler_to_fediverse_instance') share_to_fediverse_instance = get_config('share_to_fediverse_instance')
shuffle = False shuffle = False
@ -47,15 +47,7 @@ def track_url_to_uuid(listen_url=None):
return uuid[0] return uuid[0]
if track_activity_history or scrobbler_to_fediverse_token != '': def send_listen_activity():
@player.property_observer('time-pos')
@logger.catch
def time_observer(_name, value):
# Here, _value is either None if nothing is playing or a float containing
# fractional seconds since the beginning of the file.
if value:
if value >= 30.0 and value <= 30.2 and player.pause is False:
# detect 30 secs for reporting listen activity
try: try:
track = player_fw_storage.storage.get(track_url_to_uuid()) track = player_fw_storage.storage.get(track_url_to_uuid())
except: except:
@ -64,11 +56,10 @@ if track_activity_history or scrobbler_to_fediverse_token != '':
track_id = track.get('id') track_id = track.get('id')
if track_id: if track_id:
if track_activity_history:
src.fw_api.record_track_in_history(track_id) src.fw_api.record_track_in_history(track_id)
else: else:
logger.error("Can't write track to history: No track id") logger.error("Can't write track to history: No track id")
if scrobbler_to_fediverse_token != '': if share_to_fediverse_token != '':
fid = track.get('fid') fid = track.get('fid')
artist = track['artist'].get('name') artist = track['artist'].get('name')
album = track['album'].get('title') album = track['album'].get('title')
@ -79,16 +70,12 @@ if track_activity_history or scrobbler_to_fediverse_token != '':
tags = ' '.join(tags) tags = ' '.join(tags)
if tags == []: if tags == []:
tags = '' tags = ''
status_obj = {'spoiler_text': 'funkwhale-cli music scrobbler', status_obj = {'spoiler_text': 'funkwhale-cli music share',
'visibility': 'unlisted', 'visibility': 'unlisted',
'status': f'🎧 {artist} - {album} - {title}\n{fid}\n#NowPlaying {tags}'} 'status': f'🎧 {artist} - {album} - {title}\n{fid}\n#NowPlaying {tags}'}
requests.post(f'https://{scrobbler_to_fediverse_instance}/api/v1/statuses', requests.post(f'https://{share_to_fediverse_instance}/api/v1/statuses',
json=status_obj, json=status_obj,
headers={'Authorization': f'Bearer {scrobbler_to_fediverse_token}'}) headers={'Authorization': f'Bearer {share_to_fediverse_token}'})
time.sleep(1)
if value > 30.2: # passive mode
time.sleep(1)
return
def osd_observer(value): def osd_observer(value):
@ -160,7 +147,7 @@ def player_menu(header='', storage={}):
while True: while True:
try: try:
player_items_menu = ['Next', 'Prev', 'Pause', player_items_menu = ['Next', 'Prev', 'Pause',
'Shuffle', 'Download', 'Info'] 'Shuffle', 'Download', 'Info', 'Share']
if player.pause: if player.pause:
player_items_menu[2] = 'Play' player_items_menu[2] = 'Play'
else: else:
@ -202,6 +189,8 @@ def player_menu(header='', storage={}):
track = player_fw_storage.storage.get(track_url_to_uuid()) track = player_fw_storage.storage.get(track_url_to_uuid())
track['direct_url'] = player.stream_open_filename track['direct_url'] = player.stream_open_filename
track_info_output(track) track_info_output(track)
elif select == 'Share':
send_listen_activity()
elif select == 'Like': elif select == 'Like':
src.fw_api.favorite_track( src.fw_api.favorite_track(
player_fw_storage.storage.get(track_url_to_uuid())['id']) player_fw_storage.storage.get(track_url_to_uuid())['id'])

View File

@ -38,9 +38,8 @@ default_conf = {
'automatic_fetch_new_instances': False, 'automatic_fetch_new_instances': False,
'enable_server_transcoding': False, 'enable_server_transcoding': False,
'external_transcoder_http_proxy_path': "", 'external_transcoder_http_proxy_path': "",
'scrobbler_to_fediverse_token': "", 'share_to_fediverse_token': "",
'scrobbler_to_fediverse_instance': "", 'share_to_fediverse_instance': "",
'track_activity_history': False,
'prefetch_playlist': True, 'prefetch_playlist': True,
'enable_persistent_cache': False, 'enable_persistent_cache': False,
'mpv_volume': 100, 'mpv_volume': 100,