1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2024-12-17 23:24:20 +00:00
royalnet/osu.py
2016-03-04 16:42:20 +01:00

153 lines
4 KiB
Python

# -*- coding: utf-8 -*-
import requests
import filemanager
# Importa la API key dal file.
apikey = filemanager.readfile("osuapi.txt")
def getbeatmap(num):
"""Ottieni informazioni su una beatmap.
:param num: ID della beatmap
"""
parametri = {
'k': apikey,
'b': num,
}
r = requests.get("https://osu.ppy.sh/api/get_beatmaps", params=parametri).json()
if len(r) >= 1:
return r[0]
else:
raise NameError
def getuser(user, mode=0):
"""Ottieni informazioni su un utente.
:param user: Username o ID dell'utente
:param mode: Modalita' (0 = osu!, 1 = Taiko, 2 = CtB, 3 = osu!mania)
"""
parametri = {
'k': apikey,
'u': user,
'm': mode
}
r = requests.get("https://osu.ppy.sh/api/get_user", params=parametri).json()
if len(r) >= 1:
return r[0]
else:
raise NameError
def getscores(beatmap, mode=0, limit=100, user=None):
"""Ottieni i migliori 100 punteggi di una beatmap O il punteggio dell'utente specificato
:param beatmap: ID della beatmap
:param mode: Modalità (0 = osu!, 1 = Taiko, 2 = CtB, 3 = osu!mania)
:param limit: Numero di punteggi da ottenere (max 100)
:param user: Utente di cui ottenere i punteggi
"""
parametri = {
'k': apikey,
'b': beatmap,
'u': user,
'm': mode,
'limit': limit,
}
r = requests.get("https://osu.ppy.sh/api/get_scores", params=parametri).json()
return r
def getuserbest(user, mode=0):
"""Ottieni i record di un utente. Immagino siano i punteggi con più pp?
:param user: Username o ID dell'utente
:param mode: Modalità (0 = osu!, 1 = Taiko, 2 = CtB, 3 = osu!mania)
"""
parametri = {
'k': apikey,
'u': user,
'm': mode,
}
r = requests.get("https://osu.ppy.sh/api/get_user_best", params=parametri).json()
return r
def getuserrecent(user, mode=0):
"""Ottieni il punteggio dell'ultima canzone giocata da un utente.
:param user: Username o ID dell'utente
:param mode: Modalità (0 = osu!, 1 = Taiko, 2 = CtB, 3 = osu!mania)
"""
parametri = {
'k': apikey,
'u': user,
'm': mode,
'limit': 1,
}
r = requests.get("https://osu.ppy.sh/api/get_user_recent", params=parametri).json()
if len(r) >= 1:
return r[0]
else:
raise NameError("Errore di osu")
def listmods(n):
"""
Trasforma il valore restituito dall'API di osu! di enabled_mods in una stringa contenente l'elenco corrispondente a
parole.
:param n: Valore da trasformare in stringa
"""
mods = "*Mod:*"
# Dividi in bit l'ID delle mod selezionate usando un bitwise and
# Forse si potrebbe rifare usando la forma esadecimale...?
if int(n) & 0x1:
mods += " NoFail"
if int(n) & 0x2:
mods += " Easy"
if int(n) & 0x4:
mods += " NoVideo (?)"
if int(n) & 0x8:
mods += " Hidden"
if int(n) & 0x10:
mods += " HardRock"
if int(n) & 0x20:
mods += " SuddenDeath"
if int(n) & 0x40:
mods += " DoubleTime"
if int(n) & 0x80:
mods += " Relax"
if int(n) & 0x100:
mods += " HalfTime"
if int(n) & 0x200:
mods += " Nightcore"
if int(n) & 0x400:
mods += " Flashlight"
if int(n) & 0x800:
mods += " Autoplay"
if int(n) & 0x1000:
mods += " SpunOut"
if int(n) & 0x2000:
mods += " Autopilot"
if int(n) & 0x4000:
mods += " Perfect"
if int(n) & 0x8000:
mods += " 4K"
if int(n) & 0x10000:
mods += " 5K"
if int(n) & 0x20000:
mods += " 6K"
if int(n) & 0x40000:
mods += " 7K"
if int(n) & 0x80000:
mods += " 8K"
if int(n) & 0x100000:
mods += " FadeIn"
if int(n) & 0x200000:
mods += " Random"
if int(n) & 0x400000:
mods += " 9K"
if int(n) & 0x800000:
mods += " 10K"
if int(n) & 0x1000000:
mods += " 1K"
if int(n) & 0x2000000:
mods += " 3K"
if int(n) & 0x4000000:
mods += " 2K"
return mods