2016-02-02 12:36:10 +00:00
|
|
|
# -*- coding: utf-8 -*-
|
2015-11-16 15:30:34 +00:00
|
|
|
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()
|
2016-01-26 18:00:35 +00:00
|
|
|
if len(r) >= 1:
|
|
|
|
return r[0]
|
|
|
|
else:
|
|
|
|
raise NameError
|
2015-11-16 15:30:34 +00:00
|
|
|
|
|
|
|
|
2015-11-16 15:32:43 +00:00
|
|
|
def getuser(user, mode=0):
|
2015-11-16 15:30:34 +00:00
|
|
|
"""Ottieni informazioni su un utente.
|
|
|
|
:param user: Username o ID dell'utente
|
2016-02-02 12:36:10 +00:00
|
|
|
:param mode: Modalita' (0 = osu!, 1 = Taiko, 2 = CtB, 3 = osu!mania)
|
2015-11-16 15:30:34 +00:00
|
|
|
"""
|
|
|
|
parametri = {
|
|
|
|
'k': apikey,
|
|
|
|
'u': user,
|
|
|
|
'm': mode
|
|
|
|
}
|
|
|
|
r = requests.get("https://osu.ppy.sh/api/get_user", params=parametri).json()
|
2016-01-26 18:00:35 +00:00
|
|
|
if len(r) >= 1:
|
|
|
|
return r[0]
|
|
|
|
else:
|
|
|
|
raise NameError
|
2015-11-16 15:30:34 +00:00
|
|
|
|
|
|
|
|
2015-11-16 15:32:43 +00:00
|
|
|
def getscores(beatmap, mode=0, limit=100, user=None):
|
2015-11-16 15:30:34 +00:00
|
|
|
"""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
|
|
|
|
|
|
|
|
|
2015-11-16 15:32:43 +00:00
|
|
|
def getuserbest(user, mode=0):
|
2015-11-16 15:30:34 +00:00
|
|
|
"""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 = {
|
2015-11-16 22:00:17 +00:00
|
|
|
'k': apikey,
|
2015-11-16 15:30:34 +00:00
|
|
|
'u': user,
|
|
|
|
'm': mode,
|
|
|
|
}
|
|
|
|
r = requests.get("https://osu.ppy.sh/api/get_user_best", params=parametri).json()
|
|
|
|
return r
|
|
|
|
|
|
|
|
|
2015-11-16 15:32:43 +00:00
|
|
|
def getuserrecent(user, mode=0):
|
2015-11-16 15:30:34 +00:00
|
|
|
"""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 = {
|
2015-11-16 22:00:17 +00:00
|
|
|
'k': apikey,
|
2015-11-16 15:30:34 +00:00
|
|
|
'u': user,
|
|
|
|
'm': mode,
|
2015-11-19 23:01:14 +00:00
|
|
|
'limit': 1,
|
2015-11-16 15:30:34 +00:00
|
|
|
}
|
|
|
|
r = requests.get("https://osu.ppy.sh/api/get_user_recent", params=parametri).json()
|
2016-01-26 18:00:35 +00:00
|
|
|
if len(r) >= 1:
|
|
|
|
return r[0]
|
|
|
|
else:
|
2016-03-04 15:42:20 +00:00
|
|
|
raise NameError("Errore di osu")
|
2016-02-05 17:19:08 +00:00
|
|
|
|
|
|
|
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
|