# playlist helper TODO: use https://github.com/megamaz/beatsaver-python ## Usage ```sh pipx install pleb-saberlist player_scores_by_stars leaderboard_songs_by_stars ``` ### Examples ```sh leaderboard_songs_by_stars Enter the minimum starlevel to include on the playlist (Default: 6.0): 6.2 Enter the maximum starlevel to include on the playlist (Default: 6.3): Enter the filename for the playlist (Default: SS Leaderboard 6.2★): 2024-07-09 16:06:13 DEBUG: Using selector: EpollSelector 2024-07-09 16:06:13 INFO: Fetching page 1/-1 of leaderboards 2024-07-09 16:06:13 INFO: Got 14 songs from leaderboard page 1 2024-07-09 16:06:13 INFO: Fetching page 2/3 of leaderboards 2024-07-09 16:06:14 INFO: Got 14 songs from leaderboard page 2 2024-07-09 16:06:14 INFO: Fetching page 3/3 of leaderboards 2024-07-09 16:06:14 INFO: Got 3 songs from leaderboard page 3 2024-07-09 16:06:14 INFO: Playlist written to SS Leaderboard 6.2★.bplist ``` Player songs by stars: ```sh player_scores_by_stars 2024-07-09 16:07:04 DEBUG: Using selector: EpollSelector Enter the playerid (Default: 76561199407393962): Enter the minimum starlevel to include on the playlist (Default: 5): Enter the maximum starlevel to include on the playlist (Default: 6.0): 5.5 Enter the filename for the playlist (Default: Replay SS 5.0★): 2024-07-09 16:07:14 INFO: Fetching page 1/-1 of player scores 2024-07-09 16:07:15 INFO: Got 100 scores from page 1 ... 2024-07-09 16:07:19 INFO: Fetching page 8/9 of player scores 2024-07-09 16:07:20 INFO: Got 96 scores from page 8 2024-07-09 16:07:20 INFO: Playlist written to Replay SS 5.0★.bplist ``` ## Development Clone the repo and install dependencies into a local virtual environment: ```bash pip install --upgrade pip pip install --editable . ``` ## Resources * [Beatleader API](https://beatleader.xyz/developer) * [ScoreSaber API](https://docs.scoresaber.com/) ## Tips Count results ```shell jq '.songs | length' < playlist.bplist ``` Avoid printing covers in console. ```shell jq 'del(.image)' < playlist.bplist ``` Find the most common mappers the player has played: ```shell jq -r '.songs[].levelAuthorName' *.bplist | sort | uniq -c | sort -rn | head -n 10 ```