top_free_apps_itunes 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/bin/top_free_apps_itunes +6 -0
- data/config/environment.rb +8 -0
- data/lib/top_free_apps_itunes.rb +4 -0
- data/lib/top_free_apps_itunes/app.rb +16 -0
- data/lib/top_free_apps_itunes/cli.rb +48 -0
- data/lib/top_free_apps_itunes/scraper.rb +28 -0
- metadata +120 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 7aa8eaa115bd761eadd3363d7932a543a8f2e6f0f972f4d92465a11a1609de2c
|
|
4
|
+
data.tar.gz: 2af306c28ce4aba3d1b2c0f5fefe94bfe2d8ee6700b60cb22a3778e8f747ad25
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: cdcb4711ac7acee66dc14bfacceeaf316fc0180883ae810af0bcdf0f62cf9f9fecb9a8bc6d4269897b09a458306b94d0a4c0d201d16630ad634c2d56adaab8bd
|
|
7
|
+
data.tar.gz: fae136db1785b1666bfdc1d366b06c300f550fdf34089351bd3dddcbeb849213b482a25703f5501c8141cdb8f10af10b03ac778502de77ab8d10b1b5dffc1940
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
class TopFreeAppsItunes::App
|
|
2
|
+
|
|
3
|
+
attr_accessor :title, :url, :developer, :category, :rating, :language, :size
|
|
4
|
+
@@all = []
|
|
5
|
+
|
|
6
|
+
def initialize(title, url)
|
|
7
|
+
@title = title
|
|
8
|
+
@url = url
|
|
9
|
+
@@all << self
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def self.all
|
|
13
|
+
@@all
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
class TopFreeAppsItunes::CLI
|
|
2
|
+
|
|
3
|
+
def run
|
|
4
|
+
puts "Welcome to iTunes' Top Free Apps List!"
|
|
5
|
+
|
|
6
|
+
TopFreeAppsItunes::Scraper.scrape_itunes
|
|
7
|
+
|
|
8
|
+
TopFreeAppsItunes::App.all.each.with_index(1) do |app, i|
|
|
9
|
+
puts "#{i}. #{app.title}"
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
menu
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def menu
|
|
16
|
+
|
|
17
|
+
puts ""
|
|
18
|
+
puts "Please select an App to view its details:"
|
|
19
|
+
|
|
20
|
+
input = gets.chomp
|
|
21
|
+
|
|
22
|
+
#app = App.all[input.to_i - 1]
|
|
23
|
+
|
|
24
|
+
if input.to_i > 0 && input.to_i <=TopFreeAppsItunes::App.all.size
|
|
25
|
+
app = TopFreeAppsItunes::App.all[input.to_i - 1]
|
|
26
|
+
TopFreeAppsItunes::Scraper.scrape_app_details(app)
|
|
27
|
+
puts ""
|
|
28
|
+
puts "#{app.title}"
|
|
29
|
+
puts "Category: #{app.category}"
|
|
30
|
+
puts "Developer: #{app.developer}"
|
|
31
|
+
puts "Rating: #{app.rating}"
|
|
32
|
+
puts "Languages: #{app.language}"
|
|
33
|
+
puts "Size: #{app.size}"
|
|
34
|
+
menu
|
|
35
|
+
elsif input == "exit"
|
|
36
|
+
puts""
|
|
37
|
+
puts "Thank you and goodbye!"
|
|
38
|
+
puts ""
|
|
39
|
+
exit
|
|
40
|
+
else
|
|
41
|
+
puts ""
|
|
42
|
+
puts "Invalid choice... please select again"
|
|
43
|
+
menu
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
class TopFreeAppsItunes::Scraper
|
|
2
|
+
|
|
3
|
+
def self.scrape_itunes
|
|
4
|
+
|
|
5
|
+
html = open("https://www.apple.com/itunes/charts/free-apps/")
|
|
6
|
+
doc = Nokogiri::HTML(html)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
doc.css(".section-content li").each do |app_doc|
|
|
10
|
+
title = app_doc.css("h3 a").text
|
|
11
|
+
url = app_doc.css("h3 a").attr("href").value
|
|
12
|
+
TopFreeAppsItunes::App.new(title, url)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def self.scrape_app_details(app)
|
|
18
|
+
|
|
19
|
+
html = open(app.url)
|
|
20
|
+
doc = Nokogiri::HTML(html)
|
|
21
|
+
app.developer = doc.css(".l-row dd")[0].text.strip
|
|
22
|
+
app.category = doc.css(".l-row dd")[2].text.strip
|
|
23
|
+
app.rating = doc.css(".l-row .we-customer-ratings__averages__display").text
|
|
24
|
+
app.language = doc.css(".l-row dd")[4].text.strip
|
|
25
|
+
app.size = doc.css(".l-row dd")[1].text.strip
|
|
26
|
+
|
|
27
|
+
end
|
|
28
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: top_free_apps_itunes
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.2.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Irfan Maknojia
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2019-02-02 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: bundler
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '2.0'
|
|
20
|
+
type: :development
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '2.0'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: rake
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '10.0'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '10.0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: rspec
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - "~>"
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '3.0'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - "~>"
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '3.0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: nokogiri
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - ">="
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - ">="
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: pry
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - ">="
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ">="
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
83
|
+
description: This is a command line tool to help locate the top free 100 apps on iTunes.
|
|
84
|
+
email:
|
|
85
|
+
- imak_7@yahoo.com
|
|
86
|
+
executables:
|
|
87
|
+
- top_free_apps_itunes
|
|
88
|
+
extensions: []
|
|
89
|
+
extra_rdoc_files: []
|
|
90
|
+
files:
|
|
91
|
+
- bin/top_free_apps_itunes
|
|
92
|
+
- config/environment.rb
|
|
93
|
+
- lib/top_free_apps_itunes.rb
|
|
94
|
+
- lib/top_free_apps_itunes/app.rb
|
|
95
|
+
- lib/top_free_apps_itunes/cli.rb
|
|
96
|
+
- lib/top_free_apps_itunes/scraper.rb
|
|
97
|
+
homepage: ''
|
|
98
|
+
licenses:
|
|
99
|
+
- MIT
|
|
100
|
+
metadata: {}
|
|
101
|
+
post_install_message:
|
|
102
|
+
rdoc_options: []
|
|
103
|
+
require_paths:
|
|
104
|
+
- lib
|
|
105
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
106
|
+
requirements:
|
|
107
|
+
- - ">="
|
|
108
|
+
- !ruby/object:Gem::Version
|
|
109
|
+
version: '0'
|
|
110
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
111
|
+
requirements:
|
|
112
|
+
- - ">="
|
|
113
|
+
- !ruby/object:Gem::Version
|
|
114
|
+
version: '0'
|
|
115
|
+
requirements: []
|
|
116
|
+
rubygems_version: 3.0.2
|
|
117
|
+
signing_key:
|
|
118
|
+
specification_version: 4
|
|
119
|
+
summary: This is a command line tool to help locate the top free 100 apps on iTunes.
|
|
120
|
+
test_files: []
|