Skip to content

Instantly share code, notes, and snippets.

@grippado
Forked from onhernandes/meetup-insights.py
Created August 2, 2018 15:09
Show Gist options
  • Save grippado/4c8e3101a92ac9fbaafd9f22ffd4dd12 to your computer and use it in GitHub Desktop.
Save grippado/4c8e3101a92ac9fbaafd9f22ffd4dd12 to your computer and use it in GitHub Desktop.
Know how your meetup.com group is growing through events!
# Know how your meetup.com group is growing through events!
# Get your API token here: https://secure.meetup.com/pt-BR/meetup_api/key/
# You don't need to install nothing! It's 100% pure python
# python meetup-insights.py <org-name> <your api token>
from urllib import request,parse
from functools import reduce
import datetime
import sys
import json
group = sys.argv[1]
key = sys.argv[2]
def make_url(path, additional):
additional["key"] = key
additional = parse.urlencode(additional)
return f"https://api.meetup.com/{path}?{additional}"
def get_group():
r = request.urlopen(make_url(group, {"only": "created,members,name,link"}))
return json.loads(r.read())
def get_events():
add = {
"only": "id,name,rsvp_limit,status,local_date,yes_rsvp_count",
"status": "past,upcoming"
}
r = request.urlopen(make_url(f"{group}/events", add))
return json.loads(r.read())
def get_members(offset = 0):
add = {
"group_urlname": group,
"offset": offset,
"only": "joined"
}
r = request.urlopen(make_url("2/members", add))
data = json.loads(r.read())
results = data["results"]
if len(results) > 0:
results = results + get_members(offset + 1)
return results
def main():
group_data = get_group()
members = get_members()
events = get_events()
convert = lambda t: datetime.datetime.strptime(t, "%Y-%m-%d")
deal_milliseconds = lambda t: datetime.datetime.utcfromtimestamp(0) + datetime.timedelta(milliseconds=t)
print("Group: %s\n" % (group_data["name"]))
for e in events:
local_date = convert(e["local_date"])
date_compare = lambda m: deal_milliseconds(m["joined"]) < local_date
until_now = len(list(filter(date_compare, members)))
print("Event: %s" % (e["name"]))
print("Date: %s" % (e["local_date"]))
print("Total members until event date: %s\n" % (until_now))
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment