Sha256: cf1280664223af2914327d894b9d85f18e7cb3eb1438da4beeb503c8a6e7200d

Contents?: true

Size: 1.95 KB

Versions: 1

Compression:

Stored size: 1.95 KB

Contents

## Page Structure
# activity_doc(whole)
#   tournament_doc
#     record_doc
#     record_doc
#     record_doc
#     record_doc
#   tournament_doc
#     record_doc
#     record_doc
#     record_doc
###################

require 'atp_scraper/activities/record'
require 'atp_scraper/activities/tournament'
module AtpScraper
  # Scrape activity data
  class Activity
    include Activities
    def initialize(html, html_charset = 'utf-8')
      @activity_doc = AtpScraper::Html.parse(html, html_charset)
      @player_name = pickup_player_name(@activity_doc)
    end

    def pickup_activity_data
      result = []

      search_tournaments_doc(@activity_doc).each do |tournament_doc|
        tournament = Tournament.new(tournament_doc)
        tournament.records.each do |record_doc|
          record = Record.new(record_doc)
          record_hash = create_record(record.info, tournament.info)
          result.push(record_hash)
        end
      end
      result
    end

    private

    def search_tournaments_doc(activity_doc)
      activity_doc.css(".activity-tournament-table")
    end

    def create_record(record, tournament)
      {
        year: tournament[:year],
        player_name: @player_name,
        player_rank: tournament[:ranking],
        opponent_name: record[:opponent_name],
        opponent_rank: record[:opponent_rank],
        round: record[:round],
        score: record[:score],
        win_loss: record[:win_loss],
        tournament_name: tournament[:name],
        tournament_category: tournament[:category],
        tournament_location: tournament[:location],
        tournament_start_date: tournament[:date][:start],
        tournament_end_date: tournament[:date][:end],
        tournament_surface: tournament[:surface],
        tournament_surface_inout: tournament[:surface_inout]
      }
    end

    def pickup_player_name(activity_doc)
      activity_doc
        .css("meta[property=\"pageTransitionTitle\"]")
        .attr("content").value
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
atp_scraper-0.6.0 lib/atp_scraper/activity.rb