Hey you! Do you hate having to meticulously maintain a spreadsheet of votes? Do you hate having to take time out of your life to create a vote count because your entitled players want one? Do you hate having to comb a thread for each and every bold tag just in case there's a vote you may have missed?
What is it?
A C# program that searches a specified thread for votes made between two post numbers, which are then displayed in a votecount.
How does it work?
It parses the HTML that makes up posts and searches them for bold tags with "vote X" inside them and keeps a running tally of who is voting who. Once it's done, it takes this tally and converts it into a votecount.
How do I get my grubby hands on it?
Option A: Download the source code and build it yourself.
Option B: Ask Eco for an already compiled version of the program.
You are strongly recommended against getting the compiled version from anywhere else, because running mystery executables is a Bad Idea. Compiling it yourself is the safest way.
Surprise Option C: Go to the release page of the github repository and download the executable from there!
How do I use it?
Get ahold of the program by asking the previous question
Run the program. This will open up the user interface, which looks like this
Paste the FULL link to the game you want to count votes in. This needs to be the full address (including http://), but should just be the link to the first page of the thread (i.e. don't include the "?page=X" string)
Fill in the start post and end post boxes. All votes made between these two post numbers (inclusive) will be counted: any votes made before or after will not. To get the current vote count, you therefore need to have the starting post number be the start of the current Day (or the post where the vote count was reset), and the ending post the last post made.
Paste your player list into the "Player List" box, with exactly one name on each line. Make sure there are no blank lines or any punctuation. Any votes made must use the EXACT name as it appears in this list, so make sure they're spelled right!
Hit the generate votecount button. This will populate the Vote Count box with the votecount!
When you're finished, it should look something like this:
(This is the first page of Overwatch Mafia. Notice that vote made in #10 hasn't been counted because Seppel isn't on the playerlist!)
What are the limitations?
In order to work, the practise of voting becomes unfortunately restrictive. Any votes that want to be counted must adhere to some rules:
Players have exactly 1 vote (so no multivoters or non-voters)
Players can only be voted for using the exact name that appears in the playerlist (no abbreviations or mispellings)
Unvotes stand alone (not "unvote:player X")
A player cannot vote and then unvote in the same post (we look for unvotes before vote)
Unvote followed by vote must be in different sets of bold tags (so not [b*]unvote, vote X[*/b])
Multiple votes must be made in different sets of bold tags
Is that all it does?
Yes, but there's plenty of capacity for additional features, like counting how many posts a player has made in a game day, or when they last posted. It could also pick up @MOD: requests so you don't have to hunt for them. The program will continue to be actively developed, so let me know if you have any ideas or requests for other features!
Can I help?
The most helpful thing anyone can do is to use the tool and if (when) it breaks or doesn't work as expected, give me as much information as possible so I can fix it! If you're going to use it, let me know!
If you're a developer with some C# knowledge who wants to help, let me know and we can set you up with something. Knowing how to use git would be very helpful, but if you're a developer who doesn't know how to use git, I will teach you for the greater good. If you know how to make GUIs that don't look terrible, that would be great. If any other skillset is interested in helping, drop me a line and we'll sort something out.
Eco, how are you so handsome and talented?
Ancient, evil magic.
KoolKoal: Feel free to take this with a grain of salt since self meta isn't particularly helpful, but I think I get scumread mostly for style over substance, but also for a certain lack of substance over style. It's not so much what I AM posting most of the time (though sometimes that can seem bad) but what I'm NOT posting. I've been told I come to non-obvious conclusions a lot, so when I post, quite a bit of the time there's jumps in logic that people can't follow and they think that's scummy. I get that accusation about a lot of questions I ask specifically. People call them "busy work" when the questions are legit etc.
As far as things to ignore, I can't think of anything. I would suggest you focus less on what I'm doing and more on how I'm doing it. That's probably more likely to be accurate. Like I've just said, what I do tends to come off a little weird, but if you look for how I do it, mindset comes into play and maybe you figure out something useful.
V0.2 has been published, which contains no additional features, but does include a compiled executable, making it significantly easier for everyone to acquire. The release can be found at: https://github.com/Ecophagy/VoteCounter/releases/tag/v0.2 and all you need to do is download VoteCounter.exe and run it!
It's also worth noting that although the tool is intended for hosts, any player can use it to create an accurate votecount! So please please download it, play around with it, recreate your favourite votes counts, break it, and most importantly tell me about it!
2011: Best Mafia Performance (Individual) - Best Newcomer
2012: Best (False?) Role Claim - Worst Town Performance (Group) - Best Mafia Performance (Group) - Best SK Performance - Best Overall Player
2013: Best Non-SK Neutral Performance
2014: Best Town Performance (Individual) - Best Town Performance (Group) - Most Interesting Role - Best Game - Best Overall Player
2015: Worst Mafia Performance (Group) - Best Read
2016: Best Town Performance (Group) - Best Town Player - Best Overall Player
Quick but very important update! The .exe should now actually work: it previously needed a library which is now embedded in the release. There's also a proper license for you legal nerds.
KoolKoal: Feel free to take this with a grain of salt since self meta isn't particularly helpful, but I think I get scumread mostly for style over substance, but also for a certain lack of substance over style. It's not so much what I AM posting most of the time (though sometimes that can seem bad) but what I'm NOT posting. I've been told I come to non-obvious conclusions a lot, so when I post, quite a bit of the time there's jumps in logic that people can't follow and they think that's scummy. I get that accusation about a lot of questions I ask specifically. People call them "busy work" when the questions are legit etc.
As far as things to ignore, I can't think of anything. I would suggest you focus less on what I'm doing and more on how I'm doing it. That's probably more likely to be accurate. Like I've just said, what I do tends to come off a little weird, but if you look for how I do it, mindset comes into play and maybe you figure out something useful.
Here's a handy guide for players to use when formatting posts, with examples. I'll try to keep it updated as the program changes.
#1: When voting, colons (":") are optional but the space (" ") is not.
Correct:
[b]Vote: Silvercrys3467[/b]
Correct:
[b]Vote Silvercrys3467[/b]
Incorrect:
[b]VoteSilvercrys3467[/b]
Incorrect
[b]Vote:Silvercrys3467[/b]
#2: To ensure proper counting of votes, your game host (and anyone else using the votecounter to count votes) must be able to easily identify all of the nicknames people are using to vote each player. For this reason, try to keep nicknames to a minimum and make them obvious.
Correct:
[b]vote: Silvercrys[/b]
[b]vote: Silver[/b]
Incorrect:
[b]vote: Snuffles[/b]
[b]vote: S[/b]
[b]vote: that guy[/b]
#3: If you wish to unvote, simply post unvote. Do not specify which player you wish to unvote.
Correct:
[b]unvote[/b]
Incorrect:
[b]unvote: Silvercrys3467[/b]
--> If you really, really must, there are ways around this limitation.
Correct:
[b]unvote[/b]: Silvercrys3467
[b]unvote[/b][b]: Silvercrys3467[/b]
#4: Do not vote then unvote in the same post. The vote will be counted and the unvote will not.
Incorrect:
[b]vote: Silvercrys3467[/b], [b]unvote[/b]
[b]vote: Silvercrys3467, unvote[/b]
[b]vote: Silvercrys3467[/b]
[b]unvote[/b]
--> If you must do this to bait, as a joke, or whatever make two separate posts.
#5: Unvoting before revoting is optional. If you do this, a comma and space or period and space between your unvote and new vote are permitted but not required. Other punctuation will break your vote.
Correct:
[b]unvote, vote: Silvercrys3467[/b]
[b]unvote. vote: Silvercrys3467[/b]
[b]unvote vote: Silvercrys3467[/b]
[b]unvotevote: Silvercrys3467[/b]
[b]vote: Silvercrys3467[/b]
Incorrect:
[b]unvote - vote: Silvercrys3467[/b]
#6: If you wish to use COLOR tags, they must appear outside of the BOLD tags.
Correct:
[color=blue][b]vote: Silvercrys3467[/b][/color]
Incorrect:
[b][color=blue]vote: Silvercrys3467[/b][/color]
[b][color=blue]vote: Silvercrys3467[/color][/b]
[color=blue][b]vote: Silvercrys3467[/color][/b]
#7: Your vote may not contain spaces inside the BOLD tags other than the space between "vote" or "vote:" and the player's name (as well as between "unvote" and "vote" if you do that).
Correct:
[b]vote: Silvercrys3467[/b]
Incorrect:
[b] vote: Silvercrys3467 [/b]
[b] vote: Silvercrys3467[/b]
[b]vote: Silvercrys3467[/b]
#8: If you break [/quote] tags that contain a vote, your vote will be changed and you must revote after.
Note regarding multivoters: The program assumes each player has only one vote, and will count only the last vote of any multivoter. That is to say, either don't use multivoters (if you're designing a game), or hand count their votes.
Changelog:
23 Jan 2017 - Added rules regarding letter case in usernames, color tags, and breaking quotes.
24 Feb 2017 - spaces in vote tags
06 Jul 2017 - Voting is now case insensitive, nicknames are enabled, "unvote, vote: x" is now valid
01 Jan 2018 - "unvote. vote: x" is now valid
30 Jul 2018 - Spaces are required between the word "vote" or "vote:" and the name of the player you are voting.
Those are all correct, with the additional caveat that I'm not sure I correctly parse multiple votes made in one post. So I'd recommend only making one vote per post.
It's also worth noting that any votes within quote tags are ignored, but if you break quote tags for a quote with a vote in them, that vote WILL be counted. So if you break quote tags, just revote.
Bumping to inform of an exciting new release in the near future, which will feature:
-The ability to save and load games
-The ability to allow voting of player nicknames (Thanks KJ!)
-Allowing the use of Unvote, Vote X in the same set of bold tags
-Added the ability to vote for No Lynch
-Votes now only count if the voter is in the playerlist (so that if someone replaced out without unvoting, their vote will no longer count)
Still taking suggestions/questions/recommendations!
KoolKoal: Feel free to take this with a grain of salt since self meta isn't particularly helpful, but I think I get scumread mostly for style over substance, but also for a certain lack of substance over style. It's not so much what I AM posting most of the time (though sometimes that can seem bad) but what I'm NOT posting. I've been told I come to non-obvious conclusions a lot, so when I post, quite a bit of the time there's jumps in logic that people can't follow and they think that's scummy. I get that accusation about a lot of questions I ask specifically. People call them "busy work" when the questions are legit etc.
As far as things to ignore, I can't think of anything. I would suggest you focus less on what I'm doing and more on how I'm doing it. That's probably more likely to be accurate. Like I've just said, what I do tends to come off a little weird, but if you look for how I do it, mindset comes into play and maybe you figure out something useful.
Contains:
-Nickname support - just use a comma delineated list (without spaces)
-Dynamic Player list size - press return to add a new row, press the "-" to delete one
-Game Save/Load - With the magic of JSON
-UI reshuffle
-Voter validation - The voter must be on the player list for the vote to count
-No Lynch support - NoLynch also accepted
-Added Unvote, Vote X as valid voting pattern - Comma and space optional!
-Basic URL validation
-Votes checking is now case insensitive - No more capital letter slavery!
This version 0.5 update contains:
-A console that lists valid and invalid votes
-Votecount is now sorted descending by votes received, with Not Voting always printing last
-Allowed "Unvote. Vote X" syntax.
-UI reshuffle
I know I haven't been around these forums for a while but I am a dev primarily using C# and I'm familiar with github. If I get a chance I might try and play/work on it.
It's not a Vote Counter update, but I have made a tool that can parse MTGS threads and make a word cloud out of player(s)'s posts. Use responsibly! https://github.com/Ecophagy/MTGSWordCloud
Well worry NO LONGER! Announcing the initial release of Ecophagy's MTGS Mafia Votecounter!
FAQ
What is it?
A C# program that searches a specified thread for votes made between two post numbers, which are then displayed in a votecount.
How does it work?
It parses the HTML that makes up posts and searches them for bold tags with "vote X" inside them and keeps a running tally of who is voting who. Once it's done, it takes this tally and converts it into a votecount.
How do I get my grubby hands on it?
Option A: Download the source code and build it yourself.
Option B: Ask Eco for an already compiled version of the program.
You are strongly recommended against getting the compiled version from anywhere else, because running mystery executables is a Bad Idea. Compiling it yourself is the safest way.
Surprise Option C: Go to the release page of the github repository and download the executable from there!
How do I use it?
(This is the first page of Overwatch Mafia. Notice that vote made in #10 hasn't been counted because Seppel isn't on the playerlist!)
What are the limitations?
In order to work, the practise of voting becomes unfortunately restrictive. Any votes that want to be counted must adhere to some rules:
Is that all it does?
Yes, but there's plenty of capacity for additional features, like counting how many posts a player has made in a game day, or when they last posted. It could also pick up @MOD: requests so you don't have to hunt for them. The program will continue to be actively developed, so let me know if you have any ideas or requests for other features!
Can I help?
The most helpful thing anyone can do is to use the tool and if (when) it breaks or doesn't work as expected, give me as much information as possible so I can fix it! If you're going to use it, let me know!
If you're a developer with some C# knowledge who wants to help, let me know and we can set you up with something. Knowing how to use git would be very helpful, but if you're a developer who doesn't know how to use git, I will teach you for the greater good. If you know how to make GUIs that don't look terrible, that would be great. If any other skillset is interested in helping, drop me a line and we'll sort something out.
Eco, how are you so handsome and talented?
Ancient, evil magic.
The most amazing part is that you were able to parse Curse pages without an API.
Subbing to this thread for updates.
https://twitch.tv/annorax10 (classic retro speedruns & occasional MTGO/MTGA screwaround streams)
https://twitch.tv/SwiftorCasino (yes, my team and I run live dealer games for the baldman using his channel points as chips)
It's also worth noting that although the tool is intended for hosts, any player can use it to create an accurate votecount! So please please download it, play around with it, recreate your favourite votes counts, break it, and most importantly tell me about it!
Was not fun would not recommend. A single post clocks in at 350 lines of HTML.
The Family
{мы, тьма}
2012: Best (False?) Role Claim - Worst Town Performance (Group) - Best Mafia Performance (Group) - Best SK Performance - Best Overall Player
2013: Best Non-SK Neutral Performance
2014: Best Town Performance (Individual) - Best Town Performance (Group) - Most Interesting Role - Best Game - Best Overall Player
2015: Worst Mafia Performance (Group) - Best Read
2016: Best Town Performance (Group) - Best Town Player - Best Overall Player
https://github.com/Ecophagy/VoteCounter/releases/tag/V0.3
(Bounty for Bug #1 goes to KillJoy)
#1: When voting, colons (":") are optional but the space (" ") is not.
#5: Unvoting before revoting is optional. If you do this, a comma and space or period and space between your unvote and new vote are permitted but not required. Other punctuation will break your vote.
Note regarding multivoters: The program assumes each player has only one vote, and will count only the last vote of any multivoter. That is to say, either don't use multivoters (if you're designing a game), or hand count their votes.
Changelog:
23 Jan 2017 - Added rules regarding letter case in usernames, color tags, and breaking quotes.
24 Feb 2017 - spaces in vote tags
06 Jul 2017 - Voting is now case insensitive, nicknames are enabled, "unvote, vote: x" is now valid
01 Jan 2018 - "unvote. vote: x" is now valid
30 Jul 2018 - Spaces are required between the word "vote" or "vote:" and the name of the player you are voting.
It's also worth noting that any votes within quote tags are ignored, but if you break quote tags for a quote with a vote in them, that vote WILL be counted. So if you break quote tags, just revote.
-The ability to save and load games
-The ability to allow voting of player nicknames (Thanks KJ!)
-Allowing the use of Unvote, Vote X in the same set of bold tags
-Added the ability to vote for No Lynch
-Votes now only count if the voter is in the playerlist (so that if someone replaced out without unvoting, their vote will no longer count)
Still taking suggestions/questions/recommendations!
Currently testing: all the things
Testing is fun!
Contains:
-Nickname support - just use a comma delineated list (without spaces)
-Dynamic Player list size - press return to add a new row, press the "-" to delete one
-Game Save/Load - With the magic of JSON
-UI reshuffle
-Voter validation - The voter must be on the player list for the vote to count
-No Lynch support - NoLynch also accepted
-Added Unvote, Vote X as valid voting pattern - Comma and space optional!
-Basic URL validation
-Votes checking is now case insensitive - No more capital letter slavery!
UI Update
Any issues, let me know!
This version 0.5 update contains:
-A console that lists valid and invalid votes
-Votecount is now sorted descending by votes received, with Not Voting always printing last
-Allowed "Unvote. Vote X" syntax.
-UI reshuffle
Happy New Year!
Outdated Mafia Stats