Skip to content

Instantly share code, notes, and snippets.

@nanodust
Last active December 31, 2015 04:48
Show Gist options
  • Save nanodust/7936172 to your computer and use it in GitHub Desktop.
Save nanodust/7936172 to your computer and use it in GitHub Desktop.
# this is an R script that discovers how many members are shared across two meetups. # bootstrapped with https://gist.github.com/szilard/7036195
# this is an R script that discovers how many members are shared across two meetups.
# bootstrapped with https://gist.github.com/szilard/7036195
# note
# this manual pagination is horrid; but this is a quick stunt so I'm sticking with it
# instead of figuring out a better way in R, or moving to python
# i am 1492429
library(yaml)
library(RJSONIO)
library(httr)
 
api_key <- yaml.load_file("meetup_api_key.yaml")$api_key
## get your api key from http://www.meetup.com/meetup_api/key/ while logged in
 
set.seed(123)
get_ssl <- function(url) rawToChar(GET(url, config = list(sslversion = 3, ssl.verifyhost = FALSE))$content)
## wrap httr::GET with ssl options that work with meetup.com
gid_dataviz <- 10468212
gid_machine <- 1740863
# Get Dataviz Members
# there are 256 as of writing... so we need 2 manual paginations.
req_url <- paste0("https://www.meetup.com/2/members?key=", api_key,"&page=", 200,"&offset=", 0, "&group_id=", gid_dataviz)
group_data <- fromJSON(get_ssl(req_url))
md1 <- sort(sapply(group_data$results, function(x) x$id))
req_url <- paste0("https://www.meetup.com/2/members?key=", api_key,"&page=", 200,"&offset=", 1, "&group_id=", gid_dataviz)
group_data <- fromJSON(get_ssl(req_url))
md2 <- sort(sapply(group_data$results, function(x) x$id))
members_dataviz <- union(md1,md2)
#print(members_dataviz)
# Get machine learning members
# there are 1278 as of writing... so we need 7 manual paginations.
req_url <- paste0("https://www.meetup.com/2/members?key=", api_key,"&page=", 200,"&offset=", 0, "&group_id=", gid_machine)
print(req_url)
group_data = fromJSON(get_ssl(req_url))
mm1 <- sort(sapply(group_data$results, function(x) x$id))
req_url <- paste0("https://www.meetup.com/2/members?key=", api_key,"&page=", 200,"&offset=", 1, "&group_id=", gid_machine)
print(req_url)
group_data = fromJSON(get_ssl(req_url))
mm2 <- sort(sapply(group_data$results, function(x) x$id))
req_url <- paste0("https://www.meetup.com/2/members?key=", api_key,"&page=", 200,"&offset=", 2, "&group_id=", gid_machine)
print(req_url)
group_data = fromJSON(get_ssl(req_url))
mm3 <- sort(sapply(group_data$results, function(x) x$id))
req_url <- paste0("https://www.meetup.com/2/members?key=", api_key,"&page=", 200,"&offset=", 3, "&group_id=", gid_machine)
print(req_url)
group_data = fromJSON(get_ssl(req_url))
mm4 <- sort(sapply(group_data$results, function(x) x$id))
req_url <- paste0("https://www.meetup.com/2/members?key=", api_key,"&page=", 200,"&offset=", 4, "&group_id=", gid_machine)
print(req_url)
group_data = fromJSON(get_ssl(req_url))
mm5 <- sort(sapply(group_data$results, function(x) x$id))
req_url <- paste0("https://www.meetup.com/2/members?key=", api_key,"&page=", 200,"&offset=", 5, "&group_id=", gid_machine)
print(req_url)
group_data = fromJSON(get_ssl(req_url))
mm6 <- sort(sapply(group_data$results, function(x) x$id))
req_url <- paste0("https://www.meetup.com/2/members?key=", api_key,"&page=", 200,"&offset=", 6, "&group_id=", gid_machine)
print(req_url)
group_data = fromJSON(get_ssl(req_url))
mm7 <- sort(sapply(group_data$results, function(x) x$id))
members_machine <- Reduce(union, list(mm1,mm2,mm3,mm4,mm5,mm6,mm7))
#print('dataviz')
#print(members_dataviz)
#print('machine')
#print(members_machine)
both <- intersect(members_dataviz,members_machine)
print(length(both))
@nanodust
Copy link
Author

i really hate the pagination; not sure how to better handle that in R.

was suggested I refactor with 'fromJSON' function from the package 'jsonlite' instead of 'RJSONIO': "so that rsvp_data$results is automatically a data frame. So you can just do rsvp_data$results$member$name to get the column with names."

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment