217 lines
7.8 KiB
Markdown
217 lines
7.8 KiB
Markdown
|
# Python coding
|
||
|
|
||
|
We used openapi-python-client to generate client libraries for the beatleader.xyz api. It's in clients/beatleader in our python project:
|
||
|
|
||
|
```
|
||
|
.
|
||
|
├── docs/
|
||
|
│ ├── prompts/
|
||
|
│ └── *.md
|
||
|
├── src/
|
||
|
│ ├── clients/
|
||
|
│ │ ├── beatleader/
|
||
|
│ │ │ ├── api/ (various API endpoints)
|
||
|
│ │ │ ├── models/ (data models)
|
||
|
│ │ │ └── client.py, errors.py, __init__.py, types.py
|
||
|
│ │ ├── beatsaver/ (similar structure to beatleader)
|
||
|
│ │ └── scoresaber/ (similar structure to beatleader)
|
||
|
│ ├── helpers/
|
||
|
│ │ └── *.py
|
||
|
│ └── saberlist/
|
||
|
│ └── *.py
|
||
|
├── tests/
|
||
|
│ ├── assets/
|
||
|
│ └── playlist_builder.py
|
||
|
├── pyproject.toml
|
||
|
└── README.md
|
||
|
```
|
||
|
|
||
|
Here's the clients/beatleader dir:
|
||
|
|
||
|
```
|
||
|
treegit src/clients/beatleader/
|
||
|
src/clients/beatleader/
|
||
|
├── api
|
||
|
│ ├── beast_saber
|
||
|
│ │ ├── beast_saber_get_all.py
|
||
|
│ │ ├── beast_saber_nominate.py
|
||
|
│ │ └── __init__.py
|
||
|
│ ├── clan
|
||
|
│ │ ├── clan_get_all.py
|
||
|
│ │ ├── clan_get_clan_by_id.py
|
||
|
│ │ ├── clan_get_clan.py
|
||
|
│ │ ├── clan_get_clan_with_maps_by_id.py
|
||
|
│ │ ├── clan_get_clan_with_maps.py
|
||
|
│ │ ├── clan_get_history.py
|
||
|
│ │ ├── clan_global_map.py
|
||
|
│ │ └── __init__.py
|
||
|
│ ├── leaderboard
|
||
|
│ │ ├── __init__.py
|
||
|
│ │ ├── leaderboard_get_all.py
|
||
|
│ │ ├── leaderboard_get_clan_rankings.py
|
||
|
│ │ ├── leaderboard_get.py
|
||
|
│ │ └── leaderboard_get_scoregraph.py
|
||
|
│ ├── modifiers
|
||
|
│ │ ├── __init__.py
|
||
|
│ │ └── modifiers_get_modifiers.py
|
||
|
│ ├── patreon
|
||
|
│ │ ├── __init__.py
|
||
|
│ │ └── patreon_refresh_my_patreon.py
|
||
|
│ ├── player
|
||
|
│ │ ├── __init__.py
|
||
|
│ │ ├── player_get_beat_saver.py
|
||
|
│ │ ├── player_get_discord.py
|
||
|
│ │ ├── player_get_followers_info.py
|
||
|
│ │ ├── player_get_followers.py
|
||
|
│ │ ├── player_get_founded_clan.py
|
||
|
│ │ ├── player_get_participating_events.py
|
||
|
│ │ ├── player_get_patreon.py
|
||
|
│ │ ├── player_get_players.py
|
||
|
│ │ ├── player_get.py
|
||
|
│ │ └── player_get_ranked_maps.py
|
||
|
│ ├── player_scores
|
||
|
│ │ ├── __init__.py
|
||
|
│ │ ├── player_scores_acc_graph.py
|
||
|
│ │ ├── player_scores_get_compact_history.py
|
||
|
│ │ ├── player_scores_get_compact_scores.py
|
||
|
│ │ ├── player_scores_get_history.py
|
||
|
│ │ ├── player_scores_get_pinned_scores.py
|
||
|
│ │ ├── player_scores_get_scores.py
|
||
|
│ │ └── player_scores_get_score_value.py
|
||
|
│ ├── song
|
||
|
│ │ ├── __init__.py
|
||
|
│ │ └── song_get_all.py
|
||
|
│ └── __init__.py
|
||
|
├── models
|
||
|
│ ├── __pycache__
|
||
|
│ ├── achievement_description.py
|
||
|
│ ├── achievement_level.py
|
||
|
│ ├── achievement.py
|
||
|
│ ├── badge.py
|
||
|
│ ├── ban.py
|
||
|
│ ├── beasties_nomination.py
|
||
|
│ ├── besties_nomination_response.py
|
||
|
│ ├── clan_bigger_response.py
|
||
|
│ ├── clan_global_map_point.py
|
||
|
│ ├── clan_global_map.py
|
||
|
│ ├── clan_map_connection.py
|
||
|
│ ├── clan_maps_sort_by.py
|
||
|
│ ├── clan_point.py
|
||
|
│ ├── clan.py
|
||
|
│ ├── clan_ranking_response_clan_response_full_response_with_metadata_and_container.py
|
||
|
│ ├── clan_ranking_response.py
|
||
|
│ ├── clan_response_full.py
|
||
|
│ ├── clan_response_full_response_with_metadata.py
|
||
|
│ ├── clan_response.py
|
||
|
│ ├── clan_sort_by.py
|
||
|
│ ├── compact_leaderboard.py
|
||
|
│ ├── compact_leaderboard_response.py
|
||
|
│ ├── compact_score.py
|
||
|
│ ├── compact_score_response.py
|
||
|
│ ├── compact_score_response_response_with_metadata.py
|
||
|
│ ├── compact_song_response.py
|
||
|
│ ├── controller_enum.py
|
||
|
│ ├── criteria_commentary.py
|
||
|
│ ├── difficulty_description.py
|
||
|
│ ├── difficulty_response.py
|
||
|
│ ├── difficulty_status.py
|
||
|
│ ├── event_player.py
|
||
|
│ ├── event_ranking.py
|
||
|
│ ├── external_status.py
|
||
|
│ ├── featured_playlist.py
|
||
|
│ ├── featured_playlist_response.py
|
||
|
│ ├── follower_type.py
|
||
|
│ ├── global_map_history.py
|
||
|
│ ├── history_compact_response.py
|
||
|
│ ├── hmd.py
|
||
|
│ ├── info_to_highlight.py
|
||
|
│ ├── __init__.py
|
||
|
│ ├── leaderboard_change.py
|
||
|
│ ├── leaderboard_clan_ranking_response.py
|
||
|
│ ├── leaderboard_contexts.py
|
||
|
│ ├── leaderboard_group_entry.py
|
||
|
│ ├── leaderboard_info_response.py
|
||
|
│ ├── leaderboard_info_response_response_with_metadata.py
|
||
|
│ ├── leaderboard.py
|
||
|
│ ├── leaderboard_response.py
|
||
|
│ ├── leaderboard_sort_by.py
|
||
|
│ ├── legacy_modifiers.py
|
||
|
│ ├── link_response.py
|
||
|
│ ├── map_diff_response.py
|
||
|
│ ├── map_info_response.py
|
||
|
│ ├── map_info_response_response_with_metadata.py
|
||
|
│ ├── mapper.py
|
||
|
│ ├── mapper_response.py
|
||
|
│ ├── map_quality.py
|
||
|
│ ├── map_sort_by.py
|
||
|
│ ├── maps_type.py
|
||
|
│ ├── metadata.py
|
||
|
│ ├── modifiers_map.py
|
||
|
│ ├── modifiers_rating.py
|
||
|
│ ├── my_type.py
|
||
|
│ ├── operation.py
|
||
|
│ ├── order.py
|
||
|
│ ├── participating_event_response.py
|
||
|
│ ├── patreon_features.py
|
||
|
│ ├── player_change.py
|
||
|
│ ├── player_context_extension.py
|
||
|
│ ├── player_follower.py
|
||
|
│ ├── player_followers_info_response.py
|
||
|
│ ├── player.py
|
||
|
│ ├── player_response_clan_response_full_response_with_metadata_and_container.py
|
||
|
│ ├── player_response_full.py
|
||
|
│ ├── player_response.py
|
||
|
│ ├── player_response_with_stats.py
|
||
|
│ ├── player_response_with_stats_response_with_metadata.py
|
||
|
│ ├── player_score_stats_history.py
|
||
|
│ ├── player_score_stats.py
|
||
|
│ ├── player_search.py
|
||
|
│ ├── player_social.py
|
||
|
│ ├── player_sort_by.py
|
||
|
│ ├── pp_type.py
|
||
|
│ ├── profile_settings.py
|
||
|
│ ├── qualification_change.py
|
||
|
│ ├── qualification_commentary.py
|
||
|
│ ├── qualification_vote.py
|
||
|
│ ├── ranked_mapper_response.py
|
||
|
│ ├── ranked_map.py
|
||
|
│ ├── rank_qualification.py
|
||
|
│ ├── rank_update_change.py
|
||
|
│ ├── rank_update.py
|
||
|
│ ├── rank_voting.py
|
||
|
│ ├── replay_offsets.py
|
||
|
│ ├── requirements.py
|
||
|
│ ├── score_filter_status.py
|
||
|
│ ├── score_graph_entry.py
|
||
|
│ ├── score_improvement.py
|
||
|
│ ├── score_metadata.py
|
||
|
│ ├── score_response.py
|
||
|
│ ├── score_response_with_acc.py
|
||
|
│ ├── score_response_with_my_score.py
|
||
|
│ ├── score_response_with_my_score_response_with_metadata.py
|
||
|
│ ├── scores_sort_by.py
|
||
|
│ ├── song.py
|
||
|
│ ├── song_response.py
|
||
|
│ ├── song_status.py
|
||
|
│ ├── type.py
|
||
|
│ └── voter_feedback.py
|
||
|
├── __pycache__
|
||
|
├── client.py
|
||
|
├── errors.py
|
||
|
├── __init__.py
|
||
|
├── py.typed
|
||
|
└── types.py
|
||
|
|
||
|
13 directories, 158 files
|
||
|
```
|
||
|
|
||
|
Here's the contents of ``:
|
||
|
|
||
|
```python
|
||
|
```
|
||
|
|
||
|
Here our attempt at using this client in ipython:
|
||
|
|
||
|
```python
|
||
|
```
|