11# MIT License
22
3- # Copyright (c) 2018 Renondedju
3+ # Copyright (c) 2018-2019 Renondedju
44
55# Permission is hereby granted, free of charge, to any person obtaining a copy
66# of this software and associated documentation files (the "Software"), to deal
2020# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2121# SOFTWARE.
2222
23- from pyosu . types import BeatmapGenre , BeatmapApprovedState , GameMode , Language
23+ import datetime
2424
25- from .base import BaseModel
25+ from pyosu .types import BeatmapGenre , BeatmapApprovedState , GameMode , Language
26+ from pyosu .models .base import BaseModel
2627
2728class Beatmap (BaseModel ):
2829 """ Beatmap model """
@@ -32,33 +33,33 @@ def __init__(self, *, api : 'OsuApi' = None, **data):
3233 super ().__init__ (api )
3334
3435 #Api data
35- self .approved = data .get ('approved ' , BeatmapApprovedState . Pending )
36- self .approved_date = data .get ('approved_date ' , "" ) # date ranked, UTC+8 for now
37- self .last_update = data .get ('last_update ' , "" ) # last update date, timezone same as above. May be after approved_date if map was unranked and reranked.
38- self .artist = data .get ('artist ' , "" )
39- self .beatmap_id = data .get ('beatmap_id ' , 0 ) # beatmap_id is per difficulty
40- self .beatmapset_id = data .get ('beatmapset_id ' , 0 ) # beatmapset_id groups difficulties into a set
41- self .bpm = data . get ( 'bpm' , 0.0 )
42- self .creator = data . get ( 'creator' , "" )
43- self .difficultyrating = data .get ('difficultyrating' , 0.0 ) # The amount of stars the map would have ingame and on the website
44- self .diff_size = data .get ('diff_size ' , 0.0 ) # Circle size value (CS )
45- self .diff_overall = data .get ('diff_overall ' , 0.0 ) # Overall difficulty (OD )
46- self .diff_approach = data .get ('diff_approach ' , 0.0 ) # Approach Rate (AR)
47- self .diff_drain = data .get ('diff_drain ' , 0.0 ) # Healthdrain (HP )
48- self .hit_length = data .get ('hit_length ' , 0.0 ) # seconds from first note to last note not including breaks
49- self .source = data .get ('source ' , "" )
50- self .genre_id = data .get ('genre_id ' , BeatmapGenre .Any )
51- self .language_id = data .get ('language_id ' , Language . Any )
52- self .title = data .get ('title' , "" ) # song name
53- self .total_length = data .get ('total_length ' , 0.0 ) # seconds from first note to last note including breaks
54- self .version = data .get ('version ' , "" ) # difficulty name
55- self .file_md5 = data .get ('file_md5 ' , "" ) # md5 hash of the beatmap
56- self .mode = data .get ('mode ' , GameMode . Osu ) # game mode,
57- self .tags = data .get ('tags ' , "" ) # Beatmap tags separated by spaces.
58- self .favourite_count = data .get ('favourite_count' , 0 ) # Number of times the beatmap was favourited.
59- self .playcount = data .get ('playcount ' , 0 ) # Number of times the beatmap was played
60- self .passcount = data .get ('passcount' , 0 ) # Number of times the beatmap was passed, completed (the user didn't fail or retry)
61- self .max_combo = data .get ('max_combo ' , 0 ) # The maximum combo a user can reach playing this beatmap .
36+ self .bpm = float ( data .get ('bpm ' , 0.0 ) )
37+ self .diff_size = float ( data .get ('diff_size ' , 0.0 )) # Circle size value (CS)
38+ self .diff_drain = float ( data .get ('diff_drain ' , 0.0 )) # Healthdrain (HP)
39+ self .hit_length = float ( data .get ('hit_length ' , 0.0 )) # seconds from first note to last note not including breaks
40+ self .diff_overall = float ( data .get ('diff_overall ' , 0.0 )) # Overall difficulty (OD)
41+ self .total_length = float ( data .get ('total_length ' , 0.0 )) # seconds from first note to last note including breaks
42+ self .diff_approach = float ( data . get ( 'diff_approach' , 0.0 )) # Approach Rate (AR )
43+ self .difficultyrating = float ( data . get ( 'difficultyrating' , 0.0 )) # The amount of stars the map would have ingame and on the website
44+ self .mode = int ( data .get ('mode' , GameMode . Osu )) # game mode,
45+ self .approved = int ( data .get ('approved ' , BeatmapApprovedState . Pending ) )
46+ self .genre_id = int ( data .get ('genre_id ' , BeatmapGenre . Any ) )
47+ self .playcount = int ( data .get ('playcount ' , 0 )) # Number of times the beatmap was played
48+ self .passcount = int ( data .get ('passcount ' , 0 )) # Number of times the beatmap was passed, completed (the user didn't fail or retry )
49+ self .max_combo = int ( data .get ('max_combo ' , 0 )) # The maximum combo a user can reach playing this beatmap.
50+ self .beatmap_id = int ( data .get ('beatmap_id ' , 0 )) # beatmap_id is per difficulty
51+ self .language_id = int ( data .get ('language_id ' , Language .Any ) )
52+ self .beatmapset_id = int ( data .get ('beatmapset_id ' , 0 )) # beatmapset_id groups difficulties into a set
53+ self .favourite_count = int ( data .get ('favourite_count' , 0 )) # Number of times the beatmap was favourited.
54+ self .tags = data .get ('tags ' , "" ) # Beatmap tags separated by spaces.
55+ self .title = data .get ('title ' , "" ) # song name
56+ self .source = data .get ('source ' , "" )
57+ self .artist = data .get ('artist ' , "" )
58+ self .version = data .get ('version ' , "" ) # difficulty name
59+ self .creator = data .get ('creator' , "" )
60+ self .file_md5 = data .get ('file_md5 ' , "" ) # md5 hash of the beatmap
61+ self .approved_date = datetime . datetime . strptime ( data .get ('approved_date' , "1970-01-01 00:00:00" ) , "%Y-%m-%d %H:%M:%S" ) # date ranked, UTC+8 for now
62+ self .last_update = datetime . datetime . strptime ( data .get ('last_update ' , "1970-01-01 00:00:00" ) , "%Y-%m-%d %H:%M:%S" ) # last update date, timezone same as above. May be after approved_date if map was unranked and reranked .
6263
6364 async def get_beatmapset (self ):
6465 """ Returns a beatmap collection with every beatmap of the beatmapset """
0 commit comments