|
Hello everyone,
The past 6 months I've been working towards becoming a developer. For my first project, I decided to make a small console application to rename and sort/order replays.
here's the github page: https://github.com/CrispyDrone/BWSort
You provide a directory, it will parse all the replays (can include subdirectories), and allow you to both rename them according to a custom format, and order them in a mapping hierarchy.
Currently supported sort criteria:
1) playername 2) map 3) duration 4) matchup 5) gametype
You can combine multiple sort criteria.
Syntax for renaming replays:
1) T[separator] with separator being one char. This will extract the teams from the replay and separate individual players per team using the separator.
2) WT[separator] only extracts the winning team.
3) LT[separator] only extracts the losing team
4) MU gets the matchup
5) M gets the map
6) DU gets the game length
7) D gets the date the game was played on
8) WR extracts the winning race
9) LR extracts the losing race
You have to use | to separate arguments. So for example:
DU|M|WT[_] => will give a replay of the format: 15min13sFightingSpirit(CrispyDrone_Jaedong).rep
To install:
1) clone repository, compile
or
2) download zip file under Releases, extract, run the application file. You will need .net framework 4.6, it might prompt you to install it.
Note: 1. Only 1.18 or later replays are currently supported. I was looking into a way to decompress the PKWARE compressed replay files, but the algorithm used in other parsers didn't make much sense to me. 2. There will be errors for certain criteria like playername. If you specify to make a folder for the winner or for both, but the replay doesn't have a winner, it'll show an error.
another common error is the "unable to distinguish player from observer", which means that not a single player did a build or unit morph action. In most cases, this is a replay of a few seconds long where no player did anything, so you can safely ignore these too. 3. If you move the bad replays to the bad replay folder, it's best to move this folder out of your replay directory or it will be scanned next time you use the tool. 4. Just as point 3, it's best to move sort results out of the directory, else they will also be scanned when you use the tool again.
Known issues: 1. When using multiple sort criteria (nested sort), the sort folder's name will not be in the correct order. 2. The order of the matchup from a replay, and using the T[] argument, will not necessarily be the same (so it could say ZvP, while the first player is the protoss, and the second one the zerg) 3. When using nested sorting, it creates an intermediary folder for each sort criteria, instead of directly adding the result folders. For example: map duration will create the following folders Map,Duration => Fighting spirit => duration => 0-10m instead of Map,Duration => Fighting spirit => 0-10m 4. Teams aren't extracted properly because for most game types the team number is the same for opposing teams... I think I do know a way to fix this.
Towards the future: 1. Bug fixing 2. Allowing the setting of a path for result folders 3. Allowing the setting of a path for the bad replay folder 4. Possibly support for 1.16 5. Fixing team extraction 6. Graphical user interface
Please try it out, and let me know any errors!
Credit to SimplySerenity for porting the replay parser to C#. You can find the original project here: https://github.com/SimplySerenity/SCReplayFileParser
|
Awesome, was hoping for something like this! It is a real bother having to sort through the replays manually all the time with the AutoSaves. Thanks so much for this.
|
I've tried it out and I have to say it has a ton of potential and is already a very useful tool! Much love to B-Royal for this. I hope Blizzard looks into this. Have you posted on their forums about it?
|
|
Petition for B-royal to be hired for the classic games team! People have been asking for this for ages. At least they should buy you out and include this with stock BW Awsome work.
|
Sounds very promising, will test it when i have time! Gj crispy.
|
Awesome, I've really wanted to do this but balked at parsing the replay format. Nice job! I'll play around with it soon.
|
hello crispy,thanks for your work, however i cant manage to run your program,im using windows 10 What is the app file here ?
|
On March 24 2018 09:05 [sc1f]eonzerg wrote:hello crispy,thanks for your work, however i cant manage to run your program,im using windows 10 What is the app file here ?
ReplayParser.ReplaySorter
|
this program is a bit like 1.16 in modern systems,im really trying to make this work cuz im interested but is not that noob friendly.
update: made it works,it feels so good to type a nick in your replay folder and find all the replays,i think the process to get this done is a bit annoying,would have prefered some standard pre build done.
that said mad thanks crispy,i think this is amazing.
|
nice app, and kudos as a fellow learning programmer
|
Can someone just send over the compiled zip? My computer isn't letting me use CSC to compile this for some reason and don't want to spend too much time troubleshooting this. Would love to use this to start finding some replays from ladder. Thanks in advanced.
|
On March 24 2018 09:32 [sc1f]eonzerg wrote: this program is a bit like 1.16 in modern systems,im really trying to make this work cuz im interested but is not that noob friendly.
update: made it works,it feels so good to type a nick in your replay folder and find all the replays,i think the process to get this done is a bit annoying,would have prefered some standard pre build done.
that said mad thanks crispy,i think this is amazing. Can you post the .exe? I don't have VStudio installed
|
Update: v0.6 has been released.
1) One major bug has been fixed where if you didn't move the bad replays, it would result in replays moving to wrong folders/getting wrong names. (Credit to jealous who discovered the bug)
2) Now you will be asked where you want to move the bad replays to, and where you want the sort output to go to. (This might get annoying in a console application. I can make it remember your settings, but in the end a GUI will be necessary to make it an enjoyable experience for everyone.)
3) The github repository has been cleaned up by using a proper .gitignore file.
Thanks everyone for the feedback.
@Eonzerg I realize it isn't very user friendly. The intention will be to make a GUI out of it, but that will still be a lot of work. I do however have some neat ideas that I think will be appreciated. @ProtossGG @LG)Sabbath
You can get the .exe file and its dependencies by going to the release page https://github.com/CrispyDrone/BWSort/releases
The current version is v0.6. Enjoy! Let me know about any bugs you find, any features you would like to see, or just any suggestions you might have!
|
I keep getting "Invalid Criteria" - I even tired your exact argument sorting example DU|M|WT[_] and I still get invalid criteria. Any idea?
EDIT: Figured it out. Testing it out now, will report back any bugs etc. Thanks a lot.
|
Update:
I ported all functionality to a GUI. You can now parse and sort replays more comfortably. You can find the latest release v0.7 - UI (zip file) here https://github.com/CrispyDrone/BWSort/releases
! Important: : I gave the application a try myself on my windows 8 laptop (no judging, have just been too lazy to update it to win10 despite me absolutely hating win8), and for some reason it is running abysmally slow there (10 minutes for maybe 1600 reps lol). I have tried it on my desktop as well, and it also runs considerably slower than my debugging build, but it's still very manageable (parsing 700 replays in 16 seconds).
+ Show Spoiler +I am not sure why it is running so much slower on windows 8. I am also not completely sure why the release build in general is considerably slower than the debugging build. It might have something to do with the fact that I'm targeting any cpu as opposed to just x86 systems? If you happen to know why this might be the case, please let me know!
Some pictures, don't expect anything fancy yet! + Show Spoiler +
Not yet implemented features:
- ignore file/directories
- Menu history
- Edit menu item
- Advanced options
- Help
- Preview sort
- Search tab
- Pool tab
- multithread support for parsing, possibly sorting
- other performance improvements
- bug fixing
Search tab and Pool tab future features in detail:
- The search tab will allow you to search your replay directory for replays satisfying your search criteria.
- You will be able to pool multiple search results together, and save them to a new folder.
- You will be able to preview global sorts
- You will be able to click on replays for detailed information (within the search tab) about the players, map, actions,...
As always let me know about any bugs you might find, any issues you might have, or any features you would like to see (while keeping in my mind the one's I have already planned).
|
This looks very interesting, will give it a try soon.
|
I'm wondering if it's fruitful to have a sorting option that mimics the naming convention of the old ICCUP/ W LAUNCHER from fish. You know... 0001_SuGoP_CrispyZ or whatever it was. Simple and easy and can still search names.
|
Awesome work, going to try it out now that you have the GUI set up so it is more user friendly, thanks for your work.
|
Good work!
You should probably add an option to only use the first X characters of player name/map, eg. for first 8 chars: M[8]|WT[8][_]
|
|
|
|