#!/usr/bin/env ruby require 'bundler/setup' Bundler.require require 'pp' client = Octokit::Client.new(access_token: ENV.fetch("ACCESS_TOKEN")) repositories = [] module Autowait def wait_for_ratelimit return unless last_response limit = ratelimit if limit.remaining < 1 warn "waiting for #{limit.resets_in}s to refresh rate limit" sleep limit.resets_in + 3 end end def request(*) super ensure wait_for_ratelimit end end client.extend(Autowait) client.auto_paginate = true %w[Praha Barcelona Prague].each do |city| users = client.search_users(%|location:#{city}|) users.items.each do |user| repositories = client.repositories(user.id, accept: 'application/vnd.github.mercy-preview+json') repositories.select do |repo| valid = false if repo.name.match(/\bunity/i) valid = true end if repo.topics.grep(/\b(unity)/i).size > 0 valid = true end if repo.description&.match(/\b(unity)\b/i) valid = true end if valid puts "Found #{repo.html_url} #{'FORK' if repo.fork} (#{repo.stargazers_count} stars, #{repo.watchers_count} watchers, #{repo.forks_count} forks) with topics: #{repo.topics.join(', ')}" end end end end