Oh, right!
I don't think I saw anything about this, but I do think you should be redrawing if the winner has won something in the giveaway before, just so we don't have the chance where 1 person gets 2-3 items. spread the love. 
in other words, if you win something, your other ballots are invalid.
I think this would allow us to spread the love. 
Nah, this draw rewards people who spread around their tickets. You shouldn't be denied the BBv2 just because you already won the stickers.
I just finished making flicking through the data (
https://gist.github.com/nathanrosspowell/74f6be7821ccde362f23c76785c4696f). Here's the JSON results for the draw:
{
"-musubi": {
"count": 11,
"donation": 5.0,
"draws": 1,
"tickets": [
"H",
"H",
"H",
"H",
"H",
"H",
"H",
"H",
"H",
"H",
"H"
]
},
"1swt2gs": {
"count": 3,
"donation": 0.0,
"draws": 2,
"tickets": [
"H",
"J",
"J"
]
},
"3K": {
"count": 6,
"donation": 0.0,
"draws": 3,
"tickets": [
"H",
"H",
"H",
"I",
"I",
"J"
]
},
"Badwrench": {
"count": 4,
"donation": 0.0,
"draws": 3,
"tickets": [
"A",
"G",
"J",
"J"
]
},
"Belfong": {
"count": 3,
"donation": 0.0,
"draws": 1,
"tickets": [
"H",
"H",
"H"
]
},
"Bevo": {
"count": 4,
"donation": 0.0,
"draws": 3,
"tickets": [
"F",
"F",
"H",
"I"
]
},
"Bumbibear": {
"count": 3,
"donation": 0.0,
"draws": 1,
"tickets": [
"G",
"G",
"G"
]
},
"DanielT": {
"count": 3,
"donation": 0.0,
"draws": 1,
"tickets": [
"A",
"A",
"A"
]
},
"Deductivemonkee": {
"count": 6,
"donation": 0.0,
"draws": 1,
"tickets": [
"J",
"J",
"J",
"J",
"J",
"J"
]
},
"Diokhan": {
"count": 3,
"donation": 0.0,
"draws": 1,
"tickets": [
"H",
"H",
"H"
]
},
"Dymloslouire": {
"count": 3,
"donation": 0.0,
"draws": 2,
"tickets": [
"B",
"B",
"D"
]
},
"Elaeagnifolia": {
"count": 11,
"donation": 15.0,
"draws": 1,
"tickets": [
"G",
"G",
"G",
"G",
"G",
"G",
"G",
"G",
"G",
"G",
"G"
]
},
"Elth": {
"count": 4,
"donation": 0.0,
"draws": 2,
"tickets": [
"H",
"H",
"H",
"F"
]
},
"FLFisherman": {
"count": 4,
"donation": 0.0,
"draws": 1,
"tickets": [
"I",
"I",
"I",
"I"
]
},
"Flood": {
"count": 4,
"donation": 0.0,
"draws": 2,
"tickets": [
"F",
"H",
"H",
"F"
]
},
"Incredigasmic": {
"count": 4,
"donation": 0.0,
"draws": 2,
"tickets": [
"J",
"J",
"F",
"F"
]
},
"Jeu": {
"count": 4,
"donation": 1.0,
"draws": 1,
"tickets": [
"H",
"H",
"H",
"H"
]
},
"KetchyKech": {
"count": 4,
"donation": 0.0,
"draws": 1,
"tickets": [
"E",
"E",
"E",
"E"
]
},
"KingRama": {
"count": 3,
"donation": 0.0,
"draws": 1,
"tickets": [
"H",
"H",
"H"
]
},
"Mattc777": {
"count": 3,
"donation": 0.0,
"draws": 1,
"tickets": [
"J",
"J",
"J"
]
},
"Moistgun": {
"count": 6,
"donation": 0.0,
"draws": 1,
"tickets": [
"F",
"F",
"F",
"F",
"F",
"F"
]
},
"Nuum": {
"count": 3,
"donation": 0.0,
"draws": 2,
"tickets": [
"H",
"H",
"J"
]
},
"OBgator": {
"count": 4,
"donation": 0.0,
"draws": 1,
"tickets": [
"H",
"H",
"H",
"H"
]
},
"Prelim": {
"count": 9,
"donation": 0.0,
"draws": 3,
"tickets": [
"H",
"H",
"H",
"C",
"C",
"C",
"C",
"C",
"J"
]
},
"Pwner": {
"count": 4,
"donation": 0.0,
"draws": 4,
"tickets": [
"A",
"D",
"H",
"J"
]
},
"Sifo": {
"count": 9,
"donation": 0.22,
"draws": 1,
"tickets": [
"J",
"J",
"J",
"J",
"J",
"J",
"J",
"J",
"J"
]
},
"Sinanju": {
"count": 8,
"donation": 0.0,
"draws": 1,
"tickets": [
"H",
"H",
"H",
"H",
"H",
"H",
"H",
"H"
]
},
"SixtyLife": {
"count": 3,
"donation": 0.0,
"draws": 1,
"tickets": [
"H",
"H",
"H"
]
},
"Suembeaux": {
"count": 4,
"donation": 0.0,
"draws": 1,
"tickets": [
"H",
"H",
"H",
"H"
]
},
"tinymakesthings": {
"count": 4,
"donation": 0.0,
"draws": 1,
"tickets": [
"A",
"A",
"A",
"A"
]
},
"UTEster750": {
"count": 3,
"donation": 0.0,
"draws": 2,
"tickets": [
"J",
"J",
"F"
]
},
"Waateva": {
"count": 7,
"donation": 0.0,
"draws": 7,
"tickets": [
"A",
"C",
"D",
"E",
"F",
"H",
"J"
]
},
"alexjd99": {
"count": 8,
"donation": 0.0,
"draws": 2,
"tickets": [
"H",
"H",
"H",
"H",
"H",
"F",
"H",
"H"
]
},
"audax989": {
"count": 11,
"donation": 3.0,
"draws": 4,
"tickets": [
"H",
"I",
"J",
"H",
"I",
"J",
"G",
"G",
"G",
"I",
"J"
]
},
"aznairjordan": {
"count": 3,
"donation": 0.0,
"draws": 1,
"tickets": [
"H",
"H",
"H"
]
},
"biocalves": {
"count": 7,
"donation": 10.0,
"draws": 3,
"tickets": [
"H",
"H",
"H",
"H",
"H",
"I",
"J"
]
},
"chancellorr": {
"count": 4,
"donation": 0.0,
"draws": 2,
"tickets": [
"B",
"B",
"B",
"H"
]
},
"chuckdee": {
"count": 7,
"donation": 50.0,
"draws": 1,
"tickets": [
"B",
"B",
"B",
"B",
"B",
"B",
"B"
]
},
"dannrawr": {
"count": 7,
"donation": 3.0,
"draws": 5,
"tickets": [
"H",
"H",
"H",
"G",
"I",
"J",
"A"
]
},
"dasush1m0nstr": {
"count": 4,
"donation": 0.0,
"draws": 2,
"tickets": [
"J",
"H",
"H",
"J"
]
},
"dohbot": {
"count": 4,
"donation": 0.0,
"draws": 2,
"tickets": [
"H",
"H",
"F",
"F"
]
},
"dudeletsgo": {
"count": 7,
"donation": 2.0,
"draws": 5,
"tickets": [
"F",
"G",
"H",
"F",
"G",
"J",
"I"
]
},
"eNrageDSainT": {
"count": 8,
"donation": 0.0,
"draws": 1,
"tickets": [
"E",
"E",
"E",
"E",
"E",
"E",
"E",
"E"
]
},
"eksuen": {
"count": 4,
"donation": 0.0,
"draws": 1,
"tickets": [
"J",
"J",
"J",
"J"
]
},
"emdude": {
"count": 4,
"donation": 0.0,
"draws": 2,
"tickets": [
"B",
"B",
"B",
"H"
]
},
"fendent": {
"count": 4,
"donation": 0.0,
"draws": 3,
"tickets": [
"C",
"H",
"H",
"F"
]
},
"fohat.digs": {
"count": 3,
"donation": 0.0,
"draws": 1,
"tickets": [
"H",
"H",
"H"
]
},
"funderburker": {
"count": 4,
"donation": 0.0,
"draws": 2,
"tickets": [
"I",
"I",
"I",
"H"
]
},
"gain": {
"count": 3,
"donation": 0.0,
"draws": 2,
"tickets": [
"G",
"H",
"H"
]
},
"gh341": {
"count": 7,
"donation": 5.0,
"draws": 1,
"tickets": [
"G",
"G",
"G",
"G",
"G",
"G",
"G"
]
},
"gohono3": {
"count": 9,
"donation": 25.0,
"draws": 1,
"tickets": [
"H",
"H",
"H",
"H",
"H",
"H",
"H",
"H",
"H"
]
},
"graceglee99": {
"count": 4,
"donation": 0.0,
"draws": 2,
"tickets": [
"H",
"H",
"H",
"F"
]
},
"graefeln": {
"count": 7,
"donation": 5.0,
"draws": 1,
"tickets": [
"J",
"J",
"J",
"J",
"J",
"J",
"J"
]
},
"guotastic": {
"count": 4,
"donation": 0.0,
"draws": 2,
"tickets": [
"H",
"H",
"H",
"I"
]
},
"hkf": {
"count": 9,
"donation": 10.0,
"draws": 1,
"tickets": [
"H",
"H",
"H",
"H",
"H",
"H",
"H",
"H",
"H"
]
},
"hojunski": {
"count": 6,
"donation": 0.0,
"draws": 2,
"tickets": [
"H",
"H",
"H",
"H",
"H",
"I"
]
},
"iamtootallforthis": {
"count": 4,
"donation": 0.0,
"draws": 2,
"tickets": [
"H",
"J",
"J",
"J"
]
},
"ika": {
"count": 8,
"donation": 0.0,
"draws": 1,
"tickets": [
"F",
"F",
"F",
"F",
"F",
"F",
"F",
"F"
]
},
"ipreferpie": {
"count": 11,
"donation": 1.0,
"draws": 1,
"tickets": [
"H",
"H",
"H",
"H",
"H",
"H",
"H",
"H",
"H",
"H",
"H"
]
},
"jaejae": {
"count": 6,
"donation": 0.0,
"draws": 1,
"tickets": [
"H",
"H",
"H",
"H",
"H",
"H"
]
},
"jb1830": {
"count": 4,
"donation": 0.0,
"draws": 1,
"tickets": [
"H",
"H",
"H",
"H"
]
},
"joey": {
"count": 3,
"donation": 0.0,
"draws": 1,
"tickets": [
"C",
"C",
"C"
]
},
"juahenza": {
"count": 7,
"donation": 14.44,
"draws": 1,
"tickets": [
"F",
"F",
"F",
"F",
"F",
"F",
"F"
]
},
"kekman": {
"count": 3,
"donation": 0.0,
"draws": 1,
"tickets": [
"I",
"I",
"I"
]
},
"kenmai9": {
"count": 9,
"donation": 5.0,
"draws": 4,
"tickets": [
"A",
"A",
"A",
"A",
"H",
"I",
"J",
"J",
"I"
]
},
"kiwi99": {
"count": 11,
"donation": 4.2,
"draws": 2,
"tickets": [
"J",
"J",
"J",
"I",
"I",
"I",
"J",
"I",
"J",
"I",
"I"
]
},
"laughatpain": {
"count": 4,
"donation": 0.0,
"draws": 1,
"tickets": [
"H",
"H",
"H",
"H"
]
},
"letsjigsrocks": {
"count": 6,
"donation": 0.0,
"draws": 4,
"tickets": [
"A",
"C",
"C",
"E",
"E",
"H"
]
},
"minfun": {
"count": 4,
"donation": 0.0,
"draws": 2,
"tickets": [
"H",
"H",
"H",
"I"
]
},
"mobbo": {
"count": 9,
"donation": 12.0,
"draws": 2,
"tickets": [
"I",
"I",
"I",
"J",
"J",
"J",
"I",
"J",
"J"
]
},
"muon": {
"count": 4,
"donation": 0.0,
"draws": 1,
"tickets": [
"F",
"F",
"F",
"F"
]
},
"myumyu91": {
"count": 6,
"donation": 0.0,
"draws": 4,
"tickets": [
"H",
"H",
"H",
"I",
"J",
"A"
]
},
"nmur": {
"count": 9,
"donation": 10.0,
"draws": 1,
"tickets": [
"I",
"I",
"I",
"I",
"I",
"I",
"I",
"I",
"I"
]
},
"ntw": {
"count": 4,
"donation": 0.0,
"draws": 3,
"tickets": [
"H",
"I",
"J",
"J"
]
},
"nugglets": {
"count": 7,
"donation": 5.0,
"draws": 2,
"tickets": [
"H",
"H",
"H",
"H",
"H",
"J",
"J"
]
},
"qwertydvorakcolemak": {
"count": 3,
"donation": 0.0,
"draws": 1,
"tickets": [
"H",
"H",
"H"
]
},
"rotciveel": {
"count": 9,
"donation": 5.0,
"draws": 4,
"tickets": [
"H",
"H",
"J",
"H",
"H",
"H",
"F",
"F",
"I"
]
},
"rurushu": {
"count": 9,
"donation": 10.0,
"draws": 1,
"tickets": [
"H",
"H",
"H",
"H",
"H",
"H",
"H",
"H",
"H"
]
},
"sek1ne": {
"count": 9,
"donation": 2.0,
"draws": 2,
"tickets": [
"G",
"G",
"G",
"G",
"G",
"G",
"D",
"D",
"D"
]
},
"shugix": {
"count": 6,
"donation": 0.0,
"draws": 4,
"tickets": [
"E",
"E",
"G",
"H",
"J",
"J"
]
},
"sitch": {
"count": 7,
"donation": 1.0,
"draws": 1,
"tickets": [
"H",
"H",
"H",
"H",
"H",
"H",
"H"
]
},
"soilheart": {
"count": 4,
"donation": 0.0,
"draws": 3,
"tickets": [
"B",
"H",
"J",
"H"
]
},
"switchnollie": {
"count": 3,
"donation": 0.0,
"draws": 3,
"tickets": [
"H",
"I",
"J"
]
},
"thecivilcat": {
"count": 4,
"donation": 0.0,
"draws": 3,
"tickets": [
"B",
"G",
"J",
"B"
]
},
"thelectronicnub": {
"count": 7,
"donation": 5.0,
"draws": 3,
"tickets": [
"H",
"H",
"J",
"H",
"H",
"C",
"J"
]
},
"tomboy": {
"count": 4,
"donation": 0.0,
"draws": 3,
"tickets": [
"D",
"H",
"H",
"J"
]
},
"toxicdrift": {
"count": 7,
"donation": 10.0,
"draws": 3,
"tickets": [
"H",
"H",
"H",
"I",
"I",
"I",
"J"
]
},
"vito687": {
"count": 7,
"donation": 5.0,
"draws": 1,
"tickets": [
"H",
"H",
"H",
"H",
"H",
"H",
"H"
]
},
"withoutrulers": {
"count": 3,
"donation": 0.0,
"draws": 2,
"tickets": [
"F",
"F",
"H"
]
},
"xredman": {
"count": 4,
"donation": 0.0,
"draws": 1,
"tickets": [
"I",
"I",
"I",
"I"
]
},
"zcmy": {
"count": 6,
"donation": 0.0,
"draws": 3,
"tickets": [
"B",
"G",
"J",
"G",
"B",
"J"
]
},
"zearoh": {
"count": 7,
"donation": 10.0,
"draws": 1,
"tickets": [
"F",
"F",
"F",
"F",
"F",
"F",
"F"
]
},
"zombiegristle": {
"count": 9,
"donation": 0.0,
"draws": 1,
"tickets": [
"B",
"B",
"B",
"B",
"B",
"B",
"B",
"B",
"B"
]
}
}
Would be cool if someone could pump that into a dope visualisation! I might give it a try later on.
Next post will be the generated results from the script:
import json
import random
# Info per draw
info = {}
with open('info.json', 'r') as in_file:
info = json.load(in_file)
data = {}
# Read in from JSON.
with open('draw.json', 'r') as in_file:
data = json.load(in_file)
draws = {}
# Build shuffled Lists
for draw, entries in data.items():
tickets = []
for user, count in entries.items():
for i in range(count):
tickets.append(user)
random.shuffle(tickets)
draws[draw] = tickets
# Format to txt file.
with open('results.txt', 'w') as out_file:
for draw, tickets in draws.items():
out_file.write("[u]Draw {}[/u]\n\n".format(draw))
out_file.write("[i]{}[/i]\n\n".format(info[draw]))
out_file.write("[b]WINNER: {}[/b]\n\n".format(tickets[0]))
out_file.write("[list type=decimal]\n")
for user in tickets:
out_file.write("[li]{}[/li]\n".format(user))
out_file.write("[/list]\n\n")
Jump into #artisan-corner on slack if you wanna see it LIVE!
