ppy / osu-tools Goto Github PK
View Code? Open in Web Editor NEWcommand line tools to get stuff done
License: MIT License
command line tools to get stuff done
License: MIT License
I ran the profile command on Mismagius's profile, and I ran into an error after 1 of the maps downloaded. The last map that was downloaded was this map which seems to be an empty .osu file Upon Inspection:
The error that was given was this as a result:
Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.IOException: Unknown file format (null)
at osu.Game.Beatmaps.Formats.Decoder.GetDecoder[T](StreamReader stream) in A:\Users\oykxf\Documents\osu-tools\osu\osu.Game\Beatmaps\Formats\Decoder.cs:line 60
at PerformanceCalculator.ProcessorWorkingBeatmap.readFromFile(String filename) in A:\Users\oykxf\Documents\osu-tools\PerformanceCalculator\ProcessorWorkingBeatmap.cs:line 44
at PerformanceCalculator.ProcessorWorkingBeatmap..ctor(String file, Nullable`1 beatmapId) in A:\Users\oykxf\Documents\osu-tools\PerformanceCalculator\ProcessorWorkingBeatmap.cs:line 25
at PerformanceCalculator.Profile.ProfileCommand.Execute() in A:\Users\oykxf\Documents\osu-tools\PerformanceCalculator\Profile\ProfileCommand.cs:line 63
at PerformanceCalculator.ProcessorCommand.OnExecute(CommandLineApplication app, IConsole console) in A:\Users\oykxf\Documents\osu-tools\PerformanceCalculator\ProcessorCommand.cs:line 26
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at McMaster.Extensions.CommandLineUtils.Conventions.ExecuteMethodConvention.Invoke(MethodInfo method, Object instance, Object[] arguments) in C:\projects\commandlineutils\src\CommandLineUtils\Conventions\ExecuteMethodConvention.cs:line 86
at McMaster.Extensions.CommandLineUtils.Conventions.ExecuteMethodConvention.<OnExecute>d__1.MoveNext() in C:\projects\commandlineutils\src\CommandLineUtils\Conventions\ExecuteMethodConvention.cs:line 64
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at McMaster.Extensions.CommandLineUtils.Conventions.ExecuteMethodConvention.<>c__DisplayClass0_0.<<Apply>b__0>d.MoveNext() in C:\projects\commandlineutils\src\CommandLineUtils\Conventions\ExecuteMethodConvention.cs:line 25
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at McMaster.Extensions.CommandLineUtils.CommandLineApplication.<>c__DisplayClass126_0.<OnExecute>b__0() in C:\projects\commandlineutils\src\CommandLineUtils\CommandLineApplication.cs:line 505
at McMaster.Extensions.CommandLineUtils.CommandLineApplication.Execute[TApp](CommandLineContext context) in C:\projects\commandlineutils\src\CommandLineUtils\CommandLineApplication.Execute.cs:line 31
at PerformanceCalculator.Program.Main(String[] args) in A:\Users\oykxf\Documents\osu-tools\PerformanceCalculator\Program.cs:line 27
#150 fixes HD for std:
But taiko and catch still don't show hidden.
It isn't just visual either, the pp is calculated as if the score didn't have hidden enabled.
The profile command currently uses APIv1. This tool should eventually be converted to APIv2 (see: https://docs.ppy.sh) to allow calculation of a larger set of the user's top scores.
This should not be a thing
Commands such as dotnet run -- simulate osu 165967 -m BL
don't work correctly at the moment, since mods are trimmed by LegacyHelper
.
I'm getting around this locally at the moment by removing the relevant method. Smoogi seemed certain that this would break calculation however I can confirm that osu-tools functions just fine without the method? I can PR the linked branch however I really doubt that this is the correct way to solve this.
when I type
dotnet PerformanceCalculator.dll
into Powershell, it returns with
No executable found matching command "dotnet-PerformanceCalculator.dll"
where do I go from here?
Example: dotnet PerformanceCalculator.dll simulate catch ./cache/1113356.osu -j
will return a json object which includes a beatmap field with value: "Various Artists - The Seven Deadly Sins Series Maps Compilation (CLSW) [Chapter II. Leviathan, The "Invidia" (Pet Peeve)]"
The difficulty name contains unescaped double quotes. Because of this, the entire json is invalid
The beatmap was https://osu.ppy.sh/beatmapsets/331833#mania/745327
I ran dotnet .\PerformanceCalculator.dll difficulty "C:\Users\yinmi\Downloads\331833 Electric Joy Ride & Fusk Asker - Coco\Electric Joy Ride & Fusk Asker - Coco (c36098651) [BPM0].osu"
in pwsh and PerformanceCalculator was going to eat all my memory, not stopping. I had to stop it using Ctrl+C.
I'm wondering if it's possible to build VINXIS/osu version of the pp calculations?
Broke after the recent change: #110 (comment)
I am getting this response when running the simulate command:
Usage of commas and dots does not make any sense at all. In the pp and accuracy fields the comma is a thousands separator, while in all other fields it's used as a decimal separator. Max combo will never have decimals so it's irrelevant there.
As a sidenote it would be cool if accuracy and accuracy pp could have different labels instead of both being labeled "accuracy".
osu-tools only supports
<TargetFramework>netcoreapp2.0</TargetFramework>
but osu repo which is used by this repo needs <TargetFramework>netstandard2.1</TargetFramework>
which is included only in .NET Core 3.0+
Resulting in this error when trying to run
dotnet run -- simulate osu "C:\Users\Korn\AppData\Local\osu!\Songs\1116349 Ariabl'eyeS - Kegare Naki Bara Juuji\Ariabl'eyeS - Kegare Naki Bara Juuji (Reform) [Anguish].osu " -a 98.96 -m hr -m hd -o whitecatkegare.txt
C:\Users\Korn\osu-tools\PerformanceCalculator\PerformanceCalculator.csproj : error NU1201: Project osu.Game.Rulesets.Catch is not compatible with netcoreapp2.0 (.NETCoreApp,Version=v2.0). Project osu.Game.Rulesets.Catch supports: netstandard2.1 (.NETStandard,Version=v2.1)
I gave a try locally to the simulate tool and ran into a problem while simulating a play on a map (here named map.osu
).
The JSON output is incorrect because - I believe - some attributes get overriden by each other.
Here, take a look at the normal command WITHOUT --json
flag:
dotnet run --project PerformanceCalculator.csproj --configuration Release -- simulate osu map.osu -m:HD -m:HR -G:5
xi - FREEDOM DiVE (Nakagawa-Kanon) [FOUR DIMENSIONS]
Accuracy : 99.83190452176837%
Combo : 2385 (100%)
Great : 1978
Ok : 5
Meh : 0
Miss : 0
Mods : HD, HR
Aim : 282.549316567955
Speed : 382.89578323239095
Accuracy : 222.7765006385657
Flashlight : 0
OD : 10
AR : 10
Max Combo : 2385
pp : 902.472286786258
We can see that there are two Accuracy
values, but as JSON requires key unicity, when I add the --json
flag, the output becomes:
dotnet run --project PerformanceCalculator.csproj --configuration Release -- simulate osu map.osu -m:HD -m:HR -G:5 --json
{
"Beatmap": "xi - FREEDOM DiVE (Nakagawa-Kanon) [FOUR DIMENSIONS]",
"Accuracy": 222.7765006385657,
"Combo": 2385.0,
"Great": 1978.0,
"Ok": 5.0,
"Meh": 0.0,
"Miss": 0.0,
"Mods": "HD, HR",
"Aim": 282.549316567955,
"Speed": 382.89578323239095,
"Flashlight": 0.0,
"OD": 10.0,
"AR": 10.0,
"Max Combo": 2385.0,
"pp": 902.472286786258
}
And I feel like the first key Accuracy
(99.83190452176837%
) got overriden by the second Accuracy
key (222.7765006385657
) which ends up in an absurd result that is > 100%.
I wanted to check pp changes on one my map, but max combo is being shown wrong
https://osu.ppy.sh/beatmapsets/2019978 there is 1025 max combo but perfcalc shows 725 or maybe i'm doing something wrong
Currently, trying to calculate the difficulty for a folder of .osu files can cause the process to crash halfway through because there's one map throwing an error during calculation. This also happens with the current archive of all ranked/loved/approved .osu files from https://data.ppy.sh/.
Instead, it should continue running with a notice that there was an error with this map.
There seems to be some platform differences causing pp calculations to differ between Windows and Linux/macOS systems.
For example Idke's score on https://osu.ppy.sh/b/1201636?m=0 results in ~720pp on Windows, and the expected ~718pp on Linux/macOS.
This is probably an issue with the .NET Core runtime itself and will require further investigation + possibly reporting to the dotnet team.
Last month the project switched to .NET 6.0 and the only Visual Studio version that supports that is VS 2022. The readme still states .NET 5.0 as a requirement and still refers to "Visual Studio 2017+".
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.