diff --git a/MIRRORS b/MIRRORS index c55944e..67df9ce 100644 --- a/MIRRORS +++ b/MIRRORS @@ -1,5 +1,6 @@ # Avalaible mirrors -https://inex.dev/localhost_frssoft/funkwlmpv.git -|- https://git.vector1.dev/localhost_frssoft/funkwlmpv -https://git.macaw.me/localhost_frssoft/funkwlmpv.git -https://code.criminallycute.fi/localhost_frssoft/funkwlmpv.git +https://inex.dev/localhost_frssoft/funkwhale-cli.git +|- https://git.vector1.dev/localhost_frssoft/funkwhale-cli +https://git.macaw.me/localhost_frssoft/funkwhale-cli.git +https://code.criminallycute.fi/localhost_frssoft/funkwhale-cli.git +https://git.poridge.club/localhost_frssoft/funkwhale-cli.git diff --git a/README.md b/README.md index ae24622..142e200 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# funkwlmpv +# funkwhale-cli Just for fun. A simple TUI media player for FunkWhale instances. Writen on python Features: @@ -21,7 +21,7 @@ Python dependencies: Optional: brotli ### About cache folder -funkwlmpv has to cache tracks before playing (default disabled "enable_persistent_cache"). Cache is persistent and you should manage it manually because the (script/program) can't clean it automatically. +funkwhale-cli has to cache tracks before playing (default disabled "enable_persistent_cache"). Cache is persistent and you should manage it manually because the (script/program) can't clean it automatically. Cache structure: cache/domain.tld/[track uuid] You can play tracks offline, example: mpv --shuffle cache/*/* cache_helper.sh - it might be useful for compression cache (lossy: vorbis 128 kbps, no thumbnail) diff --git a/funkwlmpv b/funkwhale_cli.py similarity index 99% rename from funkwlmpv rename to funkwhale_cli.py index eede962..d4235b8 100755 --- a/funkwlmpv +++ b/funkwhale_cli.py @@ -94,7 +94,7 @@ def main(): print(f''' If You want sign in, please visit: https://{current_instance.instance}/settings/applications/new -And fill Name funkwlmpv +And fill Name funkwhale-cli Scopes: Read | Write (optional): write:libraries diff --git a/src/android_termux_api.py b/src/android_termux_api.py deleted file mode 100644 index b5b38d7..0000000 --- a/src/android_termux_api.py +++ /dev/null @@ -1,39 +0,0 @@ -import subprocess -import os -import json -import threading -import time -from src.mpv_control import player -from loguru import logger -'''Warning! This module can be very battery drain''' - - -@logger.catch -def handle_vol_lvl_as_switch_track(): - volume_diff = [] - while True: - debug_time = time.time() - volume = subprocess.Popen("termux-volume", stdout=subprocess.PIPE).stdout - json_volume = json.loads(volume.read()) - for i in json_volume: - if i['stream'] == 'music': - volume_diff.append(i['volume']) - if len(volume_diff) == 2: - before, after = volume_diff - difference = after - before - if difference == 2: - try: - player.playlist_next() - except: - pass - os.system(f'termux-volume music {before}') - volume_diff = [] - debug_time2 = time.time() - total = debug_time2 - debug_time - print(total) - time.sleep(0.300) - - -handle_vol_lvl = threading.Thread( - target=handle_vol_lvl_as_switch_track, daemon=True) -handle_vol_lvl.start() diff --git a/src/fw_api.py b/src/fw_api.py index 09a237f..1789fb0 100644 --- a/src/fw_api.py +++ b/src/fw_api.py @@ -32,7 +32,7 @@ class current_instance: s = requests.Session() s.headers.update({ "Accept-encoding": 'gzip, br, deflate', - "User-Agent": "funkwlmpv/latest-commit; +https://git.phreedom.club/localhost_frssoft/funkwlmpv" + "User-Agent": "funkwhale-cli/latest-commit; +https://git.phreedom.club/localhost_frssoft/funkwhale-cli" }) instance = get_config('instance') token = auth.get(instance) diff --git a/src/fw_instances.py b/src/fw_instances.py index 4161e87..2fd1d65 100644 --- a/src/fw_instances.py +++ b/src/fw_instances.py @@ -77,7 +77,7 @@ def fetch_instances_nodeinfo_and_avalaibility(instances): return requests.get('https://' + instance + '/api/v1/instance/nodeinfo/2.0/', headers={ 'Accept-Encoding': 'gzip, brotli, deflate', - 'User-Agent': 'funkwlmpv/latest-commit; +https://git.phreedom.club/localhost_frssoft/funkwlmpv'}, + 'User-Agent': 'funkwhale-cli/latest-commit; +https://git.phreedom.club/localhost_frssoft/funkwhale-cli'}, timeout=10).json() with concurrent.futures.ThreadPoolExecutor() as executor: # optimally defined number of threads diff --git a/src/fw_recents.py b/src/fw_recents.py index 0c64702..4e75b9b 100644 --- a/src/fw_recents.py +++ b/src/fw_recents.py @@ -1,6 +1,6 @@ from src.fw_api import get_favorires_tracks, get_recently_listened, get_audio_file from src.fw_api_hints import hint_scope -from src.mpv_control import player, player_menu, track_url_to_uuid, player_fw_storage, play_track +from src.mpv_control import player, player_menu, track_url_to_uuid, player_fw_storage from pyfzf.pyfzf import FzfPrompt from loguru import logger @@ -54,3 +54,14 @@ def list_fav_or_history(pg=None, search=None, scope=None, is_history_view=False) else: play_track(track=tracks_results[int( select[0].split('.', 1)[0])]['track']) + + +def play_track(track, multi=False): + listen_url = get_audio_file(track['listen_url'], True) + player_fw_storage.storage[track_url_to_uuid(listen_url)] = track + if multi: + player.loadfile(listen_url, 'append-play') + else: + player.loadfile(listen_url, 'append-play') + track_name = track.get('title') + player_menu(f"{track_name} playing...", player_fw_storage.storage) diff --git a/src/fw_tracks.py b/src/fw_tracks.py index 3c297d1..e56876b 100644 --- a/src/fw_tracks.py +++ b/src/fw_tracks.py @@ -49,13 +49,10 @@ def list_tracks(pg=None, search=None, tag=None, library=None): for i in tracks_results: play_track(track=i, multi=True) elif select == 'Play all pages': - if tracks_count > 500: - yn = input('WARNING: you really want add more than 500 tracks? (y/[n] or number of tracks)\n').lower() - try: - tracks_count = int(yn) - except: - if yn != 'y': - return + if tracks_count > 1000: + yn = input('WARNING: you really want add more than 1000 tracks? (y/[n])\n').lower() + if yn != 'y': + return count_loaded = 0 while tracks_count > count_loaded: for i in tracks_results: diff --git a/src/mpv_control.py b/src/mpv_control.py index c78b77b..37aed01 100644 --- a/src/mpv_control.py +++ b/src/mpv_control.py @@ -23,13 +23,11 @@ player.ytdl = False # Prevent attempts load track with yt-dlp player.volume = get_config('mpv_volume') player.prefetch_playlist = get_config('prefetch_playlist') show_like_button = get_config('show_like_button') +track_activity_history = get_config('track_activity_history') share_to_fediverse_token = get_config('share_to_fediverse_token') share_to_fediverse_instance = get_config('share_to_fediverse_instance') shuffle = False -if get_config('termux_handle_track_switch_by_volume'): - import src.android_termux_api - class player_fw_storage: storage = {} @@ -72,7 +70,7 @@ def send_listen_activity(): tags = ' '.join(tags) if tags == []: tags = '' - status_obj = {'spoiler_text': 'funkwlmpv music share', + status_obj = {'spoiler_text': 'funkwhale-cli music share', 'visibility': 'unlisted', 'status': f'🎧 {artist} - {album} - {title}\n{fid}\n#NowPlaying {tags}'} requests.post(f'https://{share_to_fediverse_instance}/api/v1/statuses', diff --git a/src/settings.py b/src/settings.py index 7fd9b2a..1cc9c81 100644 --- a/src/settings.py +++ b/src/settings.py @@ -44,8 +44,7 @@ default_conf = { 'enable_persistent_cache': False, 'mpv_volume': 100, 'show_like_button': True, - 'show_artist_name_in_albums': False, - 'termux_handle_track_switch_by_volume': False + 'show_artist_name_in_albums': False }