Gh::Trending

A simple gem to parse trending repositories and developers from the github's trending page.

Installation

Add this line to your application's Gemfile:

gem 'gh-trending'

And then execute:

$ bundle

Or install it yourself as:

$ gem install gh-trending

Usage

There are two ways of using this gem:

  • To fetch trending repositories:

Gh::Trending::Repositories.new.get(language:, time_period:)

  • To fetch trending developers:

Gh::Trending::Developers.new.get(language:, time_period:)

The arguments language and time_period are provided in hash syntax, and they are not required. Below there are simplified examples

Accepted values for the time_period argument (as of Jun 2017):

  • :daily (default) => Will return the trending developers/repositories in the last day
  • :weekly => Will return the trending developers/repositories in the last week
  • :monthly => Will return the trending developers/repositories in the last month.

  • If you don't provide any value for the time_period argument, the value :daily is used.

  • If you don't provide any value for the language argument, it uses the default github's trending page option, which considers all languages.

  • If you provide an unknown time_period argument, an error is raised

  • If you don't provide any value for both arguments, this returns the trending developers/repositories for all languages, in the last day.

Examples

crawler = Gh::Trending::Developers.new
crawler.get
# => [
# <Gh::Trending::Developer:0x00000002f87760
# @full_name="Dawson Corwin",
# @hot_repository_url="http://denesiklehner.org/josianne",
# @user_profile_url="http://hane.co/camren"
# ,
# ...
# ]
  • full_name => The full name of the developer
  • hot_repository_url => The name of the repository that is trending for this developer, in the provided time_period and language.
    • In the example above, since no language and time_period were provided, the repository "http://denesiklehner.org/josianne" is the trending repository of this user, since the last day for any language.
  • user_profile_url => The github user profile url.
crawler = Gh::Trending::Repositories.new
crawler.get language: 'javascript'
# => [#<Gh::Trending::Repository:0x000000035231b0
 #  @description="Unicode's answer to Base64",
 #  @language="JavaScript",
 #  @name="/qntm/base65536",
 #  @period_stars=104,
 #  @url="https://github.com/qntm/base65536">,
 # #<Gh::Trending::Repository:0x00000003511d70
 #  @description="Prettier is an opinionated JavaScript formatter.",
 #  @language="JavaScript",
 #  @name="/prettier/prettier",
 #  @period_stars=100,
 #  @url="https://github.com/prettier/prettier">,
 # ]
  • description => The description of the repository
  • language => Primary programming language of the repository (should match the one provided in the language argument, if provided)
  • name => The name of the repository
  • url => The github's URL of the repository
  • period_stars => The number of stars of the repository in the requested time_period.

Dependencies

Tests

To run the test suite:

rake spec

License

The gem is available as open source under the terms of the MIT License.