Skip to content

Instantly share code, notes, and snippets.

@kei-p
Last active June 2, 2020 03:50
Show Gist options
  • Save kei-p/fe9b2ebb319da568e66d5aa5dcf1bc94 to your computer and use it in GitHub Desktop.
Save kei-p/fe9b2ebb319da568e66d5aa5dcf1bc94 to your computer and use it in GitHub Desktop.
generate_issue_csv
require "net/http"
require "json"
require "csv"
require "time"
page = 1
def time_parse(time)
return unless time
Time.parse(time).localtime("+09:00")
end
repo = 'xxxx'
CSV.open('issues.csv', 'w') do |data|
loop do
uri = URI.parse("https://api.github.com/repos/#{repo}/issues")
http = Net::HTTP.new(uri.host, uri.port)
uri.query = URI.encode_www_form({ page: page, state: 'all' })
http.use_ssl = true
headers = { "Authorization" => "token #{ENV['GITHUB_TOKEN']}" }
response = http.get(uri, headers)
all_issues = JSON.parse(response.body)
all_issues.reject do |issue|
issue.dig('pull_request')
end.each do |issue|
row = [
issue.dig('title'),
issue.dig('number'),
time_parse(issue.dig('created_at')),
time_parse(issue.dig('closed_at'))
]
data << row
end
page += 1
break if all_issues.size == 0 || page > 100
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment