Skip to content

Instantly share code, notes, and snippets.

@gabriel
Created December 27, 2016 19:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gabriel/a5a4be7ef031ba8f58966eba7afb4a55 to your computer and use it in GitHub Desktop.
Save gabriel/a5a4be7ef031ba8f58966eba7afb4a55 to your computer and use it in GitHub Desktop.
require 'net/http'
require 'json'
require 'csv'
# Put access token
AccessToken = ""
RequestDelay = 1 # in seconds
def messages(group_id, group_name)
limit = 100
before_id = ""
CSV.open(group_id + " " + group_name + ".csv", "w") do |csv|
loop do
uri = "https://api.groupme.com/v3/groups/#{group_id}/messages?limit=#{limit}&before_id=#{before_id}&access_token=#{AccessToken}"
puts uri
result = Net::HTTP.get(URI.parse(uri))
break unless result
messages_json = JSON.parse(result)
message_id = ""
messages_json["response"]["messages"].each_with_index do |m, k|
message_id = m["id"]
csv << [message_id, m["user_id"], m["name"], m["created_at"], m["text"]]
end
before_id = message_id
puts before_id
sleep RequestDelay
end
end
end
def groups
page = 1
per_page = 100
loop do
uri = "https://api.groupme.com/v3/groups?per_page=#{per_page}&page=#{page}&access_token=#{AccessToken}"
puts uri
result = Net::HTTP.get(URI.parse(uri))
groups_json = JSON.parse(result)
break if groups_json["response"].length == 0
csv_str = CSV.generate do |csv|
groups_json["response"].each_with_index do |group, j|
# index = ((page-1)*per_page)+j
csv << [group["group_id"],group["name"]]
end
end
page += 1
puts csv_str
sleep RequestDelay
end
end
# To show groups
#groups
# Write out messages
messages("2461547", "Ribday")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment