Ejemplo n.º 1
0
def return_beatmap(mod_s, file_name):
    try:
        file = requests.get(b_info.main(file_name)).text.splitlines()
    except:
        print("ERROR: " + file_name + " not a valid beatmap")
        sys.exit(1)

    map = Beatmap(file)

    mod.dt = 0
    mod.ez = 0
    mod.fl = 0
    mod.hd = 0
    mod.hr = 0
    mod.ht = 0
    mod.nc = 0
    mod.nf = 0
    mod.so = 0

    if mod_s != "":
        mod_s = [mod_s[i:i + 2] for i in range(0, len(mod_s), 2)]
        for m in mod_s:
            set_mods(mod, m)
            mod.update()

    map.apply_mods(mod)

    return map
Ejemplo n.º 2
0
def return_values(c100_s, c50_s, misses_s, combo_s, file_name, mod_s):
    try:
        file = requests.get(b_info.main(file_name)).text.splitlines()
    except:
        print("ERROR: " + file_name + " not a valid beatmap")
        sys.exit(1)

    map = Beatmap(file)

    if combo_s == "":
        combo = map.max_combo
    else:
        combo = int(combo_s)

    mod_s = mod_s.upper()

    mod.dt = 0
    mod.ez = 0
    mod.fl = 0
    mod.hd = 0
    mod.hr = 0
    mod.ht = 0
    mod.nc = 0
    mod.nf = 0
    mod.so = 0

    if mod_s != "":
        mod_s = [mod_s[i:i + 2] for i in range(0, len(mod_s), 2)]
        for m in mod_s:
            set_mods(mod, m)
            mod.update()

    if c100_s == "":
        c100 = 0
    else:
        c100 = int(c100_s)

    if c50_s == "":
        c50 = 0
    else:
        c50 = int(c50_s)

    if misses_s == "":
        misses = 0
    else:
        misses = int(misses_s)

    mod_string = mod_str(mod)
    map.apply_mods(mod)
    diff = diff_calc.main(map)
    pp, aim_value, speed_value, acc_value = pp_calc.pp_calc(diff[0], diff[1], diff[3], misses, c100, c50, mod, combo)

    return pp
Ejemplo n.º 3
0
    def load_from_score_info(self, score_info):
        self.beatmap_id = int(score_info["beatmap_id"])
        self.score_id = int(score_info["score_id"])
        self.score = int(score_info["score"])
        self.maxcombo = int(score_info["maxcombo"])
        self.count50 = int(score_info["count50"])
        self.count100 = int(score_info["count100"])
        self.count300 = int(score_info["count300"])
        self.countmiss = int(score_info["countmiss"])
        self.countkatu = int(score_info["countkatu"])
        self.countgeki = int(score_info["countgeki"])
        self.perfect = bool(int(score_info["perfect"]))
        self.enabled_mods = val_to_mod_list(int(score_info["enabled_mods"]))
        self.rank = score_info["rank"]
        self.user_id = int(score_info["user_id"])
        self.date = score_info["date"]
        self.rank = score_info["rank"]
        self.pp = float(score_info["pp"])
        self.replay_available = bool(int(score_info["replay_available"]))

        #following are supplementary information
        self.available_mods = []
        for mod in self.enabled_mods:
            if mod in [
                    AllMods.Easy, AllMods.HardRock, AllMods.DoubleTime,
                    AllMods.HalfTime
            ]:
                self.available_mods.append(mod)
        self.beatmap = Beatmap(map_id=self.beatmap_id,
                               mod_list=self.available_mods)
        self.acc = calculate_pp.acc_calc(self.count300, self.count100,
                                         self.count50, self.countmiss)
Ejemplo n.º 4
0
 def from_reader(r: Reader):
     db = Database()
     db.version = r.read_int32()
     db.folder_count = r.read_int32()
     db.account_unlocked = r.read_boolean()
     db.unlock_date = r.read_ticks()
     db.username = r.read_string()
     db.beatmap_count = r.read_int32()
     db.beatmaps = [Beatmap.from_reader(r) for x in range(db.beatmap_count)]
     db.user_level = r.read_int16()
     return db
Ejemplo n.º 5
0
def process_osu_files(map_dir) -> List[Beatmap]:
    folder_name = os.path.basename(map_dir)
    map_files = [
        os.path.join(map_dir, f) for f in os.listdir(map_dir)
        if f.endswith('.osu')
    ]
    beatmaps = []
    for map_file in map_files:
        beatmap = Beatmap.from_osu_file(map_file, folder_name)
        beatmaps.append(beatmap)
    return beatmaps
Ejemplo n.º 6
0
def return_values(c100, c50, misses, combo, map_id, mod_s):
    try:
        file = requests.get(
            "https://osu.ppy.sh/osu/{}".format(map_id)).text.splitlines()
    except:
        print("ERROR: " + file_name +
              " not a valid beatmap or API key is incorrect")
        sys.exit(1)

    map = Beatmap(file)

    mod.dt = 0
    mod.ez = 0
    mod.fl = 0
    mod.hd = 0
    mod.hr = 0
    mod.ht = 0
    mod.nc = 0
    mod.nf = 0
    mod.so = 0

    if mod_s != 0:
        set_mods(mod, mod_s)
        mod.update()

    mod_string = mod_str(mod)
    map.apply_mods(mod)
    diff = diff_calc.main(map)
    pp = pp_calc.pp_calc(diff[0], diff[1], diff[3], misses, c100, c50, mod,
                         combo)

    title = map.artist + " - " + map.title + "[" + map.version + "]"
    if mod_string != "":
        title += "+" + mod_string
    title += " (" + map.creator + ")"

    return (str(title), pp[0].pp)
Ejemplo n.º 7
0
except:
    raise Exception("Invalid config")
try:
    file_name = args.file
    if feature:
        if key == "":
            print("Please enter an API key to use this feature.")
            raise ()
        file = requests.get(b_info.main(file_name, key)).text.splitlines()
    else:
        file = open(file_name)
except:
    print("ERROR: " + file_name +
          " not a valid beatmap or API key is incorrect")
    sys.exit(1)
map = Beatmap(file)
if combo == 0 or combo > map.max_combo:
    combo = map.max_combo


def mod_str(mod):
    string = ""
    if mod.nf:
        string += "NF"
    if mod.ez:
        string += "EZ"
    if mod.hd:
        string += "HD"
    if mod.hr:
        string += "HR"
    if mod.dt:
Ejemplo n.º 8
0
def return_values(c100_s, c50_s, misses_s, combo_s, file_name, mod_s,
                  balancing_values):
    try:
        file = requests.get(b_info.main(file_name)).text.splitlines()
    except:
        print("ERROR: " + file_name + " not a valid beatmap")
        sys.exit(1)

    map = Beatmap(file)

    if combo_s == "":
        combo = map.max_combo
    else:
        combo = int(combo_s)

    mod_s = mod_s.upper()

    mod.dt = 0
    mod.ez = 0
    mod.fl = 0
    mod.hd = 0
    mod.hr = 0
    mod.ht = 0
    mod.nc = 0
    mod.nf = 0
    mod.so = 0

    if mod_s != "":
        mod_s = [mod_s[i:i + 2] for i in range(0, len(mod_s), 2)]
        for m in mod_s:
            set_mods(mod, m)
            mod.update()

    if c100_s == "":
        c100 = 0
    else:
        c100 = int(c100_s)

    if c50_s == "":
        c50 = 0
    else:
        c50 = int(c50_s)

    if misses_s == "":
        misses = 0
    else:
        misses = int(misses_s)

    mod_string = mod_str(mod)
    map.apply_mods(mod)
    diff = diff_calc.main(map, balancing_values)
    pp, aim_value, speed_value, acc_value, length_bonus, new_length_bonus, speed_length = pp_calc.pp_calc(
        diff[0], diff[1], diff[3], diff[4], diff[5], misses, c100, c50, mod,
        combo)

    title = map.artist + " - " + map.title + "[" + map.version + "]"
    if mod_string != "":
        title += "+" + mod_string
    title += " (" + map.creator + ")\n"
    map_s = "Map: {}\n".format(title)
    difficulty_settings = "AR: {:.2f} CS: {:.2f} OD: {:.2f}\n".format(
        map.ar, map.cs, map.od)
    stars = "Stars: {:.2f}\n".format(diff[2])
    acc = "Acc: {:.2f}%\n\n".format(pp.acc_percent)
    circle_s = "Circles: {}\n".format(map.num_circles)
    slider_s = "Sliders: {}\n".format(map.num_sliders)
    spinner_s = "Spinners: {}\n".format(map.num_spinners)
    object_s = "Objects: {}\n\n".format(map.num_objects)
    comb_s = "Combo: {}/{}\n".format(int(combo), int(map.max_combo))
    miss_s = "Misses: {}\n\n".format(misses)
    aim_vs = "Aim Value: {:.2f}PP\n".format(aim_value)
    speed_vs = "Speed Value: {:.2f}PP\n".format(speed_value)
    acc_vs = "Acc Value: {:.2f}PP\n\n".format(acc_value)
    aim_ts = "Aim Total Value: {:.0f}\n".format(diff[6][1])
    speed_ts = "Speed Total Value: {:.0f}\n\n".format(diff[7][1])
    length_os = "Old Length Bonus: {:.4f}\n".format(length_bonus)
    length_as = "New Length Bonus: {:.4f}\n\n".format(new_length_bonus)
    pp_s = "Performance: {:.2f}PP\n".format(pp.pp)

    return (map_s + difficulty_settings + stars + acc + circle_s + slider_s +
            spinner_s + object_s + comb_s + miss_s + aim_vs + speed_vs +
            acc_vs + aim_ts + speed_ts + length_os + length_as + pp_s)