Models

Base

This module contains base models for objects.

class aiordr.models.base.BaseModel
model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

classmethod model_validate_file(path: str) BaseModel

Validates a model from a file.

Parameters:

path (str) – The path to the file

Raises:

TypeError – If the file is not a JSON file

Returns:

The validated model

Return type:

aiordr.models.base.BaseModel

class aiordr.models.base.FrozenModel
model_config: ClassVar[ConfigDict] = {'frozen': True, 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

Renders

This module contains models for renders.

class aiordr.models.render.Render(*, resolution: RenderResolution = RenderResolution.HD_720, globalVolume: int = 50, musicVolume: int = 50, hitsoundVolume: int = 50, showHitErrorMeter: bool = True, showUnstableRate: bool = True, showScore: bool = True, showHPBar: bool = True, showComboCounter: bool = True, showPPCounter: bool = True, showKeyOverlay: bool = True, showScoreboard: bool = True, showBorders: bool = True, showMods: bool = True, showResultScreen: bool = True, useSkinCursor: bool = True, useSkinHitsounds: bool = True, useBeatmapColors: bool = True, cursorScaleToCS: bool = False, cursorRainbow: bool = False, cursorTrailGlow: bool = False, drawFollowPoints: bool = True, drawComboNumbers: bool = True, cursorSize: float = 1.0, cursorTrail: bool = True, scaleToTheBeat: bool = False, sliderMerge: bool = False, objectsRainbow: bool = False, objectsFlashToTheBeat: bool = False, useHitCircleColor: bool = True, seizureWarning: bool = False, loadStoryboard: bool = True, loadVideo: bool = True, introBGDim: int = 0, inGameBGDim: int = 75, breakBGDim: int = 30, BGParallax: bool = False, showDanserLogo: bool = True, skip: bool = True, cursorRipples: bool = False, sliderSnakingIn: bool = True, sliderSnakingOut: bool = True, showHitCounter: bool = False, showAvatarsOnScoreboard: bool = False, showAimErrorMeter: bool = False, playNightcoreSamples: bool = True, renderID: int, date: datetime, username: str, progress: str, renderer: str, description: str, title: str, readableDate: str, isBot: bool, isVerified: bool, replayFilePath: str, videoUrl: str, mapLink: str, mapTitle: str, replayDifficulty: str, replayUsername: str, mapID: int, needToRedownload: bool, skin: str, hasCursorMiddle: bool, motionBlur960fps: bool, renderStartTime: datetime, renderEndTime: datetime, uploadEndTime: datetime, renderTotalTime: int, uploadTotalTime: int, mapLength: int, replayMods: str, removed: bool)
id: int
date: datetime
username: str
progress: str
renderer: str
description: str
title: str
readable_date: str
is_bot: bool
is_verified: bool
replay_file_path: str
video_url: str
map_title: str
replay_difficulty: str
replay_username: str
map_id: int
need_to_redownload: bool
skin: str
has_cursor_middle: bool
motion_blur: bool
render_start_time: datetime
render_end_time: datetime
upload_end_time: datetime
render_total_time: int
upload_total_time: int
map_length: int
replay_mods: str
removed: bool
model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class aiordr.models.render.RenderCreateResponse(*, message: str, renderID: int)
message: str
render_id: int
model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class aiordr.models.render.RenderOptions(*, resolution: RenderResolution = RenderResolution.HD_720, globalVolume: int = 50, musicVolume: int = 50, hitsoundVolume: int = 50, showHitErrorMeter: bool = True, showUnstableRate: bool = True, showScore: bool = True, showHPBar: bool = True, showComboCounter: bool = True, showPPCounter: bool = True, showKeyOverlay: bool = True, showScoreboard: bool = True, showBorders: bool = True, showMods: bool = True, showResultScreen: bool = True, useSkinCursor: bool = True, useSkinHitsounds: bool = True, useBeatmapColors: bool = True, cursorScaleToCS: bool = False, cursorRainbow: bool = False, cursorTrailGlow: bool = False, drawFollowPoints: bool = True, drawComboNumbers: bool = True, cursorSize: float = 1.0, cursorTrail: bool = True, scaleToTheBeat: bool = False, sliderMerge: bool = False, objectsRainbow: bool = False, objectsFlashToTheBeat: bool = False, useHitCircleColor: bool = True, seizureWarning: bool = False, loadStoryboard: bool = True, loadVideo: bool = True, introBGDim: int = 0, inGameBGDim: int = 75, breakBGDim: int = 30, BGParallax: bool = False, showDanserLogo: bool = True, skip: bool = True, cursorRipples: bool = False, sliderSnakingIn: bool = True, sliderSnakingOut: bool = True, showHitCounter: bool = False, showAvatarsOnScoreboard: bool = False, showAimErrorMeter: bool = False, playNightcoreSamples: bool = True)
resolution: RenderResolution
global_volume: int
music_volume: int
hitsound_volume: int
show_hit_error_meter: bool
show_unstable_rate: bool
show_score: bool
show_hp_bar: bool
show_combo_counter: bool
show_pp_counter: bool
show_key_overlay: bool
show_scoreboard: bool
show_borders: bool
show_mods: bool
show_result_screen: bool
use_skin_cursor: bool
use_skin_hitsounds: bool
use_beatmap_colors: bool
cursor_scale_to_cs: bool
cursor_rainbow: bool
cursor_trail_glow: bool
draw_follow_points: bool
draw_combo_numbers: bool
cursor_size: float
cursor_trail: bool
beat_scaling: bool
slider_merge: bool
objects_rainbow: bool
flash_objects: bool
use_slider_hitcircle_color: bool
seizure_warning: bool
load_storyboard: bool
load_video: bool
intro_bg_dim: int
ingame_bg_dim: int
break_bg_dim: int
bg_parallax: bool
skip_intro: bool
cursor_ripples: bool
slider_snaking_in: bool
slider_snaking_out: bool
show_hit_counter: bool
show_avatars_on_scoreboard: bool
show_aim_error_meter: bool
play_nightcore_samples: bool
model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class aiordr.models.render.RenderResolution(value)

An enumeration.

SD_480 = '720x480'
SD_960 = '960x540'
HD_720 = '1280x720'
HD_1080 = '1920x1080'
class aiordr.models.render.RendersResponse(*, renders: list[Render], maxRenders: int)
renders: list[Render]
max_renders: int
model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

Render Servers

This module contains models for render servers.

class aiordr.models.renderserver.RenderServer(*, enabled: bool, lastSeen: datetime, name: str, priority: float, oldScore: float, avgFPS: int, power: str, status: str, totalRendered: int, renderingType: str, cpu: str, gpu: str, motionBlurCapable: bool, usingOsuApi: bool, uhdCapable: bool, avgRenderTime: float, avgUploadTime: float, totalAvgTime: float, totalUploadedVideosSize: int, ownerUserId: int, ownerUsername: str, customization: RenderServerOptions)
enabled: bool
last_seen: datetime
name: str
priority: float
old_score: float
avg_fps: int
power: str
status: str
total_rendered: int
rendering_type: str
cpu: str
gpu: str
motion_blur_capable: bool
using_osu_api: bool
uhd_capable: bool
avg_render_time: float
avg_upload_time: float
total_avg_time: float
total_uploaded_videos_size: int
owner_user_id: int
owner_username: str
customization: RenderServerOptions
model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class aiordr.models.renderserver.RenderServerOptions(*, textColor: str, backgroundType: int)
text_color: str
background_type: int
model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

Skins

This module contains models for skins.

class aiordr.models.skin.Skin(*, id: int, skin: str, presentationName: str, url: str, highResPreview: str, lowResPreview: str, gridPreview: str, hasCursorMiddle: bool, modified: bool, author: str, version: str, timesUsed: int)
id: int
name: str
presentation_name: str
url: str
high_res_preview_url: str
low_res_preview_url: str
grid_preview_url: str
has_cursor_middle: bool
modified: bool
author: str
version: str
times_used: int
model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class aiordr.models.skin.SkinCompact(*, found: bool, removed: bool, message: str, skinName: str, skinAuthor: str, downloadLink: str)
found: bool
removed: bool
message: str
skin_name: str
skin_author: str
model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class aiordr.models.skin.SkinsResponse(*, skins: list[Skin], message: str, maxSkins: int)
skins: list[Skin]
message: str
max_skins: int
model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

Error Codes

This module contains o!rdr API Error Codes.

class aiordr.models.errorcode.ErrorCode(value)

An enumeration.

NO_ERROR = 0
EMERGENCY_STOP = 1
BAD_REPLAY_FILE = 2
REPLAY_DOWNLOAD_FAILED = 3
NO_BEATMAP_SERVER = 4
REPLAY_FILE_CORRUPTED = 5
INVALID_GAMEMODE = 6
NO_REPLAY_INPUT_DATA = 7
NO_BEATMAP_DATA = 8
NO_BEATMAP_AUDIO = 9
OSU_API_ERROR = 10
REPLAY_AUTO_MODE = 11
REPLAY_INVALID_USERNAME = 12
BEATMAP_TOO_LONG = 13
PLAYER_BANNED = 14
UNKNOWN_BEATMAP = 15
IP_BANNED = 16
USERNAME_BANNED = 17
UNKNOWN_RENDER_ERROR = 18
RENDER_DOWNLOAD_FAILED = 19
OLD_BEATMAP_DATA = 20
REPLAY_PARSE_FAILED = 21
FAILED_GENERATING_VIDEO = 22
FAILED_PREPARING_RENDER = 23
NO_BEATMAP_NAME = 24
PARTIAL_REPLAY_INPUT_DATA = 25
REPLAY_INVALID_MODS = 26
RENDER_GENERAL_ERROR = 27
RENDER_REPLAY_DOWNLOAD_FAILED = 28
REPLAY_ALREADY_RENDERED = 29
STAR_RATING_TOO_HIGH = 30
MAPPER_BANNED = 31
BEATMAPSET_BANNED = 32
REPLAY_RECENT_FAIL = 33
INVALID_REPLAY_URL = 34
FIELD_MISSING = 35
TOO_MANY_RECENT_FAILS = 36
INAPPROPRIATE_USERNAME = 37
INVALID_SKIN = 38
INVALID_CUSTOM_SKIN = 39
SERVER_NOT_READY = 40
SERVER_NOT_READY_UNVERIFIED = 41

Events

This module contains models for websocket events.

class aiordr.models.events.RenderAddEvent(*, renderID: int)
model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class aiordr.models.events.RenderBaseEvent(*, renderID: int)
render_id: int
model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class aiordr.models.events.RenderFailEvent(*, renderID: int, errorMessage: str, errorCode: ErrorCode)
model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

error_message: str
error_code: ErrorCode
class aiordr.models.events.RenderFinishEvent(*, renderID: int, videoUrl: str)
model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

video_url: str
class aiordr.models.events.RenderProgressEvent(*, renderID: int, username: str, progress: str, renderer: str, description: str)
username: str

Username of the user who requested the render.

progress: str

Status text of the render process.

renderer: str

Name of the render server.

description: str

Video description.

model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].