Last active
October 22, 2019 18:15
-
-
Save kms70847/b97968f7be8d6f08b5a281007532b899 to your computer and use it in GitHub Desktop.
Gold Badge Counter
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import requests | |
import base64 | |
import os | |
import pickle | |
import time | |
import re | |
import json | |
from bs4 import BeautifulSoup as BS | |
MIN_TIME_BETWEEN_REQUESTS = 10 | |
CACHED_DATA_DIRECTORY = "res" | |
def filename_sanitize(s): | |
""" | |
Enocode `s` to a form that is (mostly) safe to use as a filename. | |
This may still fail, for example if the encoded form exceeds Windows' maximum allowable filename length of 255. | |
""" | |
return base64.urlsafe_b64encode(s.encode()).decode("ascii") | |
_last_request_time = 0 | |
def rate_limited_get(url): | |
""" | |
get a response for the given url, but possibly sleep first so the server doesn't get flooded | |
""" | |
global _last_request_time | |
elapsed_time = time.time() - _last_request_time | |
if elapsed_time < MIN_TIME_BETWEEN_REQUESTS: | |
print(f"Rate-limiting request, since {elapsed_time} seconds have elapsed since the last one") | |
time.sleep(MIN_TIME_BETWEEN_REQUESTS - elapsed_time) | |
_last_request_time = time.time() | |
return requests.get(url) | |
def get_or_load(url): | |
""" | |
get the html of the given url, and store the data in the CACHED_DATA_DIRECTORY directory so we don't have to use bandwidth to fetch it again later. | |
""" | |
filename = filename_sanitize(url) + ".html" | |
filename = os.path.join(CACHED_DATA_DIRECTORY, filename) | |
if os.path.exists(filename): | |
with open(filename, "rb") as file: | |
return file.read() | |
else: | |
print(f"Requesting url {url}...") | |
response = rate_limited_get(url) | |
response.raise_for_status() | |
data = response.content | |
with open(filename, "wb") as file: | |
file.write(data) | |
return data | |
def get_active_rooms(num_pages=1): | |
""" | |
gets a list of the most active chat rooms. | |
Arguments: | |
num_pages - optional, with default value 1. Number of pages of room listings to scan. Each page contains at most 20 rooms | |
Returns: | |
a list of dicts with the keys "name" and "href". The href points to the chat room's info page, rather than the actual chatroom. | |
""" | |
results = [] | |
for i in range(1, num_pages+1): | |
url = f"https://chat.stackoverflow.com/?tab=all&sort=active&page={i}" | |
html = get_or_load(url) | |
soup = BS(html, "html.parser") | |
for span in soup.find_all(class_ = "room-name"): | |
a = span.find("a") | |
results.append({ | |
"name": a.text, | |
#the raw href looks like "/rooms/6/python", but we actually want "/rooms/info/6/python" | |
"href": a["href"].replace("/rooms/", "/rooms/info/"), | |
}) | |
return results | |
def get_regulars(room): | |
""" | |
gets all of the regular users of the given room. | |
Arguments: | |
room - a string representing a relative url, for example "/rooms/info/7/c" | |
Returns: | |
a list of dicts with the keys "name" and "href" | |
""" | |
id = re.match(r"/rooms/info/(\d+)/", room).group(1) | |
url = f"https://chat.stackoverflow.com{room}?id={id}&tab=general&users=frequent" | |
html = get_or_load(url) | |
soup = BS(html, "html.parser") | |
results = [] | |
for a in soup.find(id="room-usercards-container").find_all(class_="username"): | |
results.append({ | |
"name": a.text, | |
"href": a["href"], | |
}) | |
return results | |
def get_tag_badges(user): | |
""" | |
gets all of the tag badges of the given user. | |
Arguments: | |
user - a string representing a relative url, for example "/users/2764866/wietlol" | |
Returns: | |
a list of (tagname, grade) tuples. grade is either "bronze", "silver", or "gold". | |
""" | |
results = [] | |
url = f"https://stackoverflow.com{user}/?tab=badges" | |
html = get_or_load(url) | |
soup = BS(html, "html.parser") | |
for badge in soup.find(class_="user-badges").find_all(class_="badge-tag"): | |
grade = badge["title"].partition(" ")[0] | |
assert grade in ("bronze", "silver", "gold") | |
tag = badge.text.strip() | |
results.append((tag, grade)) | |
return results | |
def get_room_tags(room): | |
""" | |
gets all of the names of the tags in the room's description. | |
Arguments: | |
room - a stting representing a relative url, for example "/rooms/info/7/c" | |
Returns: | |
a list of strings, for example `['.net', 'asp.net', 'asp.net-mvc', 'c#', 'coreclr', 'entity-framework', 'linq', 'visual-studio', 'wcf', 'wpf', 'xamarin']` | |
""" | |
url = "https://chat.stackoverflow.com" + room | |
html = get_or_load(url) | |
soup = BS(html, "html.parser") | |
return [tag.text.strip() for tag in soup.find_all(class_="tag")] | |
def get_all_room_data(): | |
data = {"rooms": []} | |
print("Fetching active rooms...") | |
rooms = get_active_rooms(4) | |
room = rooms[0] | |
print(f"Fetched.") | |
for room_idx, room in enumerate(rooms, 1): | |
print(f"Examining room {room['name']} ({room_idx}/{len(rooms)}).") | |
tags = get_room_tags(room['href']) | |
room["tags"] = tags | |
users = get_regulars(room['href']) | |
room["users"] = [] | |
for user_idx, user in enumerate(users, 1): | |
print(f" Examining user {user['name']} ({user_idx}/{len(users)}).") | |
tags = get_tag_badges(user['href']) | |
user["tag_badges"] = tags | |
room["users"].append(user) | |
data["rooms"].append(room) | |
return data | |
if not os.path.exists(CACHED_DATA_DIRECTORY): | |
os.mkdir(CACHED_DATA_DIRECTORY) | |
data = get_all_room_data() | |
print("Saving data...") | |
with open("result.json", "w") as file: | |
json.dump(data, file, indent=4) | |
print("Saved.") | |
with open("result.json") as file: | |
data = json.load(file) | |
for room in data["rooms"]: | |
gold_users = 0 | |
for user in room["users"]: | |
gold_badges = [name for name, grade in user["tag_badges"] if grade == "gold"] | |
if any(name in room["tags"] for name in gold_badges): | |
gold_users += 1 | |
room["gold_count"] = gold_users | |
room["gold_percentage"] = 100 * gold_users / len(room["users"]) if room["users"] else 0.0 | |
data["rooms"].sort(key=lambda room: (room["gold_percentage"], len(room["users"]), room["name"]), reverse=True) | |
print("# of users frequently in room -- # of regulars with a relevant gold badge -- % of regulars with gold badge -- Room name") | |
for room in data["rooms"]: | |
print(f'{len(room["users"])} \t {room["gold_count"]} \t {room["gold_percentage"]: 6.1f}% \t {room["name"]}') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1 1 100.0% Docker | |
10 7 70.0% Python | |
10 6 60.0% Android | |
10 5 50.0% PHP | |
5 2 40.0% Ruby :: Sometimes on Rails | |
9 3 33.3% CHATLAB and Talktave | |
3 1 33.3% HTML / CSS / WebDesign | |
8 2 25.0% JavaScript | |
4 1 25.0% C | |
9 2 22.2% Rust | |
5 1 20.0% C# | |
10 1 10.0% WPF | |
10 1 10.0% WPF | |
10 0 0.0% SOBotics | |
10 0 0.0% SO Close Vote Reviewers | |
10 0 0.0% Java | |
10 0 0.0% GMTs | |
6 0 0.0% SQL | |
6 0 0.0% SQL | |
6 0 0.0% Duck Overflow | |
6 0 0.0% ASP.NET MVC | |
5 0 0.0% [Rebol*] | |
5 0 0.0% SOCVR /dev/null | |
5 0 0.0% KCG | |
5 0 0.0% Jeeves' Playground... | |
5 0 0.0% C++ Questions and Answers | |
4 0 0.0% iOS, Android and PHP Dev | |
4 0 0.0% Dawg's Waffle Haus | |
3 0 0.0% friendly bin | |
3 0 0.0% friendly bin | |
3 0 0.0% [iOS][Android][ChaosOverFlow] | |
3 0 0.0% Tamil iOS, Web and Phonegap Developers | |
3 0 0.0% Sandbox | |
3 0 0.0% Sandbox | |
3 0 0.0% SOCVR Testing Facility | |
3 0 0.0% Meta Stack Overflow Comment Archive W… | |
2 0 0.0% Web app with MVC | |
2 0 0.0% Trash can | |
2 0 0.0% SPA vs MPA | |
2 0 0.0% Python Ouroboros - The Rotating Knives | |
2 0 0.0% MPI help | |
2 0 0.0% Laravel | |
2 0 0.0% Haskell (and other functional languages) | |
2 0 0.0% Gtk+ | |
2 0 0.0% F# | |
2 0 0.0% Erlang/OTP | |
2 0 0.0% Computer Graphics Articles | |
2 0 0.0% Burnination progress for the [relativ… | |
2 0 0.0% Android & Kotlin Experts | |
2 0 0.0% #!/bin/bash | |
2 0 0.0% #!/bin/bash | |
1 0 0.0% help with question | |
1 0 0.0% featherwaver_Abra | |
1 0 0.0% event hub trigger | |
1 0 0.0% _chat | |
1 0 0.0% Security / Privacy | |
1 0 0.0% R Public | |
1 0 0.0% New Answers to Old Questions Headquar… | |
1 0 0.0% Meta Stack Overflow Comment Archive | |
1 0 0.0% Discussion from comment thread in "Th… | |
1 0 0.0% Developer Relations | |
1 0 0.0% Apache Spark | |
1 0 0.0% Angular - Quiz - Routing | |
1 0 0.0% Activity tracker | |
1 0 0.0% ADHD | |
0 0 0.0% websocket authentication and authoriz… | |
0 0 0.0% v_head_aconcagua_i | |
0 0 0.0% talk | |
0 0 0.0% symfony-help | |
0 0 0.0% k8s using kube spray | |
0 0 0.0% iOS Developer Family (iOS,Android,Flu… | |
0 0 0.0% Parsing a JSON array item one by one … | |
0 0 0.0% Laravel Notifications with custom aut… | |
0 0 0.0% Kotlin | |
0 0 0.0% Java, Spring,JPA, PHP, jQuery & Javas… | |
0 0 0.0% How can I add scrollbar vertical in t… | |
0 0 0.0% Chat with Tedinoz | |
0 0 0.0% Angular Newbies | |
0 0 0.0% 58441786 | |
0 0 0.0% 58427568 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"rooms": [ | |
{ | |
"name": "Android", | |
"href": "/rooms/info/15/android", | |
"tags": [ | |
"android", | |
"cats", | |
"circleavatars", | |
"cyanavatars", | |
"java", | |
"kotlin", | |
"o/", | |
"xkcd" | |
], | |
"users": [ | |
{ | |
"name": "ColdFire", | |
"href": "/users/5148907/coldfire", | |
"tag_badges": [ | |
[ | |
"android", | |
"silver" | |
], | |
[ | |
"android", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "Raghav Sood", | |
"href": "/users/1069068/raghav-sood", | |
"tag_badges": [ | |
[ | |
"java", | |
"silver" | |
], | |
[ | |
"java", | |
"bronze" | |
], | |
[ | |
"android-activity", | |
"bronze" | |
], | |
[ | |
"android-layout", | |
"bronze" | |
], | |
[ | |
"android", | |
"silver" | |
], | |
[ | |
"google-play", | |
"silver" | |
], | |
[ | |
"google-play", | |
"bronze" | |
], | |
[ | |
"eclipse", | |
"bronze" | |
], | |
[ | |
"android-manifest", | |
"bronze" | |
], | |
[ | |
"android-intent", | |
"bronze" | |
], | |
[ | |
"android", | |
"gold" | |
] | |
] | |
}, | |
{ | |
"name": "Ahmad", | |
"href": "/users/1333975/ahmad", | |
"tag_badges": [ | |
[ | |
"java", | |
"silver" | |
], | |
[ | |
"actionbarsherlock", | |
"bronze" | |
], | |
[ | |
"android", | |
"gold" | |
], | |
[ | |
"java", | |
"bronze" | |
], | |
[ | |
"android-actionbar", | |
"bronze" | |
], | |
[ | |
"android-layout", | |
"bronze" | |
], | |
[ | |
"android-theme", | |
"bronze" | |
], | |
[ | |
"android", | |
"bronze" | |
], | |
[ | |
"android", | |
"silver" | |
] | |
] | |
}, | |
{ | |
"name": "codeMagic", | |
"href": "/users/1380752/codemagic", | |
"tag_badges": [ | |
[ | |
"android", | |
"gold" | |
], | |
[ | |
"android-activity", | |
"bronze" | |
], | |
[ | |
"android-asynctask", | |
"bronze" | |
], | |
[ | |
"java", | |
"silver" | |
], | |
[ | |
"layout", | |
"bronze" | |
], | |
[ | |
"android-layout", | |
"bronze" | |
], | |
[ | |
"android", | |
"silver" | |
], | |
[ | |
"java", | |
"bronze" | |
], | |
[ | |
"xml", | |
"bronze" | |
], | |
[ | |
"android-intent", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "Tim Castelijns", | |
"href": "/users/1843331/tim-castelijns", | |
"tag_badges": [ | |
[ | |
"python", | |
"bronze" | |
], | |
[ | |
"android", | |
"bronze" | |
], | |
[ | |
"android", | |
"gold" | |
], | |
[ | |
"git", | |
"bronze" | |
], | |
[ | |
"java", | |
"bronze" | |
], | |
[ | |
"android-studio", | |
"bronze" | |
], | |
[ | |
"android", | |
"silver" | |
], | |
[ | |
"python-2.7", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "AdamMc331", | |
"href": "/users/3131147/adammc331", | |
"tag_badges": [ | |
[ | |
"java", | |
"bronze" | |
], | |
[ | |
"android", | |
"bronze" | |
], | |
[ | |
"mysql", | |
"bronze" | |
], | |
[ | |
"sql", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "WarrenFaith", | |
"href": "/users/180538/warrenfaith", | |
"tag_badges": [ | |
[ | |
"sqlite", | |
"bronze" | |
], | |
[ | |
"database", | |
"bronze" | |
], | |
[ | |
"android", | |
"silver" | |
], | |
[ | |
"eclipse", | |
"bronze" | |
], | |
[ | |
"android", | |
"gold" | |
], | |
[ | |
"java", | |
"bronze" | |
], | |
[ | |
"android-layout", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "Mauker", | |
"href": "/users/4070469/mauker", | |
"tag_badges": [ | |
[ | |
"android", | |
"silver" | |
], | |
[ | |
"java", | |
"bronze" | |
], | |
[ | |
"android", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "Graeme", | |
"href": "/users/726954/graeme", | |
"tag_badges": [ | |
[ | |
"android", | |
"gold" | |
], | |
[ | |
"android-layout", | |
"bronze" | |
], | |
[ | |
"android", | |
"silver" | |
], | |
[ | |
"android", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "Dave S", | |
"href": "/users/2680506/dave-s", | |
"tag_badges": [ | |
[ | |
"android", | |
"bronze" | |
] | |
] | |
} | |
] | |
}, | |
{ | |
"name": "Laravel", | |
"href": "/rooms/info/193158/laravel", | |
"tags": [], | |
"users": [ | |
{ | |
"name": "Hasnain Kahn", | |
"href": "/users/9893974/hasnain-kahn", | |
"tag_badges": [] | |
}, | |
{ | |
"name": "Zakaria Acharki", | |
"href": "/users/4281779/zakaria-acharki", | |
"tag_badges": [ | |
[ | |
"php", | |
"silver" | |
], | |
[ | |
"html", | |
"silver" | |
], | |
[ | |
"json", | |
"bronze" | |
], | |
[ | |
"php", | |
"bronze" | |
], | |
[ | |
"laravel-5.1", | |
"bronze" | |
], | |
[ | |
"css", | |
"bronze" | |
], | |
[ | |
"eloquent", | |
"bronze" | |
], | |
[ | |
"html", | |
"gold" | |
], | |
[ | |
"jquery", | |
"silver" | |
], | |
[ | |
"css", | |
"silver" | |
], | |
[ | |
"jquery", | |
"gold" | |
], | |
[ | |
"javascript", | |
"silver" | |
], | |
[ | |
"ajax", | |
"bronze" | |
], | |
[ | |
"arrays", | |
"bronze" | |
], | |
[ | |
"twitter-bootstrap", | |
"bronze" | |
], | |
[ | |
"laravel", | |
"bronze" | |
], | |
[ | |
"javascript", | |
"gold" | |
] | |
] | |
} | |
] | |
}, | |
{ | |
"name": "C#", | |
"href": "/rooms/info/7/c", | |
"tags": [ | |
".net", | |
"asp.net", | |
"asp.net-mvc", | |
"c#", | |
"coreclr", | |
"entity-framework", | |
"linq", | |
"visual-studio", | |
"wcf", | |
"wpf", | |
"xamarin" | |
], | |
"users": [ | |
{ | |
"name": "Wietlol", | |
"href": "/users/2764866/wietlol", | |
"tag_badges": [] | |
}, | |
{ | |
"name": "Avner Shahar-Kashtan", | |
"href": "/users/701054/avner-shahar-kashtan", | |
"tag_badges": [ | |
[ | |
"c#", | |
"silver" | |
], | |
[ | |
"c#", | |
"bronze" | |
], | |
[ | |
".net", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "MikeTheLiar", | |
"href": "/users/1015495/miketheliar", | |
"tag_badges": [] | |
}, | |
{ | |
"name": "Amy", | |
"href": "/users/47589/amy", | |
"tag_badges": [ | |
[ | |
"c#", | |
"gold" | |
], | |
[ | |
"javascript", | |
"bronze" | |
], | |
[ | |
"asp.net", | |
"bronze" | |
], | |
[ | |
"c#", | |
"silver" | |
], | |
[ | |
"c#", | |
"bronze" | |
], | |
[ | |
".net", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "Roel van Uden", | |
"href": "/users/472015/roel-van-uden", | |
"tag_badges": [ | |
[ | |
"javascript", | |
"bronze" | |
], | |
[ | |
"node.js", | |
"bronze" | |
] | |
] | |
} | |
] | |
}, | |
{ | |
"name": "Rust", | |
"href": "/rooms/info/62927/rust", | |
"tags": [ | |
"fearless-concurrency", | |
"generic-associated-types", | |
"kirby-dream-land", | |
"rust", | |
"shepmaster-fanclub" | |
], | |
"users": [ | |
{ | |
"name": "Shepmaster", | |
"href": "/users/155423/shepmaster", | |
"tag_badges": [ | |
[ | |
"iterator", | |
"silver" | |
], | |
[ | |
"rust-cargo", | |
"silver" | |
], | |
[ | |
"future", | |
"bronze" | |
], | |
[ | |
"struct", | |
"bronze" | |
], | |
[ | |
"borrow-checker", | |
"silver" | |
], | |
[ | |
"borrowing", | |
"bronze" | |
], | |
[ | |
"serde", | |
"bronze" | |
], | |
[ | |
"traits", | |
"silver" | |
], | |
[ | |
"pointers", | |
"bronze" | |
], | |
[ | |
"macros", | |
"bronze" | |
], | |
[ | |
"reference", | |
"bronze" | |
], | |
[ | |
"syntax", | |
"bronze" | |
], | |
[ | |
"enums", | |
"bronze" | |
], | |
[ | |
"ffi", | |
"bronze" | |
], | |
[ | |
"types", | |
"bronze" | |
], | |
[ | |
"multithreading", | |
"bronze" | |
], | |
[ | |
"rust-tokio", | |
"bronze" | |
], | |
[ | |
"closures", | |
"bronze" | |
], | |
[ | |
"lifetime", | |
"silver" | |
], | |
[ | |
"vector", | |
"bronze" | |
], | |
[ | |
"arrays", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "Stargateur", | |
"href": "/users/7076153/stargateur", | |
"tag_badges": [ | |
[ | |
"rust", | |
"bronze" | |
], | |
[ | |
"rust", | |
"silver" | |
], | |
[ | |
"c", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "French Boiethios", | |
"href": "/users/4498831/french-boiethios", | |
"tag_badges": [ | |
[ | |
"rust", | |
"silver" | |
], | |
[ | |
"rust", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "Denys S\u00e9guret", | |
"href": "/users/263525/denys-seguret", | |
"tag_badges": [ | |
[ | |
"parsing", | |
"bronze" | |
], | |
[ | |
"eclipse", | |
"bronze" | |
], | |
[ | |
"promise", | |
"bronze" | |
], | |
[ | |
"node.js", | |
"silver" | |
], | |
[ | |
"regex", | |
"gold" | |
], | |
[ | |
"css3", | |
"bronze" | |
], | |
[ | |
"ajax", | |
"silver" | |
], | |
[ | |
"variables", | |
"bronze" | |
], | |
[ | |
"multithreading", | |
"bronze" | |
], | |
[ | |
"scope", | |
"bronze" | |
], | |
[ | |
"php", | |
"silver" | |
], | |
[ | |
"git", | |
"bronze" | |
], | |
[ | |
"arrays", | |
"gold" | |
], | |
[ | |
"sql", | |
"bronze" | |
], | |
[ | |
"sorting", | |
"bronze" | |
], | |
[ | |
"rust", | |
"bronze" | |
], | |
[ | |
"jquery-selectors", | |
"silver" | |
], | |
[ | |
"css", | |
"gold" | |
], | |
[ | |
"google-chrome", | |
"bronze" | |
], | |
[ | |
"internet-explorer", | |
"bronze" | |
], | |
[ | |
"replace", | |
"bronze" | |
], | |
[ | |
"class", | |
"bronze" | |
], | |
[ | |
"date", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "S\u00e9bastien Renauld", | |
"href": "/users/2167834/sebastien-renauld", | |
"tag_badges": [ | |
[ | |
"javascript", | |
"bronze" | |
], | |
[ | |
"rust", | |
"bronze" | |
], | |
[ | |
"javascript", | |
"silver" | |
], | |
[ | |
"php", | |
"silver" | |
], | |
[ | |
"php", | |
"bronze" | |
], | |
[ | |
"jquery", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "Peter Varo", | |
"href": "/users/2188562/peter-varo", | |
"tag_badges": [ | |
[ | |
"python", | |
"bronze" | |
], | |
[ | |
"python", | |
"silver" | |
] | |
] | |
}, | |
{ | |
"name": "E_net4 is still on strike", | |
"href": "/users/1233251/e-net4-is-still-on-strike", | |
"tag_badges": [ | |
[ | |
"rust", | |
"bronze" | |
], | |
[ | |
"node.js", | |
"bronze" | |
], | |
[ | |
"rust", | |
"silver" | |
] | |
] | |
}, | |
{ | |
"name": "Peter Hall", | |
"href": "/users/493729/peter-hall", | |
"tag_badges": [ | |
[ | |
"traits", | |
"bronze" | |
], | |
[ | |
"generics", | |
"bronze" | |
], | |
[ | |
"syntax", | |
"bronze" | |
], | |
[ | |
"borrowing", | |
"bronze" | |
], | |
[ | |
"lifetime", | |
"bronze" | |
], | |
[ | |
"rust", | |
"gold" | |
], | |
[ | |
"rust", | |
"bronze" | |
], | |
[ | |
"haskell", | |
"bronze" | |
], | |
[ | |
"reference", | |
"bronze" | |
], | |
[ | |
"rust", | |
"silver" | |
] | |
] | |
}, | |
{ | |
"name": "Matthieu M.", | |
"href": "/users/147192/matthieu-m", | |
"tag_badges": [ | |
[ | |
"struct", | |
"bronze" | |
], | |
[ | |
"reference", | |
"bronze" | |
], | |
[ | |
"std", | |
"bronze" | |
], | |
[ | |
"g++", | |
"bronze" | |
], | |
[ | |
"lifetime", | |
"bronze" | |
], | |
[ | |
"polymorphism", | |
"bronze" | |
], | |
[ | |
"rust", | |
"silver" | |
], | |
[ | |
"rust", | |
"gold" | |
], | |
[ | |
"function", | |
"bronze" | |
], | |
[ | |
"static", | |
"bronze" | |
], | |
[ | |
"traits", | |
"bronze" | |
], | |
[ | |
"namespaces", | |
"bronze" | |
], | |
[ | |
"types", | |
"bronze" | |
], | |
[ | |
"class", | |
"bronze" | |
], | |
[ | |
"const", | |
"bronze" | |
], | |
[ | |
"initialization", | |
"bronze" | |
] | |
] | |
} | |
] | |
}, | |
{ | |
"name": "New Answers to Old Questions Headquar\u2026", | |
"href": "/rooms/info/126814/new-answers-to-old-questions-headquarters", | |
"tags": [ | |
"new-answers" | |
], | |
"users": [ | |
{ | |
"name": "Natty", | |
"href": "/users/6817005/natty", | |
"tag_badges": [] | |
} | |
] | |
}, | |
{ | |
"name": "Python", | |
"href": "/rooms/info/6/python", | |
"tags": [ | |
"python", | |
"python-2.x", | |
"python-3.x" | |
], | |
"users": [ | |
{ | |
"name": "Kevin", | |
"href": "/users/953482/kevin", | |
"tag_badges": [ | |
[ | |
"python-3.x", | |
"silver" | |
], | |
[ | |
"tkinter", | |
"silver" | |
], | |
[ | |
"list", | |
"bronze" | |
], | |
[ | |
"tkinter", | |
"bronze" | |
], | |
[ | |
"math", | |
"bronze" | |
], | |
[ | |
"python", | |
"silver" | |
], | |
[ | |
"c++", | |
"bronze" | |
], | |
[ | |
"python-3.x", | |
"bronze" | |
], | |
[ | |
"function", | |
"bronze" | |
], | |
[ | |
"dictionary", | |
"bronze" | |
], | |
[ | |
"python", | |
"gold" | |
], | |
[ | |
"string", | |
"bronze" | |
], | |
[ | |
"python-2.7", | |
"bronze" | |
], | |
[ | |
"python-2.7", | |
"silver" | |
], | |
[ | |
"python", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "Andras Deak", | |
"href": "/users/5067311/andras-deak", | |
"tag_badges": [ | |
[ | |
"plot", | |
"bronze" | |
], | |
[ | |
"matlab", | |
"silver" | |
], | |
[ | |
"matplotlib", | |
"bronze" | |
], | |
[ | |
"matrix", | |
"bronze" | |
], | |
[ | |
"arrays", | |
"bronze" | |
], | |
[ | |
"python", | |
"silver" | |
], | |
[ | |
"numpy", | |
"silver" | |
], | |
[ | |
"vectorization", | |
"bronze" | |
], | |
[ | |
"scipy", | |
"bronze" | |
], | |
[ | |
"python", | |
"bronze" | |
], | |
[ | |
"interpolation", | |
"bronze" | |
], | |
[ | |
"numpy", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "Jon Clements", | |
"href": "/users/1252759/jon-clements", | |
"tag_badges": [ | |
[ | |
"json", | |
"bronze" | |
], | |
[ | |
"python-3.x", | |
"silver" | |
], | |
[ | |
"datetime", | |
"bronze" | |
], | |
[ | |
"arrays", | |
"bronze" | |
], | |
[ | |
"beautifulsoup", | |
"bronze" | |
], | |
[ | |
"list-comprehension", | |
"bronze" | |
], | |
[ | |
"numpy", | |
"bronze" | |
], | |
[ | |
"dictionary", | |
"silver" | |
], | |
[ | |
"performance", | |
"bronze" | |
], | |
[ | |
"list", | |
"gold" | |
], | |
[ | |
"python-2.7", | |
"silver" | |
], | |
[ | |
"python-3.x", | |
"gold" | |
], | |
[ | |
"indexing", | |
"bronze" | |
], | |
[ | |
"string", | |
"silver" | |
], | |
[ | |
"function", | |
"bronze" | |
], | |
[ | |
"random", | |
"bronze" | |
], | |
[ | |
"csv", | |
"bronze" | |
], | |
[ | |
"file", | |
"bronze" | |
], | |
[ | |
"tuples", | |
"bronze" | |
], | |
[ | |
"sorting", | |
"bronze" | |
], | |
[ | |
"pandas", | |
"bronze" | |
], | |
[ | |
"django", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "wim", | |
"href": "/users/674039/wim", | |
"tag_badges": [ | |
[ | |
"sorting", | |
"bronze" | |
], | |
[ | |
"pip", | |
"bronze" | |
], | |
[ | |
"python-3.x", | |
"gold" | |
], | |
[ | |
"class", | |
"bronze" | |
], | |
[ | |
"argparse", | |
"bronze" | |
], | |
[ | |
"function", | |
"bronze" | |
], | |
[ | |
"list", | |
"gold" | |
], | |
[ | |
"unicode", | |
"bronze" | |
], | |
[ | |
"django", | |
"silver" | |
], | |
[ | |
"list-comprehension", | |
"bronze" | |
], | |
[ | |
"datetime", | |
"bronze" | |
], | |
[ | |
"numpy", | |
"gold" | |
], | |
[ | |
"python-2.7", | |
"silver" | |
], | |
[ | |
"string", | |
"silver" | |
], | |
[ | |
"python-2.x", | |
"bronze" | |
], | |
[ | |
"regex", | |
"bronze" | |
], | |
[ | |
"python-3.x", | |
"silver" | |
] | |
] | |
}, | |
{ | |
"name": "PM 2Ring", | |
"href": "/users/4014959/pm-2ring", | |
"tag_badges": [ | |
[ | |
"list", | |
"bronze" | |
], | |
[ | |
"numpy", | |
"bronze" | |
], | |
[ | |
"string", | |
"bronze" | |
], | |
[ | |
"dictionary", | |
"bronze" | |
], | |
[ | |
"python-2.7", | |
"bronze" | |
], | |
[ | |
"python", | |
"bronze" | |
], | |
[ | |
"python-3.x", | |
"silver" | |
], | |
[ | |
"tkinter", | |
"bronze" | |
], | |
[ | |
"python-2.7", | |
"silver" | |
], | |
[ | |
"python", | |
"silver" | |
], | |
[ | |
"json", | |
"bronze" | |
], | |
[ | |
"python-3.x", | |
"bronze" | |
], | |
[ | |
"python", | |
"gold" | |
] | |
] | |
}, | |
{ | |
"name": "Aran-Fey", | |
"href": "/users/1222951/aran-fey", | |
"tag_badges": [ | |
[ | |
"python-2.7", | |
"bronze" | |
], | |
[ | |
"regex", | |
"bronze" | |
], | |
[ | |
"python", | |
"bronze" | |
], | |
[ | |
"python", | |
"gold" | |
], | |
[ | |
"list", | |
"bronze" | |
], | |
[ | |
"python", | |
"silver" | |
], | |
[ | |
"python-3.x", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "Antti Haapala", | |
"href": "/users/918959/antti-haapala", | |
"tag_badges": [ | |
[ | |
"linux", | |
"bronze" | |
], | |
[ | |
"pointers", | |
"bronze" | |
], | |
[ | |
"assembly", | |
"bronze" | |
], | |
[ | |
"c", | |
"gold" | |
], | |
[ | |
"language-lawyer", | |
"bronze" | |
], | |
[ | |
"java", | |
"bronze" | |
], | |
[ | |
"c", | |
"silver" | |
], | |
[ | |
"python-2.7", | |
"silver" | |
], | |
[ | |
"gcc", | |
"bronze" | |
], | |
[ | |
"sqlalchemy", | |
"bronze" | |
], | |
[ | |
"arrays", | |
"bronze" | |
], | |
[ | |
"python-3.x", | |
"silver" | |
], | |
[ | |
"regex", | |
"bronze" | |
], | |
[ | |
"python-2.x", | |
"bronze" | |
], | |
[ | |
"dictionary", | |
"bronze" | |
], | |
[ | |
"c++", | |
"bronze" | |
], | |
[ | |
"string", | |
"bronze" | |
], | |
[ | |
"python-2.7", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "roganjosh", | |
"href": "/users/4799172/roganjosh", | |
"tag_badges": [ | |
[ | |
"python", | |
"bronze" | |
], | |
[ | |
"python", | |
"silver" | |
] | |
] | |
}, | |
{ | |
"name": "idjaw", | |
"href": "/users/1832539/idjaw", | |
"tag_badges": [ | |
[ | |
"mocking", | |
"bronze" | |
], | |
[ | |
"python", | |
"bronze" | |
], | |
[ | |
"python", | |
"silver" | |
], | |
[ | |
"python", | |
"gold" | |
], | |
[ | |
"python-3.x", | |
"bronze" | |
], | |
[ | |
"list", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "davidism", | |
"href": "/users/400617/davidism", | |
"tag_badges": [ | |
[ | |
"javascript", | |
"bronze" | |
], | |
[ | |
"jinja2", | |
"bronze" | |
], | |
[ | |
"flask-sqlalchemy", | |
"bronze" | |
], | |
[ | |
"sqlalchemy", | |
"gold" | |
], | |
[ | |
"flask", | |
"gold" | |
], | |
[ | |
"werkzeug", | |
"bronze" | |
], | |
[ | |
"sqlalchemy", | |
"silver" | |
], | |
[ | |
"flask-sqlalchemy", | |
"silver" | |
], | |
[ | |
"python", | |
"gold" | |
], | |
[ | |
"python", | |
"silver" | |
], | |
[ | |
"json", | |
"bronze" | |
], | |
[ | |
"jinja2", | |
"silver" | |
], | |
[ | |
"wtforms", | |
"bronze" | |
], | |
[ | |
"flask", | |
"silver" | |
], | |
[ | |
"flask-login", | |
"bronze" | |
], | |
[ | |
"flask-wtforms", | |
"bronze" | |
], | |
[ | |
"alembic", | |
"bronze" | |
] | |
] | |
} | |
] | |
}, | |
{ | |
"name": "PHP", | |
"href": "/rooms/info/11/php", | |
"tags": [ | |
"friday", | |
"php" | |
], | |
"users": [ | |
{ | |
"name": "ircmaxell", | |
"href": "/users/338665/ircmaxell", | |
"tag_badges": [ | |
[ | |
"hash", | |
"bronze" | |
], | |
[ | |
"performance", | |
"bronze" | |
], | |
[ | |
"security", | |
"silver" | |
], | |
[ | |
"passwords", | |
"bronze" | |
], | |
[ | |
"class", | |
"bronze" | |
], | |
[ | |
"html", | |
"bronze" | |
], | |
[ | |
"javascript", | |
"bronze" | |
], | |
[ | |
"sql", | |
"bronze" | |
], | |
[ | |
"security", | |
"bronze" | |
], | |
[ | |
"mysql", | |
"silver" | |
], | |
[ | |
"arrays", | |
"bronze" | |
], | |
[ | |
"session", | |
"bronze" | |
], | |
[ | |
"string", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "DaveRandom", | |
"href": "/users/889949/daverandom", | |
"tag_badges": [ | |
[ | |
"mysql", | |
"silver" | |
], | |
[ | |
"arrays", | |
"silver" | |
], | |
[ | |
"mysqli", | |
"bronze" | |
], | |
[ | |
"html", | |
"bronze" | |
], | |
[ | |
"javascript", | |
"bronze" | |
], | |
[ | |
"apache", | |
"bronze" | |
], | |
[ | |
"arrays", | |
"bronze" | |
], | |
[ | |
"regex", | |
"bronze" | |
], | |
[ | |
"php", | |
"gold" | |
], | |
[ | |
"curl", | |
"bronze" | |
], | |
[ | |
"http", | |
"bronze" | |
], | |
[ | |
"mysql", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "PeeHaa", | |
"href": "/users/508666/peehaa", | |
"tag_badges": [ | |
[ | |
"html5", | |
"bronze" | |
], | |
[ | |
"php", | |
"gold" | |
], | |
[ | |
"mysql", | |
"bronze" | |
], | |
[ | |
"html", | |
"silver" | |
], | |
[ | |
"security", | |
"bronze" | |
], | |
[ | |
"regex", | |
"bronze" | |
], | |
[ | |
"javascript", | |
"silver" | |
], | |
[ | |
"arrays", | |
"bronze" | |
], | |
[ | |
"oop", | |
"bronze" | |
], | |
[ | |
"php", | |
"silver" | |
], | |
[ | |
"forms", | |
"bronze" | |
], | |
[ | |
"jquery", | |
"silver" | |
] | |
] | |
}, | |
{ | |
"name": "Wes", | |
"href": "/users/4251625/wes", | |
"tag_badges": [] | |
}, | |
{ | |
"name": "Joe Watkins", | |
"href": "/users/1658631/joe-watkins", | |
"tag_badges": [ | |
[ | |
"php", | |
"gold" | |
], | |
[ | |
"php", | |
"bronze" | |
], | |
[ | |
"php", | |
"silver" | |
], | |
[ | |
"multithreading", | |
"silver" | |
], | |
[ | |
"pthreads", | |
"bronze" | |
], | |
[ | |
"multithreading", | |
"bronze" | |
], | |
[ | |
"pthreads", | |
"silver" | |
] | |
] | |
}, | |
{ | |
"name": "bwoebi", | |
"href": "/users/2153758/bwoebi", | |
"tag_badges": [ | |
[ | |
"php", | |
"silver" | |
], | |
[ | |
"arrays", | |
"bronze" | |
], | |
[ | |
"php", | |
"gold" | |
], | |
[ | |
"php", | |
"bronze" | |
], | |
[ | |
"html", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "Levi Morrison", | |
"href": "/users/538216/levi-morrison", | |
"tag_badges": [ | |
[ | |
"javascript", | |
"bronze" | |
], | |
[ | |
"php", | |
"silver" | |
], | |
[ | |
"php", | |
"bronze" | |
], | |
[ | |
"arrays", | |
"bronze" | |
], | |
[ | |
"jquery", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "NikiC", | |
"href": "/users/385378/nikic", | |
"tag_badges": [ | |
[ | |
"oop", | |
"bronze" | |
], | |
[ | |
"arrays", | |
"bronze" | |
], | |
[ | |
"regex", | |
"bronze" | |
], | |
[ | |
"php", | |
"gold" | |
], | |
[ | |
"mysql", | |
"bronze" | |
], | |
[ | |
"php", | |
"silver" | |
] | |
] | |
}, | |
{ | |
"name": "Madara Uchiha\u00a0\u2666", | |
"href": "/users/871050/madara-uchiha", | |
"tag_badges": [ | |
[ | |
"promise", | |
"bronze" | |
], | |
[ | |
"jquery", | |
"gold" | |
], | |
[ | |
"html", | |
"gold" | |
], | |
[ | |
"typescript", | |
"bronze" | |
], | |
[ | |
"session", | |
"bronze" | |
], | |
[ | |
"javascript", | |
"gold" | |
], | |
[ | |
"date", | |
"bronze" | |
], | |
[ | |
"forms", | |
"bronze" | |
], | |
[ | |
"git", | |
"bronze" | |
], | |
[ | |
"node.js", | |
"bronze" | |
], | |
[ | |
"string", | |
"bronze" | |
], | |
[ | |
"css", | |
"gold" | |
], | |
[ | |
"variables", | |
"bronze" | |
], | |
[ | |
"css3", | |
"bronze" | |
], | |
[ | |
"mysql", | |
"silver" | |
] | |
] | |
}, | |
{ | |
"name": "Danack", | |
"href": "/users/778719/danack", | |
"tag_badges": [ | |
[ | |
"imagick", | |
"bronze" | |
], | |
[ | |
"php", | |
"silver" | |
], | |
[ | |
"nginx", | |
"bronze" | |
], | |
[ | |
"mysql", | |
"bronze" | |
], | |
[ | |
"php", | |
"bronze" | |
], | |
[ | |
"composer-php", | |
"bronze" | |
] | |
] | |
} | |
] | |
}, | |
{ | |
"name": "Meta Stack Overflow Comment Archive", | |
"href": "/rooms/info/197298/meta-stack-overflow-comment-archive", | |
"tags": [ | |
"archive", | |
"comments", | |
"meta" | |
], | |
"users": [ | |
{ | |
"name": "Boson", | |
"href": "/users/10843908/boson", | |
"tag_badges": [] | |
} | |
] | |
}, | |
{ | |
"name": "SOBotics", | |
"href": "/rooms/info/111347/sobotics", | |
"tags": [ | |
"bots", | |
"pings", | |
"singularity", | |
"waffles" | |
], | |
"users": [ | |
{ | |
"name": "Natty", | |
"href": "/users/6817005/natty", | |
"tag_badges": [] | |
}, | |
{ | |
"name": "Queen", | |
"href": "/users/6294609/queen", | |
"tag_badges": [] | |
}, | |
{ | |
"name": "FOX 9000", | |
"href": "/users/3671802/fox-9000", | |
"tag_badges": [] | |
}, | |
{ | |
"name": "Shree", | |
"href": "/users/965146/shree", | |
"tag_badges": [ | |
[ | |
"javascript", | |
"bronze" | |
], | |
[ | |
"html", | |
"bronze" | |
], | |
[ | |
"jquery", | |
"bronze" | |
], | |
[ | |
"jquery", | |
"silver" | |
], | |
[ | |
"c#", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "Zoe the transgirl", | |
"href": "/users/6296561/zoe-the-transgirl", | |
"tag_badges": [ | |
[ | |
"java", | |
"bronze" | |
], | |
[ | |
"android", | |
"bronze" | |
], | |
[ | |
"kotlin", | |
"silver" | |
], | |
[ | |
"android-studio", | |
"bronze" | |
], | |
[ | |
"kotlin", | |
"bronze" | |
], | |
[ | |
"android", | |
"silver" | |
] | |
] | |
}, | |
{ | |
"name": "SmokeDetector", | |
"href": "/users/3735529/smokedetector", | |
"tag_badges": [] | |
}, | |
{ | |
"name": "Housekeeping", | |
"href": "/users/7829893/housekeeping", | |
"tag_badges": [] | |
}, | |
{ | |
"name": "Generic Bot", | |
"href": "/users/7481043/generic-bot", | |
"tag_badges": [] | |
}, | |
{ | |
"name": "double-beep", | |
"href": "/users/10607772/double-beep", | |
"tag_badges": [ | |
[ | |
"batch-file", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "geisterfurz007", | |
"href": "/users/6707985/geisterfurz007", | |
"tag_badges": [ | |
[ | |
"batch-file", | |
"bronze" | |
] | |
] | |
} | |
] | |
}, | |
{ | |
"name": "Dawg's Waffle Haus", | |
"href": "/rooms/info/169987/dawgs-waffle-haus", | |
"tags": [ | |
"waffle-related-items", | |
"waffles" | |
], | |
"users": [ | |
{ | |
"name": "QHarr", | |
"href": "/users/6241235/qharr", | |
"tag_badges": [ | |
[ | |
"json", | |
"bronze" | |
], | |
[ | |
"beautifulsoup", | |
"silver" | |
], | |
[ | |
"selenium", | |
"bronze" | |
], | |
[ | |
"vba", | |
"gold" | |
], | |
[ | |
"excel-vba", | |
"bronze" | |
], | |
[ | |
"vba", | |
"bronze" | |
], | |
[ | |
"internet-explorer", | |
"bronze" | |
], | |
[ | |
"web-scraping", | |
"bronze" | |
], | |
[ | |
"excel", | |
"bronze" | |
], | |
[ | |
"beautifulsoup", | |
"bronze" | |
], | |
[ | |
"html", | |
"silver" | |
], | |
[ | |
"excel-formula", | |
"bronze" | |
], | |
[ | |
"web-scraping", | |
"gold" | |
], | |
[ | |
"web-scraping", | |
"silver" | |
], | |
[ | |
"python", | |
"silver" | |
], | |
[ | |
"python", | |
"bronze" | |
], | |
[ | |
"excel-vba", | |
"silver" | |
], | |
[ | |
"python-3.x", | |
"bronze" | |
], | |
[ | |
"excel", | |
"gold" | |
], | |
[ | |
"excel", | |
"silver" | |
], | |
[ | |
"vba", | |
"silver" | |
], | |
[ | |
"html", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "Zoe the transgirl", | |
"href": "/users/6296561/zoe-the-transgirl", | |
"tag_badges": [ | |
[ | |
"java", | |
"bronze" | |
], | |
[ | |
"android", | |
"bronze" | |
], | |
[ | |
"kotlin", | |
"silver" | |
], | |
[ | |
"android-studio", | |
"bronze" | |
], | |
[ | |
"kotlin", | |
"bronze" | |
], | |
[ | |
"android", | |
"silver" | |
] | |
] | |
}, | |
{ | |
"name": "Stephen Kennedy", | |
"href": "/users/397817/stephen-kennedy", | |
"tag_badges": [ | |
[ | |
"visual-studio", | |
"bronze" | |
], | |
[ | |
"c#", | |
"silver" | |
], | |
[ | |
".net", | |
"bronze" | |
], | |
[ | |
"asp.net", | |
"bronze" | |
], | |
[ | |
"c#", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "double-beep", | |
"href": "/users/10607772/double-beep", | |
"tag_badges": [ | |
[ | |
"batch-file", | |
"bronze" | |
] | |
] | |
} | |
] | |
}, | |
{ | |
"name": "ASP.NET MVC", | |
"href": "/rooms/info/160742/asp-net-mvc", | |
"tags": [ | |
"asp.net", | |
"asp.net-core", | |
"asp.net-mvc", | |
"asp.net-web-api", | |
"c#", | |
"cshtml" | |
], | |
"users": [ | |
{ | |
"name": "Alex", | |
"href": "/users/177416/alex", | |
"tag_badges": [] | |
}, | |
{ | |
"name": "Rudi Visser", | |
"href": "/users/698179/rudi-visser", | |
"tag_badges": [ | |
[ | |
"c#", | |
"bronze" | |
], | |
[ | |
"mysql", | |
"bronze" | |
], | |
[ | |
"html", | |
"bronze" | |
], | |
[ | |
"php", | |
"silver" | |
], | |
[ | |
"php", | |
"bronze" | |
], | |
[ | |
".net", | |
"bronze" | |
], | |
[ | |
"c#", | |
"silver" | |
] | |
] | |
}, | |
{ | |
"name": "Falcon", | |
"href": "/users/7639883/falcon", | |
"tag_badges": [] | |
}, | |
{ | |
"name": "Roland_dfa", | |
"href": "/users/6250993/roland-dfa", | |
"tag_badges": [] | |
}, | |
{ | |
"name": "kabuto178", | |
"href": "/users/1671933/kabuto178", | |
"tag_badges": [] | |
}, | |
{ | |
"name": "Ende", | |
"href": "/users/9427768/ende", | |
"tag_badges": [] | |
} | |
] | |
}, | |
{ | |
"name": "SQL", | |
"href": "/rooms/info/11391/sql", | |
"tags": [ | |
"db2", | |
"mysql", | |
"oracle", | |
"postgresql", | |
"rubberduck", | |
"sql", | |
"sql-server", | |
"tsql" | |
], | |
"users": [ | |
{ | |
"name": "Andy K", | |
"href": "/users/2572645/andy-k", | |
"tag_badges": [] | |
}, | |
{ | |
"name": "Shaneis", | |
"href": "/users/2697001/shaneis", | |
"tag_badges": [] | |
}, | |
{ | |
"name": "ARr0w", | |
"href": "/users/4993989/arr0w", | |
"tag_badges": [] | |
}, | |
{ | |
"name": "H\u00e9ctor \u00c1lvarez", | |
"href": "/users/8300809/hector-alvarez", | |
"tag_badges": [] | |
}, | |
{ | |
"name": "WhatsThePoint", | |
"href": "/users/7147233/whatsthepoint", | |
"tag_badges": [] | |
}, | |
{ | |
"name": "Zulatin", | |
"href": "/users/1772025/zulatin", | |
"tag_badges": [] | |
} | |
] | |
}, | |
{ | |
"name": "SO Close Vote Reviewers", | |
"href": "/rooms/info/41570/so-close-vote-reviewers", | |
"tags": [ | |
"discussion", | |
"moderation", | |
"review" | |
], | |
"users": [ | |
{ | |
"name": "rene", | |
"href": "/users/578411/rene", | |
"tag_badges": [ | |
[ | |
"xml", | |
"bronze" | |
], | |
[ | |
"c#", | |
"silver" | |
], | |
[ | |
"c#", | |
"gold" | |
], | |
[ | |
"winforms", | |
"bronze" | |
], | |
[ | |
".net", | |
"bronze" | |
], | |
[ | |
"batch-file", | |
"bronze" | |
], | |
[ | |
"windows", | |
"bronze" | |
], | |
[ | |
"asp.net", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "NathanOliver", | |
"href": "/users/4342498/nathanoliver", | |
"tag_badges": [ | |
[ | |
"const", | |
"bronze" | |
], | |
[ | |
"initializer-list", | |
"bronze" | |
], | |
[ | |
"smart-pointers", | |
"bronze" | |
], | |
[ | |
"c++17", | |
"bronze" | |
], | |
[ | |
"g++", | |
"bronze" | |
], | |
[ | |
"for-loop", | |
"bronze" | |
], | |
[ | |
"reference", | |
"bronze" | |
], | |
[ | |
"inheritance", | |
"bronze" | |
], | |
[ | |
"std", | |
"bronze" | |
], | |
[ | |
"lambda", | |
"bronze" | |
], | |
[ | |
"overloading", | |
"bronze" | |
], | |
[ | |
"vector", | |
"silver" | |
], | |
[ | |
"stl", | |
"silver" | |
], | |
[ | |
"struct", | |
"bronze" | |
], | |
[ | |
"initialization", | |
"bronze" | |
], | |
[ | |
"gcc", | |
"bronze" | |
], | |
[ | |
"move-semantics", | |
"bronze" | |
], | |
[ | |
"copy-constructor", | |
"bronze" | |
], | |
[ | |
"iterator", | |
"bronze" | |
], | |
[ | |
"language-lawyer", | |
"bronze" | |
], | |
[ | |
"c++17", | |
"silver" | |
], | |
[ | |
"function", | |
"bronze" | |
], | |
[ | |
"templates", | |
"silver" | |
], | |
[ | |
"class", | |
"bronze" | |
], | |
[ | |
"unique-ptr", | |
"bronze" | |
], | |
[ | |
"random", | |
"bronze" | |
], | |
[ | |
"operator-overloading", | |
"bronze" | |
], | |
[ | |
"string", | |
"silver" | |
], | |
[ | |
"constructor", | |
"bronze" | |
], | |
[ | |
"shared-ptr", | |
"bronze" | |
], | |
[ | |
"c++11", | |
"gold" | |
] | |
] | |
}, | |
{ | |
"name": "TylerH", | |
"href": "/users/2756409/tylerh", | |
"tag_badges": [ | |
[ | |
"css", | |
"gold" | |
], | |
[ | |
"css", | |
"silver" | |
], | |
[ | |
"html", | |
"silver" | |
], | |
[ | |
"css3", | |
"bronze" | |
], | |
[ | |
"css", | |
"bronze" | |
], | |
[ | |
"html", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "Kyll", | |
"href": "/users/4174897/kyll", | |
"tag_badges": [ | |
[ | |
"javascript", | |
"bronze" | |
], | |
[ | |
"meteor", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "Machavity", | |
"href": "/users/2370483/machavity", | |
"tag_badges": [ | |
[ | |
"paypal", | |
"bronze" | |
], | |
[ | |
"php", | |
"silver" | |
], | |
[ | |
"php", | |
"gold" | |
], | |
[ | |
"json", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "Makyen", | |
"href": "/users/3773011/makyen", | |
"tag_badges": [ | |
[ | |
"javascript", | |
"silver" | |
], | |
[ | |
"css", | |
"bronze" | |
], | |
[ | |
"firefox-addon", | |
"bronze" | |
], | |
[ | |
"google-chrome-extension", | |
"silver" | |
], | |
[ | |
"jquery", | |
"bronze" | |
], | |
[ | |
"firefox-addon-sdk", | |
"bronze" | |
], | |
[ | |
"firefox-webextensions", | |
"bronze" | |
], | |
[ | |
"html", | |
"bronze" | |
], | |
[ | |
"firefox-addon", | |
"silver" | |
], | |
[ | |
"google-chrome-extension", | |
"bronze" | |
], | |
[ | |
"google-chrome", | |
"bronze" | |
], | |
[ | |
"javascript", | |
"bronze" | |
], | |
[ | |
"firefox", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "kayess", | |
"href": "/users/4805174/kayess", | |
"tag_badges": [ | |
[ | |
"c#", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "John Dvorak", | |
"href": "/users/499214/john-dvorak", | |
"tag_badges": [ | |
[ | |
"algorithm", | |
"bronze" | |
], | |
[ | |
"regex", | |
"bronze" | |
], | |
[ | |
"java", | |
"bronze" | |
], | |
[ | |
"php", | |
"bronze" | |
], | |
[ | |
"javascript", | |
"bronze" | |
], | |
[ | |
"javascript", | |
"silver" | |
], | |
[ | |
"jquery", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "Praveen Kumar Purushothaman", | |
"href": "/users/462627/praveen-kumar-purushothaman", | |
"tag_badges": [ | |
[ | |
"twitter-bootstrap", | |
"gold" | |
], | |
[ | |
"sql", | |
"bronze" | |
], | |
[ | |
"html5", | |
"silver" | |
], | |
[ | |
"twitter-bootstrap", | |
"silver" | |
], | |
[ | |
"arrays", | |
"silver" | |
], | |
[ | |
"css-selectors", | |
"bronze" | |
], | |
[ | |
"php", | |
"gold" | |
], | |
[ | |
"jquery-ui", | |
"bronze" | |
], | |
[ | |
"validation", | |
"bronze" | |
], | |
[ | |
"arrays", | |
"bronze" | |
], | |
[ | |
"ajax", | |
"bronze" | |
], | |
[ | |
"twitter-bootstrap-3", | |
"bronze" | |
], | |
[ | |
"image", | |
"bronze" | |
], | |
[ | |
"javascript", | |
"gold" | |
], | |
[ | |
"forms", | |
"bronze" | |
], | |
[ | |
"jquery", | |
"gold" | |
], | |
[ | |
"json", | |
"bronze" | |
], | |
[ | |
"html5", | |
"bronze" | |
], | |
[ | |
"css", | |
"gold" | |
], | |
[ | |
"ajax", | |
"silver" | |
], | |
[ | |
"css3", | |
"silver" | |
], | |
[ | |
"html", | |
"gold" | |
] | |
] | |
}, | |
{ | |
"name": "Petter Friberg", | |
"href": "/users/5292302/petter-friberg", | |
"tag_badges": [ | |
[ | |
"java", | |
"silver" | |
], | |
[ | |
"java", | |
"bronze" | |
], | |
[ | |
"jasper-reports", | |
"silver" | |
], | |
[ | |
"jasper-reports", | |
"bronze" | |
] | |
] | |
} | |
] | |
}, | |
{ | |
"name": "#!/bin/bash", | |
"href": "/rooms/info/98569/bin-bash", | |
"tags": [ | |
"bash", | |
"sh" | |
], | |
"users": [ | |
{ | |
"name": "Queen", | |
"href": "/users/6294609/queen", | |
"tag_badges": [] | |
}, | |
{ | |
"name": "tripleee", | |
"href": "/users/874188/tripleee", | |
"tag_badges": [ | |
[ | |
"python", | |
"gold" | |
], | |
[ | |
"variables", | |
"bronze" | |
], | |
[ | |
"macos", | |
"bronze" | |
], | |
[ | |
"utf-8", | |
"bronze" | |
], | |
[ | |
"sed", | |
"silver" | |
], | |
[ | |
"file", | |
"bronze" | |
], | |
[ | |
"scripting", | |
"bronze" | |
], | |
[ | |
"subprocess", | |
"bronze" | |
], | |
[ | |
"linux", | |
"gold" | |
], | |
[ | |
"python", | |
"silver" | |
], | |
[ | |
"debian", | |
"bronze" | |
], | |
[ | |
"shell", | |
"gold" | |
], | |
[ | |
"python-3.x", | |
"bronze" | |
], | |
[ | |
"gnu-make", | |
"bronze" | |
], | |
[ | |
"php", | |
"bronze" | |
], | |
[ | |
"awk", | |
"silver" | |
], | |
[ | |
"makefile", | |
"bronze" | |
], | |
[ | |
"unicode", | |
"bronze" | |
], | |
[ | |
"command-line", | |
"bronze" | |
], | |
[ | |
"if-statement", | |
"bronze" | |
], | |
[ | |
"mime", | |
"bronze" | |
], | |
[ | |
"sh", | |
"silver" | |
], | |
[ | |
"unix", | |
"silver" | |
] | |
] | |
} | |
] | |
}, | |
{ | |
"name": "GMTs", | |
"href": "/rooms/info/75819/gmts", | |
"tags": [], | |
"users": [ | |
{ | |
"name": "David Arenburg", | |
"href": "/users/3001626/david-arenburg", | |
"tag_badges": [ | |
[ | |
"list", | |
"bronze" | |
], | |
[ | |
"reshape", | |
"bronze" | |
], | |
[ | |
"merge", | |
"bronze" | |
], | |
[ | |
"aggregate", | |
"bronze" | |
], | |
[ | |
"vectorization", | |
"bronze" | |
], | |
[ | |
"tidyr", | |
"bronze" | |
], | |
[ | |
"subset", | |
"bronze" | |
], | |
[ | |
"dataframe", | |
"gold" | |
], | |
[ | |
"ggplot2", | |
"bronze" | |
], | |
[ | |
"dplyr", | |
"silver" | |
], | |
[ | |
"apply", | |
"bronze" | |
], | |
[ | |
"data.table", | |
"gold" | |
], | |
[ | |
"loops", | |
"bronze" | |
], | |
[ | |
"count", | |
"bronze" | |
], | |
[ | |
"string", | |
"bronze" | |
], | |
[ | |
"plyr", | |
"bronze" | |
], | |
[ | |
"datetime", | |
"bronze" | |
], | |
[ | |
"vector", | |
"bronze" | |
], | |
[ | |
"matrix", | |
"bronze" | |
], | |
[ | |
"dataframe", | |
"silver" | |
], | |
[ | |
"dataframe", | |
"bronze" | |
], | |
[ | |
"data.table", | |
"silver" | |
] | |
] | |
}, | |
{ | |
"name": "Jaap", | |
"href": "/users/2204410/jaap", | |
"tag_badges": [ | |
[ | |
"merge", | |
"bronze" | |
], | |
[ | |
"dataframe", | |
"bronze" | |
], | |
[ | |
"bar-chart", | |
"bronze" | |
], | |
[ | |
"reshape", | |
"bronze" | |
], | |
[ | |
"dplyr", | |
"bronze" | |
], | |
[ | |
"data.table", | |
"silver" | |
], | |
[ | |
"r", | |
"gold" | |
], | |
[ | |
"r-faq", | |
"bronze" | |
], | |
[ | |
"dataframe", | |
"silver" | |
], | |
[ | |
"date", | |
"bronze" | |
], | |
[ | |
"data.table", | |
"bronze" | |
], | |
[ | |
"data.table", | |
"gold" | |
], | |
[ | |
"ggplot2", | |
"gold" | |
], | |
[ | |
"ggplot2", | |
"silver" | |
], | |
[ | |
"r", | |
"silver" | |
], | |
[ | |
"plot", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "Tensibai", | |
"href": "/users/3627607/tensibai", | |
"tag_badges": [ | |
[ | |
"r", | |
"bronze" | |
], | |
[ | |
"r", | |
"silver" | |
], | |
[ | |
"chef", | |
"bronze" | |
], | |
[ | |
"ruby", | |
"bronze" | |
], | |
[ | |
"chef-recipe", | |
"bronze" | |
], | |
[ | |
"chef", | |
"silver" | |
] | |
] | |
}, | |
{ | |
"name": "zx8754", | |
"href": "/users/680068/zx8754", | |
"tag_badges": [ | |
[ | |
"ggplot2", | |
"bronze" | |
], | |
[ | |
"excel", | |
"bronze" | |
], | |
[ | |
"dataframe", | |
"bronze" | |
], | |
[ | |
"dplyr", | |
"bronze" | |
], | |
[ | |
"plot", | |
"bronze" | |
], | |
[ | |
"r", | |
"silver" | |
], | |
[ | |
"bioinformatics", | |
"bronze" | |
], | |
[ | |
"r", | |
"gold" | |
] | |
] | |
}, | |
{ | |
"name": "Sotos", | |
"href": "/users/5635580/sotos", | |
"tag_badges": [ | |
[ | |
"dplyr", | |
"silver" | |
], | |
[ | |
"data.table", | |
"bronze" | |
], | |
[ | |
"r", | |
"silver" | |
], | |
[ | |
"vector", | |
"bronze" | |
], | |
[ | |
"r", | |
"gold" | |
], | |
[ | |
"dataframe", | |
"silver" | |
], | |
[ | |
"dplyr", | |
"bronze" | |
], | |
[ | |
"regex", | |
"bronze" | |
], | |
[ | |
"r", | |
"bronze" | |
], | |
[ | |
"dataframe", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "Queen", | |
"href": "/users/6294609/queen", | |
"tag_badges": [] | |
}, | |
{ | |
"name": "Cath", | |
"href": "/users/4137985/cath", | |
"tag_badges": [ | |
[ | |
"r", | |
"bronze" | |
], | |
[ | |
"r", | |
"gold" | |
], | |
[ | |
"dataframe", | |
"bronze" | |
], | |
[ | |
"r", | |
"silver" | |
], | |
[ | |
"regex", | |
"bronze" | |
] | |
] | |
}, | |
{ | |
"name": "Roman Lu\u0161trik", | |
"href": "/users/322912/roman-lustrik", | |
"tag_badges": [ | |
[ | |
"r", | |
"gold" | |
], | |
[ | |
"statistics", | |
"bronze" | |
], | |
[ | |
"dataframe", | |
"bronze" | |
], | |
[ | |
"ggplot2", | |
"bronze" | |
], | |
[ | |