12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/trendhub/repositories.rb', line 12
def fetch(time_range, language = nil)
validate_language(language)
response = HTTP.get("https://github.com/trending/#{language}?since=#{time_range}")
doc = Oga.parse_xml(response.to_s)
doc.css(".repo-list li").map do |repo_doc|
repo_link = repo_doc.at_css("div h3 a")
repo_name = repo_link.text.strip
repo_path = repo_link.attr('href').value
repo_url = "https://github.com#{repo_path}"
repo_desc = repo_doc.at_css("div p").text.strip
repo_info = repo_doc.css("div")[3]
repo_language = repo_info.at_css("span[itemprop='programmingLanguage']")&.text&.strip
repo_stars = repo_info.at_css("a[href='#{repo_path}/stargazers']").text.strip
repo_forks = repo_info.at_css("a[href='#{repo_path}/network']").text.strip
repo_added_stars = repo_info.css("svg.octicon-star").last.parent.text.gsub(/[^\d,]/, '')
Trendhub::Repository.new(
name: repo_name,
url: repo_url,
desc: repo_desc,
language: repo_language,
added_stars: repo_added_stars,
forks: repo_forks,
stars: repo_stars,
time_range: time_range
)
end
end
|