• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 07:24
CEST 13:24
KST 20:24
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
Serral wins HomeStory Cup 2914Serral wins Maestros of the Game 243ByuL, and the Limitations of Standard Play3Team Liquid Map Contest #22: Results and Winners7Code S Season 2 (2026): RO4 and Finals Preview12
Community News
Reynor: GSL Loss Wasn't About Preparation Format12[IPSL] Spring 2026 Grand Finals - This Weekend!2Weekly Cups (July 6 - 12): Protoss strike back12BSL Season 22 Full Overview & Conclusion8BSL Season 22 Full Overview & Conclusion8
StarCraft 2
General
Is the larve respawn broken? BGE Stara Zagora to be held again in June 2025 Weekly Cups (July 6 - 12): Protoss strike back Serral wins HomeStory Cup 29 Yamato Cup Series
Tourneys
WardiTV Summer Cup 2026 GSL CK #5 Race War RSL Revival: Season 6 - Qualifiers and Main Event HomeStory Cup 29 Vespene Cup #1 — $300+ USD, July 10
Strategy
[G] Having the right mentality to improve
Custom Maps
New Map Maker - Looking for Advice - Love or Hate Work In Progress Melee Maps [D]RTS in all its shapes and glory <3
External Content
The PondCast: SC2 News & Results Mutation # 534 Burning Evacuation Mutation # 533 Die Together Mutation # 532 Nuclear Family
Brood War
General
BGH Auto Balance -> http://bghmmr.eu/ Etiquete rules in Asl? Pros Debate: Zerg Unfairly Nerfed? (ASL S22 map) screpdb: new Starcraft reporting tool ASL 22 Proposed Map Pool
Tourneys
[IPSL] Spring 2026 Grand Finals - This Weekend! Escore Tournament - Season 3 [Megathread] Daily Proleagues [ASL22] Wildcard Qualifier
Strategy
Fighting Spirit mining rates Simple Questions, Simple Answers Creating a full chart of Zerg builds Relatively freeroll strategies
Other Games
General Games
General RTS Discussion Thread Path of Exile Nintendo Switch Thread Stormgate/Frost Giant Megathread Summer Games Done Quick 2026!
Dota 2
Looking for a Dota Mentor Official 'what is Dota anymore' discussion
League of Legends
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Deck construction bug
TL Mafia
TL Mafia Power Rank NeO.D_StephenKing vs This Guy From 1 Million Dance TL Mafia Community Thread Vanilla Mini Mafia
Community
General
Russo-Ukrainian War Thread US Politics Mega-thread UK Politics Mega-thread YouTube Thread Canadian Politics Mega-thread
Fan Clubs
The IdrA Fan Club The HerO Fan Club!
Media & Entertainment
Anime Discussion Thread [Req][Books] Good Fantasy/SciFi books Movie Discussion! Series you have seen recently...
Sports
2024 - 2026 Football Thread McBoner: A hockey love story Tennis[sport] Formula 1 Discussion TeamLiquid Health and Fitness Initiative For 2023
World Cup 2022
Tech Support
Simple Questions Simple Answers FPS when play League Of Legend on laptop How to clean a TTe Thermaltake keyboard?
TL Community
Northern Ireland Global Starcraft The Automated Ban List
Blogs
Poker (part 2)
Nebuchad
The Experiences We Want and …
TrAiDoS
An Exploration of th…
waywardstrategy
Gauntlet SC2: A Retrospectiv…
Ctone23
ramps on octagon
StaticNine
Funny Nicknames
LUCKY_NOOB
Evil Gacha Games and the…
ffswowsucks
Customize Sidebar...

Website Feedback

Closed Threads



Active: 7980 users

BWSort v0.5 first release

Forum Index > BW General
Post a Reply
Normal
B-royal
Profile Joined May 2015
Belgium1330 Posts
Last Edited: 2018-03-22 23:21:04
March 22 2018 23:07 GMT
#1
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
new BW-player (~E rank fish) twitch.tv/crispydrone || What plays 500 games a season but can't get better? => http://imgur.com/a/pLzf9 <= ||
TelecoM
Profile Blog Joined January 2010
United States10789 Posts
March 23 2018 00:06 GMT
#2
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.
AKA: TelecoM[WHITE] Protoss fighting
fanatacist
Profile Blog Joined August 2007
10319 Posts
March 23 2018 08:08 GMT
#3
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?
Peace~
StylishVODs
Profile Joined December 2005
Sweden5331 Posts
March 23 2018 08:47 GMT
#4
Great!
According to Reach, he is the fastest learner he has ever seen. He start bw only like 2/3 years ago. Infact, his bw history knowledge is so limited, he didn't even know what the map Guillotine was.
fazek42
Profile Blog Joined April 2011
Hungary438 Posts
March 23 2018 10:25 GMT
#5
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.
Cele
Profile Blog Joined December 2008
Germany4016 Posts
March 23 2018 12:11 GMT
#6
Sounds very promising, will test it when i have time! Gj crispy.
Broodwar for life!
PiSan
Profile Blog Joined July 2007
United States160 Posts
March 23 2018 13:52 GMT
#7
Awesome, I've really wanted to do this but balked at parsing the replay format. Nice job! I'll play around with it soon.
[sc1f]eonzerg
Profile Blog Joined February 2010
Belgium7009 Posts
March 24 2018 00:05 GMT
#8
hello crispy,thanks for your work,
however i cant manage to run your program,im using windows 10 [image loading]
What is the app file here ?
dM-White
Profile Joined February 2007
Chile341 Posts
March 24 2018 00:11 GMT
#9
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 [image loading]
What is the app file here ?


ReplayParser.ReplaySorter
Op dM- @West || http://DisturbedMind.net || https://discord.gg/ePERqJp
[sc1f]eonzerg
Profile Blog Joined February 2010
Belgium7009 Posts
Last Edited: 2018-03-24 00:49:05
March 24 2018 00:32 GMT
#10
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.
Leeoku
Profile Joined May 2010
1617 Posts
March 26 2018 21:59 GMT
#11
nice app, and kudos as a fellow learning programmer
SuGo
Profile Joined March 2013
United States681 Posts
Last Edited: 2018-03-26 22:21:08
March 26 2018 22:20 GMT
#12
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.
LG)Sabbath
Profile Blog Joined July 2005
Argentina3024 Posts
March 27 2018 11:57 GMT
#13
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
https://www.twitch.tv/argsabbath/
B-royal
Profile Joined May 2015
Belgium1330 Posts
Last Edited: 2018-03-27 13:23:21
March 27 2018 13:20 GMT
#14
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!

new BW-player (~E rank fish) twitch.tv/crispydrone || What plays 500 games a season but can't get better? => http://imgur.com/a/pLzf9 <= ||
SuGo
Profile Joined March 2013
United States681 Posts
Last Edited: 2018-03-29 04:53:20
March 29 2018 04:37 GMT
#15
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.
B-royal
Profile Joined May 2015
Belgium1330 Posts
April 08 2018 14:28 GMT
#16
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 +

[image loading]
[image loading]


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).
new BW-player (~E rank fish) twitch.tv/crispydrone || What plays 500 games a season but can't get better? => http://imgur.com/a/pLzf9 <= ||
kogeT
Profile Joined September 2013
Poland2042 Posts
April 08 2018 14:30 GMT
#17
This looks very interesting, will give it a try soon.
https://www.twitch.tv/kogetbw
SuGo
Profile Joined March 2013
United States681 Posts
April 08 2018 14:53 GMT
#18
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.
TelecoM
Profile Blog Joined January 2010
United States10789 Posts
April 08 2018 18:06 GMT
#19
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.
AKA: TelecoM[WHITE] Protoss fighting
quirinus
Profile Blog Joined May 2007
Croatia2489 Posts
April 09 2018 04:05 GMT
#20
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][_]
All candles lit within him, and there was purity. | First auto-promoted BW LP editor.
FavoritBW
Profile Joined July 2012
Sweden52 Posts
April 09 2018 04:44 GMT
#21
very helpful tool, gj!
KameZerg
Profile Blog Joined May 2007
Sweden1772 Posts
Last Edited: 2018-11-21 08:45:01
November 21 2018 08:39 GMT
#22
edit: Nevermind i downloaded from the wrong link, sorry for bumping.
asdasdasdasdasd123123123
zerglingling
Profile Joined April 2018
131 Posts
November 21 2018 16:07 GMT
#23
I'd rather have a proper commandline utility that takes arguments and uses the current directory instead of the wizard thing.
That way we could run scripts to clean up our replay dir every now and then.
Not a fan of the super-duper-split assembly or the dependencies either.
Cheesefome
Profile Joined May 2016
314 Posts
November 21 2018 18:39 GMT
#24
Why can't blizzard do stuff like this.
B-royal
Profile Joined May 2015
Belgium1330 Posts
November 21 2018 19:55 GMT
#25
On November 22 2018 01:07 zerglingling wrote:
I'd rather have a proper commandline utility that takes arguments and uses the current directory instead of the wizard thing.
That way we could run scripts to clean up our replay dir every now and then.
Not a fan of the super-duper-split assembly or the dependencies either.


That's a good suggestion. I honestly started this project when I only had been programming for a few months, so naturally it is designed rather poorly and the code itself isn't very elegant either.

I'm still working hard on learning, and am considering rewriting it from scratch. I will take your suggestion to heart.

Also glad to see some people getting use out of this.
new BW-player (~E rank fish) twitch.tv/crispydrone || What plays 500 games a season but can't get better? => http://imgur.com/a/pLzf9 <= ||
SwordSCII
Profile Joined February 2019
17 Posts
March 02 2019 04:36 GMT
#26
This is a really cool tool! Are there any plans on making a similar tool for SC2 replays?
iCCup.Trent
Profile Joined May 2005
Argentina458 Posts
March 03 2019 17:45 GMT
#27
B-royal, really nice stuff. Thank you! How about some practical example use cases in the README?
B-royal
Profile Joined May 2015
Belgium1330 Posts
Last Edited: 2019-03-11 22:58:35
March 11 2019 22:58 GMT
#28
Hello everyone, thanks for some of the kind words. I've actually been working on it again the past 2 weeks.

I've made a new release with an important bug fix for nested sorts and support for renaming replays without sorting.
The tool should work more predictable now. You can find it here: https://github.com/CrispyDrone/BWSort/releases

The next release will include the feature to search for specific replays based on filters and then use these subsets as input for sorting or renaming.

However... Since I began the writing of this tool only a few months after I'd started programming, the code is really bad. This has led to some confusing things.

I've spend some time rethinking about some of the implemented functionality and now have a clearer idea of what I want to support, which will make the program much more understandable towards you guys.

Even so, because of the bad design decisions that haunt the program, I will in fact rewrite it from scratch for a v2.0 release with a much better and more intuitive UI, command line support and some additional features. Right now however, I just wanted to add some useful functionality that you guys can play with.

You can find an updated readme here https://github.com/CrispyDrone/BWSort/blob/dev-old/README.md


On March 04 2019 02:45 iCCup.Trent wrote:
B-royal, really nice stuff. Thank you! How about some practical example use cases in the README?


What kind of examples would you like to see, some good formats for how to rename replays?
new BW-player (~E rank fish) twitch.tv/crispydrone || What plays 500 games a season but can't get better? => http://imgur.com/a/pLzf9 <= ||
Bonyth
Profile Joined August 2010
Poland610 Posts
April 25 2019 14:29 GMT
#29
cannot open the App.config file, please advise.

https://ifotos.pl/zobacz/Screensho_qshxhaw.jpg
B-royal
Profile Joined May 2015
Belgium1330 Posts
October 06 2019 12:05 GMT
#30
On April 25 2019 23:29 Bonyth wrote:
cannot open the App.config file, please advise.

https://ifotos.pl/zobacz/Screensho_qshxhaw.jpg


Hi Bonyth,

What seems to be the issue?
new BW-player (~E rank fish) twitch.tv/crispydrone || What plays 500 games a season but can't get better? => http://imgur.com/a/pLzf9 <= ||
B-royal
Profile Joined May 2015
Belgium1330 Posts
October 06 2019 12:06 GMT
#31
Also as an update:

A few months ago I released version 1.0.

It has some cool new features that you can read about in depth https://github.com/CrispyDrone/BWSort

A short summary:
1. A very flexible templating renaming system
2. Support for previewing sorts and renames
3. Support for filtering replays
4. Support for permanently ignoring replays
5. Backup system
6. Undo/redo support
7. Advanced settings such as "parse on startup".
new BW-player (~E rank fish) twitch.tv/crispydrone || What plays 500 games a season but can't get better? => http://imgur.com/a/pLzf9 <= ||
Normal
Please log in or register to reply.
Live Events Refresh
CrankTV Team League
11:00
Crank Gathers S4: Group Stage
LiquipediaDiscussion
Replay Cast
09:00
KungFu Cup 2026 Week 14
CranKy Ducklings118
LiquipediaDiscussion
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
Lowko246
SortOf 141
DenverSC2 32
StarCraft: Brood War
Calm 7497
Sea 1851
Horang2 560
Jaedong 523
Bisu 507
Zeus 301
BeSt 240
EffOrt 229
Mini 197
Soma 188
[ Show more ]
actioN 149
Snow 142
Last 118
Light 117
Soulkey 114
ToSsGirL 65
Pusan 64
Larva 57
hero 38
Killer 35
sorry 35
Rush 34
Sharp 29
JulyZerg 24
JYJ 16
Bale 15
Sacsri 14
Sexy 13
Yoon 11
ajuk12(nOOB) 10
Barracks 8
HiyA 8
Dota 2
Gorgc3846
Fuzer 173
XcaliburYe90
League of Legends
Doublelift1931
Other Games
B2W.Neo308
crisheroes276
DeMusliM178
OGKoka 172
XaKoH 144
Sick136
Happy100
Organizations
Other Games
gamesdonequick2515
StarCraft: Brood War
Kim Chul Min (afreeca) 901
Other Games
BasetradeTV166
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
[ Show 14 non-featured ]
StarCraft 2
• CranKy Ducklings SOOP88
• StrangeGG 50
• Adnapsc2 13
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
League of Legends
• Jankos2183
Upcoming Events
WardiTV Qualifier
36m
Replay Cast
21h 36m
CrankTV Team League
23h 36m
WardiTV Qualifier
1d
Epic.LAN
1d 1h
Replay Cast
1d 12h
RSL Revival
1d 21h
Clem vs Lambo
Scarlett vs Cure
CranKy Ducklings
1d 22h
Epic.LAN
2 days
IPSL
2 days
Dragon vs Hawk
[ Show More ]
RSL Revival
2 days
Classic vs Trap
herO vs SHIN
Sparkling Tuna Cup
2 days
IPSL
3 days
Bonyth vs Ret
WardiTV Weekly
3 days
Monday Night Weeklies
4 days
PiGosaur Cup
5 days
The PondCast
5 days
Replay Cast
6 days
CrankTV Team League
6 days
Liquipedia Results

Completed

Proleague 2026-07-13
HSC XXIX
Eternal Conflict S2 E2

Ongoing

IPSL Spring 2026
Acropolis #4
CSL 2026 Summer (S21)
KCM Race Survival 2026 Season 3
RSL Revival: Season 6
CranK Gathers Season 4: BW vs SC2 Team League
SCTL 2026 Spring
Stake Ranked Episode 3
XSE Pro League 2026
IEM Cologne Major 2026
Stake Ranked Episode 2
CS Asia Championships 2026
Asian Champions League 2026
IEM Atlanta 2026
PGL Astana 2026
BLAST Rivals Spring 2026

Upcoming

Escore Tournament S3: W3
ASL S22 SEASON OPEN Day 1
Escore Tournament S3: W4
ASL S22 SEASON OPEN Day 2
Escore Tournament S3: W5
CSLAN 4
Blizzard Classic Cup 2026
HSC XXX
SC4ALL II: StarCraft II
Kung Fu Cup 2026 Grand Finals
Light Tournament 2026
Eternal Conflict S2 Finale
Eternal Conflict S2 E3
Logitech G Connect 2026
StarSeries Fall 2026
FISSURE Playground #5
BLAST Open Fall 2026
Esports World Cup 2026
BLAST Bounty Summer 2026
BLAST Bounty Summer Qual
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2026 TLnet. All Rights Reserved.