DreamTeam 1.0.4 → 1.0.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 25503a616268470b575053dc6d52178409d3430d99f12672798870d51355d00a
4
- data.tar.gz: 1e8dceb856a826af65504c217b111f28223056ab7a3a4c23be0f5ae5c8952218
3
+ metadata.gz: ea8a784a181c210965d831f2bffadd7f9661defa8e945513a195ffa96a20c446
4
+ data.tar.gz: 950744a84f6b8f69d3d44046ff7e9c7af8485f30a45f250be8f89f8b76115eee
5
5
  SHA512:
6
- metadata.gz: 5b63ee656740dc1566284b53d94151a4064c21f31a84ae588eb3a39285dab18fa9d023227beba59dcecbc9209545bba5e5ca2a9842eb55131fb42812b110ec6b
7
- data.tar.gz: 51292ace74890144f6714a43904ed6f2103fcf4e291a1088aa4b6eedcca096cafc2ee280fd3c07e1cb15363e532e9e8f2ee18d7a8c6bf35937547c45434a2bd0
6
+ metadata.gz: db1467c54c0d32afb099e233817ddc80c156188c4dfb3acda88f819e0ac32d2c69a9740bd0d5e0293efb3c577969dc2209e2a8c50d5c8f60983c31133ad9484b
7
+ data.tar.gz: c564993091e2ef75b240409ab49ccbd3b7b7475bfd9ec7eafa1d278c0f670698bc7c37c88ed3952a114c73fd807c5a70868bf37478f44921a66bf7942fd06e8b
data/Gemfile CHANGED
@@ -1,12 +1,12 @@
1
- # frozen_string_literal: true
2
-
3
- source "https://rubygems.org"
4
-
5
- # Specify your gem's dependencies in DreamTeam.gemspec
6
- gemspec
7
-
8
- gem "rake", "~> 13.0"
9
-
10
- gem "minitest", "~> 5.0"
11
-
12
- gem "nokogiri"
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ # Specify your gem's dependencies in DreamTeam.gemspec
6
+ gemspec
7
+
8
+ gem "rake", "~> 13.0"
9
+
10
+ gem "minitest", "~> 5.0"
11
+
12
+ gem "nokogiri", "~> 1.13.0"
data/README.md CHANGED
@@ -3,24 +3,24 @@
3
3
  Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/DreamTeam`. To experiment with that code, run `bin/console` for an interactive prompt.
4
4
 
5
5
  This gem allows you to get information about the steam user's games and the top 250 IMDb movies.
6
- Information about steam games includes:
7
- -Name
8
- -Picture
9
- -Price
10
- -Developer
11
- -Release date
12
- -Description
13
- -Number of recommendations
14
- -Time spent in the game.
15
- Information about the films includes:
16
- -Place in the rating
17
- -Film name
18
- -Full name
19
- -Release date
20
- -Picture
21
- -The actors
22
- -Rating
23
- -Rating Count
6
+ Information about steam games includes:
7
+ -Name
8
+ -Picture
9
+ -Price
10
+ -Developer
11
+ -Release date
12
+ -Description
13
+ -Number of recommendations
14
+ -Time spent in the game.
15
+ Information about the films includes:
16
+ -Place in the rating
17
+ -Film name
18
+ -Full name
19
+ -Release date
20
+ -Picture
21
+ -The actors
22
+ -Rating
23
+ -Rating Count
24
24
 
25
25
  ## Installation
26
26
 
@@ -34,7 +34,9 @@ If bundler is not being used to manage dependencies, install the gem by executin
34
34
 
35
35
  ## Usage
36
36
 
37
- TODO: Write usage instructions here
37
+ usage example:
38
+ object = DreamTeam::Html_main::Html_main_page.new
39
+ object.create_main('Path to specify the path where the files will be created',"Steam id")
38
40
 
39
41
  ## Development
40
42
 
@@ -0,0 +1,88 @@
1
+ require_relative 'parsing_films'
2
+
3
+ module DreamTeam
4
+ module Table_film
5
+ class Table_film_page
6
+
7
+ def create_table_with_film(path)
8
+ fileHtml = File.new(path + "/table_film.html", "w+")
9
+
10
+ fileHtml.puts "<style>
11
+ .table_dark {
12
+ font-family: 'Lucida Sans Unicode', 'Lucida Grande', Sans-Serif;
13
+ font-size: 14px;
14
+ width: 100%;
15
+ text-align: left;
16
+ border-collapse: collapse;
17
+ background: #252F48;
18
+ margin: 10px;
19
+ }
20
+ .table_dark th {
21
+ color: #EDB749;
22
+ border-bottom: 1px solid #37B5A5;
23
+ padding: 12px 17px;
24
+ }
25
+ .table_dark td {
26
+ color: #CAD4D6;
27
+ border-bottom: 1px solid #37B5A5;
28
+ border-right: 1px solid #37B5A5;
29
+ padding: 7px 17px;
30
+ }
31
+ .table_dark tr:last-child td {
32
+ border-bottom: none;
33
+ }
34
+ .table_dark td:last-child {
35
+ border-right: none;
36
+ }
37
+ .table_dark tr:hover td {
38
+ text-decoration: underline;
39
+ } </style>
40
+
41
+ <table class='table_dark'>
42
+ <tr>
43
+ <th>Rang</th>
44
+ <th>Film name</th>
45
+ <th>Full name</th>
46
+ <th>Year</th>
47
+ <th>Image</th>
48
+ <th>The actors</th>
49
+ <th>Rating</th>
50
+ <th>Rating Count</th>
51
+
52
+ </tr>"
53
+
54
+ filmsInformation = get_all_films(get_films_id())
55
+ filmsInformation.each do |elem|
56
+ fileHtml.puts "<tr>"
57
+ fileHtml.puts "<th>"
58
+ fileHtml.puts elem.rank
59
+ fileHtml.puts "<th>"
60
+ fileHtml.puts elem.title
61
+ fileHtml.puts "<th>"
62
+ fileHtml.puts elem.title_full
63
+ fileHtml.puts "<th>"
64
+ fileHtml.puts elem.year
65
+ fileHtml.puts "<th>"
66
+ fileHtml.puts "<img src = '#{elem.image}'
67
+ width = '102'
68
+ height = '160'>"
69
+ fileHtml.puts "<th>"
70
+ fileHtml.puts elem.crew
71
+ fileHtml.puts "<th>"
72
+ fileHtml.puts elem.imDbRating
73
+ fileHtml.puts "<th>"
74
+ fileHtml.puts elem.imDbRatingCount
75
+ fileHtml.puts "<th>"
76
+
77
+
78
+ fileHtml.puts "</tr>"
79
+ end
80
+
81
+ fileHtml.puts "</table>"
82
+ fileHtml.close
83
+ end
84
+
85
+
86
+ end
87
+ end
88
+ end
@@ -2,63 +2,69 @@ require 'open-uri'
2
2
  require 'nokogiri'
3
3
  require 'json'
4
4
 
5
- class Film
6
- include Comparable
7
- attr_reader :id, :rank, :title, :title_full, :year, :image, :crew, :imDbRating, :imDbRatingCount
5
+ module DreamTeam
6
+ module Parsing_film
8
7
 
9
- #конструктор класса. из строки вытаскивает функцией help нужные данные для полей
10
- def initialize (arr_film)
11
- arr = arr_film.to_s.gsub('{','').gsub('}','').gsub('",','"^^^').split('^^^')
12
- @id = help(arr, 0)
13
- @rank = help(arr, 1).to_i
14
- @title = help(arr, 2)
15
- @title_full = help(arr, 3)
16
- @year = help(arr, 4).to_i
17
- @image = help(arr, 5)
18
- @crew = help(arr, 6)
19
- @imDbRating = help(arr, 7).to_f
20
- @imDbRatingCount = help(arr, 8).to_i
21
- end
8
+ class Film
9
+ include Comparable
10
+ attr_reader :id, :rank, :title, :title_full, :year, :image, :crew, :imDbRating, :imDbRatingCount
22
11
 
23
- def <=>(an_other)
24
- an_other.year <=> self.year
25
- end
12
+ #конструктор класса. из строки вытаскивает функцией help нужные данные для полей
13
+ def initialize (arr_film)
14
+ arr = arr_film.to_s.gsub('{','').gsub('}','').gsub('",','"^^^').split('^^^')
15
+ @id = help(arr, 0)
16
+ @rank = help(arr, 1).to_i
17
+ @title = help(arr, 2)
18
+ @title_full = help(arr, 3)
19
+ @year = help(arr, 4).to_i
20
+ @image = help(arr, 5)
21
+ @crew = help(arr, 6)
22
+ @imDbRating = help(arr, 7).to_f
23
+ @imDbRatingCount = help(arr, 8).to_i
24
+ end
26
25
 
27
- def help(arr, i)
28
- return arr[i][arr[i].index(':"') + 2, arr[i].length - arr[i].index(':"') - 3]
29
- end
30
- end
26
+ def <=>(an_other)
27
+ an_other.year <=> self.year
28
+ end
29
+
30
+ def help(arr, i)
31
+ return arr[i][arr[i].index(':"') + 2, arr[i].length - arr[i].index(':"') - 3]
32
+ end
33
+ end
31
34
 
32
- def get_films_id()
33
- uri = 'https://imdb-api.com/en/API/Top250Movies/k_uq4za59n'
34
- doc = Nokogiri::HTML(URI.open(uri))
35
+ def get_films_id()
36
+ uri = 'https://imdb-api.com/en/API/Top250Movies/k_uq4za59n'
37
+ doc = Nokogiri::HTML(URI.open(uri))
35
38
 
36
- text = doc.text.gsub('<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
39
+ text = doc.text.gsub('<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
37
40
  "http://www.w3.org/TR/REC-html40/loose.dtd"> <html><body><p>', '')
38
- text = text.gsub('{"items":[', '').gsub(']','')
41
+ text = text.gsub('{"items":[', '').gsub(']','')
39
42
 
40
43
 
41
- #text = '{"id":"1424411", ":rank":"1", ":title":"title 1", ":year":"1990", ":image":"http:\picture1.com",":crew":"Tom Jon Mike", ":imDbRating":"9.2", ":imDbRatingCount":"8.1"},{"id":"9352791", ":rank":"2", ":title":"title 2", ":year":"2006", ":image":"http:\picture1.com",":crew":"Tom Jon Mike", ":imDbRating":"9.2", ":imDbRatingCount":"8.1"},{"id":"1908543", ":rank":"3", ":title":"title 3", ":year":"2012", ":image":"http:\picture1.com",":crew":"Tom Jon Mike", ":imDbRating":"9.2", ":imDbRatingCount":"8.1"}'
42
- #text = '{"id":"tt0111161","rank":"1","title":"The Shawshank Redemption","fullTitle":"The Shawshank Redemption (1994)","year":"1994","image":"https://m.media-amazon.com/images/M/MV5BMDFkYTc0MGEtZmNhMC00ZDIzLWFmNTEtODM1ZmRlYWMwMWFmXkEyXkFqcGdeQXVyMTMxODk2OTU@._V1_UX128_CR0,12,128,176_AL_.jpg","crew":"Frank Darabont (dir.), Tim Robbins, Morgan Freeman","imDbRating":"9.2","imDbRatingCount":"2650504"},{"id":"tt0068646","rank":"2","title":"The Godfather","fullTitle":"The Godfather (1972)","year":"1972","image":"https://m.media-amazon.com/images/M/MV5BM2MyNjYxNmUtYTAwNi00MTYxLWJmNWYtYzZlODY3ZTk3OTFlXkEyXkFqcGdeQXVyNzkwMjQ5NzM@._V1_UX128_CR0,12,128,176_AL_.jpg","crew":"Francis Ford Coppola (dir.), Marlon Brando, Al Pacino","imDbRating":"9.2","imDbRatingCount":"1837317"},{"id":"tt0468569","rank":"3","title":"The Dark Knight","fullTitle":"The Dark Knight (2008)","year":"2008","image":"https://m.media-amazon.com/images/M/MV5BMTMxNTMwODM0NF5BMl5BanBnXkFtZTcwODAyMTk2Mw@@._V1_UX128_CR0,12,128,176_AL_.jpg","crew":"Christopher Nolan (dir.), Christian Bale, Heath Ledger","imDbRating":"9.0","imDbRatingCount":"2622617"},{"id":"tt0071562","rank":"4","title":"The Godfather Part II","fullTitle":"The Godfather Part II (1974)","year":"1974","image":"https://m.media-amazon.com/images/M/MV5BMWMwMGQzZTItY2JlNC00OWZiLWIyMDctNDk2ZDQ2YjRjMWQ0XkEyXkFqcGdeQXVyNzkwMjQ5NzM@._V1_UX128_CR0,12,128,176_AL_.jpg","crew":"Francis Ford Coppola (dir.), Al Pacino, Robert De Niro","imDbRating":"9.0","imDbRatingCount":"1259016"},{"id":"tt0050083","rank":"5","title":"12 Angry Men","fullTitle":"12 Angry Men (1957)","year":"1957","image":"https://m.media-amazon.com/images/M/MV5BMWU4N2FjNzYtNTVkNC00NzQ0LTg0MjAtYTJlMjFhNGUxZDFmXkEyXkFqcGdeQXVyNjc1NTYyMjg@._V1_UX128_CR0,12,128,176_AL_.jpg","crew":"Sidney Lumet (dir.), Henry Fonda, Lee J. Cobb","imDbRating":"9.0","imDbRatingCount":"782597"}'
43
- text.gsub('},','}').gsub('"errorMessage":""}','')
44
- end
44
+ #text = '{"id":"1424411", ":rank":"1", ":title":"title 1", ":year":"1990", ":image":"http:\picture1.com",":crew":"Tom Jon Mike", ":imDbRating":"9.2", ":imDbRatingCount":"8.1"},{"id":"9352791", ":rank":"2", ":title":"title 2", ":year":"2006", ":image":"http:\picture1.com",":crew":"Tom Jon Mike", ":imDbRating":"9.2", ":imDbRatingCount":"8.1"},{"id":"1908543", ":rank":"3", ":title":"title 3", ":year":"2012", ":image":"http:\picture1.com",":crew":"Tom Jon Mike", ":imDbRating":"9.2", ":imDbRatingCount":"8.1"}'
45
+ #text = '{"id":"tt0111161","rank":"1","title":"The Shawshank Redemption","fullTitle":"The Shawshank Redemption (1994)","year":"1994","image":"https://m.media-amazon.com/images/M/MV5BMDFkYTc0MGEtZmNhMC00ZDIzLWFmNTEtODM1ZmRlYWMwMWFmXkEyXkFqcGdeQXVyMTMxODk2OTU@._V1_UX128_CR0,12,128,176_AL_.jpg","crew":"Frank Darabont (dir.), Tim Robbins, Morgan Freeman","imDbRating":"9.2","imDbRatingCount":"2650504"},{"id":"tt0068646","rank":"2","title":"The Godfather","fullTitle":"The Godfather (1972)","year":"1972","image":"https://m.media-amazon.com/images/M/MV5BM2MyNjYxNmUtYTAwNi00MTYxLWJmNWYtYzZlODY3ZTk3OTFlXkEyXkFqcGdeQXVyNzkwMjQ5NzM@._V1_UX128_CR0,12,128,176_AL_.jpg","crew":"Francis Ford Coppola (dir.), Marlon Brando, Al Pacino","imDbRating":"9.2","imDbRatingCount":"1837317"},{"id":"tt0468569","rank":"3","title":"The Dark Knight","fullTitle":"The Dark Knight (2008)","year":"2008","image":"https://m.media-amazon.com/images/M/MV5BMTMxNTMwODM0NF5BMl5BanBnXkFtZTcwODAyMTk2Mw@@._V1_UX128_CR0,12,128,176_AL_.jpg","crew":"Christopher Nolan (dir.), Christian Bale, Heath Ledger","imDbRating":"9.0","imDbRatingCount":"2622617"},{"id":"tt0071562","rank":"4","title":"The Godfather Part II","fullTitle":"The Godfather Part II (1974)","year":"1974","image":"https://m.media-amazon.com/images/M/MV5BMWMwMGQzZTItY2JlNC00OWZiLWIyMDctNDk2ZDQ2YjRjMWQ0XkEyXkFqcGdeQXVyNzkwMjQ5NzM@._V1_UX128_CR0,12,128,176_AL_.jpg","crew":"Francis Ford Coppola (dir.), Al Pacino, Robert De Niro","imDbRating":"9.0","imDbRatingCount":"1259016"},{"id":"tt0050083","rank":"5","title":"12 Angry Men","fullTitle":"12 Angry Men (1957)","year":"1957","image":"https://m.media-amazon.com/images/M/MV5BMWU4N2FjNzYtNTVkNC00NzQ0LTg0MjAtYTJlMjFhNGUxZDFmXkEyXkFqcGdeQXVyNjc1NTYyMjg@._V1_UX128_CR0,12,128,176_AL_.jpg","crew":"Sidney Lumet (dir.), Henry Fonda, Lee J. Cobb","imDbRating":"9.0","imDbRatingCount":"782597"}'
46
+ text.gsub('},','}').gsub('"errorMessage":""}','')
47
+ end
45
48
 
46
49
 
47
- def get_all_films(text)
50
+ def get_all_films(text)
48
51
 
49
- arr_films = []
50
- while text.index('}') != nil
51
- ind_start = 0
52
- ind_finish = text.index('}')
53
- dist = ind_finish - ind_start + 1
54
- arr_films << text[ind_start, dist].gsub(' "','"')
55
- text = text.gsub(text[ind_start, dist], '')
56
- end
52
+ arr_films = []
53
+ while text.index('}') != nil
54
+ ind_start = 0
55
+ ind_finish = text.index('}')
56
+ dist = ind_finish - ind_start + 1
57
+ arr_films << text[ind_start, dist].gsub(' "','"')
58
+ text = text.gsub(text[ind_start, dist], '')
59
+ end
57
60
 
58
- rezult = []
59
- arr_films.each do|f|
60
- rezult << Film.new(f)
61
- end
61
+ rezult = []
62
+ arr_films.each do|f|
63
+ rezult << Film.new(f)
64
+ end
62
65
 
63
- rezult
66
+ rezult
67
+ end
68
+ end
64
69
  end
70
+
@@ -0,0 +1,130 @@
1
+ require_relative 'parsing_games'
2
+
3
+ module DreamTeam
4
+ module Table_game
5
+ class Table_game_page
6
+ def create_table_with_user_game(path, user_id)
7
+ file_html = File.new(path + "/table_game.html", "w+")
8
+ user_info = get_user_information(user_id)
9
+ file_html.puts "<style type='text/css'>
10
+ .table {
11
+ width: 100%;
12
+ border: none;
13
+ margin-bottom: 20px;
14
+ }
15
+ .table thead th {
16
+ font-weight: bold;
17
+ text-align: left;
18
+ border: none;
19
+ padding: 10px 15px;
20
+ background: #d8d8d8;
21
+ font-size: 14px;
22
+ }
23
+ .table thead tr th:first-child {
24
+ border-radius: 8px 0 0 8px;
25
+ }
26
+ .table thead tr th:last-child {
27
+ border-radius: 0 8px 8px 0;
28
+ }
29
+ .table tbody td {
30
+ text-align: left;
31
+ border: none;
32
+ padding: 10px 15px;
33
+ font-size: 14px;
34
+ vertical-align: top;
35
+ }
36
+ .table tbody tr:nth-child(even){
37
+ background: #f3f3f3;
38
+ }
39
+ .table tbody tr td:first-child {
40
+ border-radius: 8px 0 0 8px;
41
+ }
42
+ .table tbody tr td:last-child {
43
+ border-radius: 0 8px 8px 0;
44
+ }
45
+ </style>
46
+
47
+ <table class='table'>
48
+ <thead>
49
+ <img src = '#{user_info[:avatar]}'>
50
+ #{user_info[:username]}
51
+ <tr>
52
+ <th>Game</th>
53
+ <th>Image</th>
54
+ <th>Price</th>
55
+ <th>Developers</th>
56
+ <th>Date</th>
57
+ <th>Description</th>
58
+ <th>Recommendation</th>
59
+ <th>Time In The Game</th>
60
+ </tr>
61
+ </thead>
62
+ <tbody>"
63
+
64
+ games_information = information_of_games(get_user_games(user_id))
65
+ games_information.each do |elem|
66
+ file_html.puts "<tr>"
67
+ file_html.puts "<th>"
68
+ if elem[:name].nil?
69
+ file_html.puts "<span style = 'font-size:20pt'> - </span>"
70
+ else
71
+ file_html.puts elem[:name]
72
+ end
73
+ file_html.puts "</th>"
74
+ file_html.puts "<th>"
75
+ file_html.puts "<img src = '#{elem[:img]}'
76
+ width = '220'
77
+ height = '102'
78
+ alt = 'Picture of the game'>"
79
+ file_html.puts "</th>"
80
+ file_html.puts "<th>"
81
+ if elem[:price].nil?
82
+ file_html.puts "<span style = 'font-size:20pt'> - </span>"
83
+ else
84
+ file_html.puts elem[:price]
85
+ end
86
+ file_html.puts "</th>"
87
+ file_html.puts "<th>"
88
+ if elem[:developers].nil?
89
+ file_html.puts "<span style = 'font-size:20pt'> - </span>"
90
+ else
91
+ file_html.puts elem[:developers]
92
+ end
93
+ file_html.puts "</th>"
94
+ file_html.puts "<th>"
95
+ if elem[:date].nil?
96
+ file_html.puts "<span style = 'font-size:20pt'> - </span>"
97
+ else
98
+ file_html.puts elem[:date]
99
+ end
100
+ file_html.puts "</th>"
101
+ file_html.puts "<th>"
102
+ if elem[:desc].nil?
103
+ file_html.puts "<span style = 'font-size:20pt'> - </span>"
104
+ else
105
+ file_html.puts elem[:desc]
106
+ end
107
+ file_html.puts "</th>"
108
+ file_html.puts "<th>"
109
+ if elem[:recommendations].nil?
110
+ file_html.puts "<span style = 'font-size:20pt'> - </span>"
111
+ else
112
+ file_html.puts elem[:recommendations]
113
+ end
114
+ file_html.puts "</th>"
115
+ file_html.puts "<th>"
116
+ if elem[:time] == 0
117
+ file_html.puts "0"
118
+ else
119
+ file_html.puts "#{elem[:time].to_i/60}h #{-(elem[:time].to_i/60*60 - elem[:time].to_i)}min"
120
+ end
121
+ file_html.puts "</th>"
122
+ file_html.puts "</tr>"
123
+ end
124
+ file_html.puts "</tbody>
125
+ </table>"
126
+ file_html.close
127
+ end
128
+ end
129
+ end
130
+ end
@@ -1,64 +1,70 @@
1
1
  require 'open-uri'
2
2
  require 'nokogiri'
3
3
 
4
- def get_user_information(steam_id)
5
- url = Nokogiri::HTML5(URI.open('https://steamcommunity.com/profiles/' + steam_id + '/?xml=1')).to_s
6
- username = url[/<steamid><!--\[CDATA\[(?<username>.*)\]\]--><\/steamid>/, 1]
7
- avatar = url[/<avataricon><!--\[CDATA\[(?<avatar>.*)\]\]--><\/avataricon>/, 1]
8
- {username: username, avatar: avatar}
9
- end
4
+ module DreamTeam
5
+ module Parsing_game
6
+ class Parsing_steam_game
7
+ def get_user_information(steam_id)
8
+ url = Nokogiri::HTML5(URI.open('https://steamcommunity.com/profiles/' + steam_id + '/?xml=1')).to_s
9
+ username = url[/<steamid><!--\[CDATA\[(?<username>.*)\]\]--><\/steamid>/, 1]
10
+ avatar = url[/<avataricon><!--\[CDATA\[(?<avatar>.*)\]\]--><\/avataricon>/, 1]
11
+ {username: username, avatar: avatar}
12
+ end
10
13
 
11
- def get_user_games(steam_id)
12
- res = []
13
- begin
14
- url = Nokogiri::HTML5(URI.open('https://api.steampowered.com/IPlayerService/GetOwnedGames/v1/?steamid=' +
15
- + steam_id + '&key=' + 'FB8E10E3C18DFD06F605ACF4D049866A')).to_s
16
- rescue
17
- return res
18
- end
19
- arr = url.split(',')
20
- last_id = ''
21
- arr.each do |a|
22
- id = a.match(/"appid":(?<id>.*)/)
23
- if !id.nil?
24
- last_id = id[:id]
25
- else
26
- time = a.match(/"playtime_forever":(?<time>.*)/)
27
- if !time.nil?
28
- res.push({id: last_id, time: time[:time]})
14
+ def get_user_games(steam_id)
15
+ res = []
16
+ begin
17
+ url = Nokogiri::HTML5(URI.open('https://api.steampowered.com/IPlayerService/GetOwnedGames/v1/?steamid=' +
18
+ + steam_id + '&key=' + 'FB8E10E3C18DFD06F605ACF4D049866A')).to_s
19
+ rescue
20
+ return res
21
+ end
22
+ arr = url.split(',')
23
+ last_id = ''
24
+ arr.each do |a|
25
+ id = a.match(/"appid":(?<id>.*)/)
26
+ if !id.nil?
27
+ last_id = id[:id]
28
+ else
29
+ time = a.match(/"playtime_forever":(?<time>.*)/)
30
+ if !time.nil?
31
+ res.push({id: last_id, time: time[:time]})
32
+ end
33
+ end
34
+ end
35
+ res
29
36
  end
30
- end
31
- end
32
- res
33
- end
34
37
 
35
- def information_of_games(games_id)
36
- res = []
37
- games_id.each do |g|
38
- begin
39
- url = Nokogiri::HTML5(URI.open('https://store.steampowered.com/api/appdetails/?appids=' + g[:id])).to_s
40
- rescue
41
- next
42
- end
43
- name = url[/"name":"(?<name>.*)","steam_/, 1]
44
- time = g[:time]
45
- date = url[/date":"(?<date>.*)"},"su/, 1]
46
- price = url[/nal_formatted":"(?<price>.*) pуб\."},"pac/, 1]
47
- if price == nil
48
- price = url[/nal_formatted":"(?<price>.*)"},"pac/, 1]
49
- else
50
- price += ' rub'
51
- end
52
- developers = url[/"developers":\[(?<developers>.*)\],"publishers"/, 1]
53
- if developers != nil
54
- developers = developers.delete "\""
55
- end
56
- recommendations = url[/tions":{"total":(?<recommendations>\d*)/, 1]
57
- desc = url[/t_description":"(?<desc>.*)","sup/, 1]
58
- img = url[/"header_image":"(?<img>.*)","website"/, 1]
38
+ def information_of_games(games_id)
39
+ res = []
40
+ games_id.each do |g|
41
+ begin
42
+ url = Nokogiri::HTML5(URI.open('https://store.steampowered.com/api/appdetails/?appids=' + g[:id])).to_s
43
+ rescue
44
+ next
45
+ end
46
+ name = url[/"name":"(?<name>.*)","steam_/, 1]
47
+ time = g[:time]
48
+ date = url[/date":"(?<date>.*)"},"su/, 1]
49
+ price = url[/nal_formatted":"(?<price>.*) pуб\."},"pac/, 1]
50
+ if price == nil
51
+ price = url[/nal_formatted":"(?<price>.*)"},"pac/, 1]
52
+ else
53
+ price += ' rub'
54
+ end
55
+ developers = url[/"developers":\[(?<developers>.*)\],"publishers"/, 1]
56
+ if developers != nil
57
+ developers = developers.delete "\""
58
+ end
59
+ recommendations = url[/tions":{"total":(?<recommendations>\d*)/, 1]
60
+ desc = url[/t_description":"(?<desc>.*)","sup/, 1]
61
+ img = url[/"header_image":"(?<img>.*)","website"/, 1]
59
62
 
60
- res.push({name: name, time: time, date: date, price: price, developers: developers,
63
+ res.push({name: name, time: time, date: date, price: price, developers: developers,
61
64
  recommendations: recommendations, desc: desc, img: img})
65
+ end
66
+ res
67
+ end
68
+ end
62
69
  end
63
- res
64
- end
70
+ end
@@ -1,5 +1,5 @@
1
- require 'DreamTeam/Games/html_table'
2
- require 'DreamTeam/Films/html_table'
1
+ require 'DreamTeam/Games/html_games_table'
2
+ require 'DreamTeam/Films/html_films_table'
3
3
 
4
4
  module DreamTeam
5
5
  module Html_main
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DreamTeam
4
- VERSION = "1.0.4"
4
+ VERSION = "1.0.5"
5
5
  end
data/lib/DreamTeam.rb CHANGED
@@ -4,9 +4,9 @@ require_relative "DreamTeam/version"
4
4
 
5
5
  module DreamTeam
6
6
  class Error < StandardError; end
7
- require_relative "DreamTeam/Games/html_table"
7
+ require_relative "DreamTeam/Games/html_games_table"
8
8
  require_relative "DreamTeam/Games/parsing_games"
9
- require_relative "DreamTeam/Films/html_table"
9
+ require_relative "DreamTeam/Films/html_films_table"
10
10
  require_relative "DreamTeam/Films/parsing_films"
11
11
  require_relative "DreamTeam/html_main"
12
12
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: DreamTeam
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Spooky_Loki
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: exe
13
13
  cert_chain: []
14
- date: 2022-10-27 00:00:00.000000000 Z
14
+ date: 2022-10-28 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rake
@@ -45,16 +45,16 @@ dependencies:
45
45
  name: nokogiri
46
46
  requirement: !ruby/object:Gem::Requirement
47
47
  requirements:
48
- - - ">="
48
+ - - "~>"
49
49
  - !ruby/object:Gem::Version
50
- version: '0'
50
+ version: 1.13.0
51
51
  type: :runtime
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
55
- - - ">="
55
+ - - "~>"
56
56
  - !ruby/object:Gem::Version
57
- version: '0'
57
+ version: 1.13.0
58
58
  description: |-
59
59
  This gem allows you to get information about the steam user's games and the top 250 IMDb movies.
60
60
  Information about steam games includes:
@@ -89,9 +89,9 @@ files:
89
89
  - images/logo1.png
90
90
  - images/logo2.png
91
91
  - lib/DreamTeam.rb
92
- - lib/DreamTeam/Films/html_table.rb
92
+ - lib/DreamTeam/Films/html_films_table.rb
93
93
  - lib/DreamTeam/Films/parsing_films.rb
94
- - lib/DreamTeam/Games/html_table.rb
94
+ - lib/DreamTeam/Games/html_games_table.rb
95
95
  - lib/DreamTeam/Games/parsing_games.rb
96
96
  - lib/DreamTeam/html_main.rb
97
97
  - lib/DreamTeam/version.rb
@@ -1,79 +0,0 @@
1
- require_relative 'parsing_films'
2
-
3
- def create_table_with_film(path)
4
- fileHtml = File.new(path + "/table_film.html", "w+")
5
-
6
- fileHtml.puts "<style>
7
- .table_dark {
8
- font-family: 'Lucida Sans Unicode', 'Lucida Grande', Sans-Serif;
9
- font-size: 14px;
10
- width: 90%;
11
- text-align: left;
12
- border-collapse: collapse;
13
- background: #252F48;
14
- margin: 10px;
15
- }
16
- .table_dark th {
17
- color: #EDB749;
18
- border-bottom: 1px solid #37B5A5;
19
- padding: 12px 17px;
20
- }
21
- .table_dark td {
22
- color: #CAD4D6;
23
- border-bottom: 1px solid #37B5A5;
24
- border-right: 1px solid #37B5A5;
25
- padding: 7px 17px;
26
- }
27
- .table_dark tr:last-child td {
28
- border-bottom: none;
29
- }
30
- .table_dark td:last-child {
31
- border-right: none;
32
- }
33
- .table_dark tr:hover td {
34
- text-decoration: underline;
35
- } </style>
36
-
37
- <table class='table_dark'>
38
- <tr>
39
- <th>Rang</th>
40
- <th>Film name</th>
41
- <th>Full name</th>
42
- <th>Year</th>
43
- <th>Image</th>
44
- <th>The actors</th>
45
- <th>Rating</th>
46
- <th>Rating Count</th>
47
-
48
- </tr>"
49
-
50
- filmsInformation = get_all_films(get_films_id())
51
- filmsInformation.each do |elem|
52
- fileHtml.puts "<tr>"
53
- fileHtml.puts "<th>"
54
- fileHtml.puts elem.rank
55
- fileHtml.puts "<th>"
56
- fileHtml.puts elem.title
57
- fileHtml.puts "<th>"
58
- fileHtml.puts elem.title_full
59
- fileHtml.puts "<th>"
60
- fileHtml.puts elem.year
61
- fileHtml.puts "<th>"
62
- fileHtml.puts "<img src = '#{elem.image}'
63
- width = '102'
64
- height = '160'>"
65
- fileHtml.puts "<th>"
66
- fileHtml.puts elem.crew
67
- fileHtml.puts "<th>"
68
- fileHtml.puts elem.imDbRating
69
- fileHtml.puts "<th>"
70
- fileHtml.puts elem.imDbRatingCount
71
- fileHtml.puts "<th>"
72
-
73
-
74
- fileHtml.puts "</tr>"
75
- end
76
-
77
- fileHtml.puts "</table>"
78
- fileHtml.close
79
- end
@@ -1,124 +0,0 @@
1
- require_relative 'parsing_games'
2
-
3
- def create_table_with_user_game(path, user_id)
4
- file_html = File.new(path + "/table_game.html", "w+")
5
- user_info = get_user_information(user_id)
6
- file_html.puts "<style type='text/css'>
7
- .table {
8
- width: 100%;
9
- border: none;
10
- margin-bottom: 20px;
11
- }
12
- .table thead th {
13
- font-weight: bold;
14
- text-align: left;
15
- border: none;
16
- padding: 10px 15px;
17
- background: #d8d8d8;
18
- font-size: 14px;
19
- }
20
- .table thead tr th:first-child {
21
- border-radius: 8px 0 0 8px;
22
- }
23
- .table thead tr th:last-child {
24
- border-radius: 0 8px 8px 0;
25
- }
26
- .table tbody td {
27
- text-align: left;
28
- border: none;
29
- padding: 10px 15px;
30
- font-size: 14px;
31
- vertical-align: top;
32
- }
33
- .table tbody tr:nth-child(even){
34
- background: #f3f3f3;
35
- }
36
- .table tbody tr td:first-child {
37
- border-radius: 8px 0 0 8px;
38
- }
39
- .table tbody tr td:last-child {
40
- border-radius: 0 8px 8px 0;
41
- }
42
- </style>
43
-
44
- <table class='table'>
45
- <thead>
46
- <img src = '#{user_info[:avatar]}'>
47
- #{user_info[:username]}
48
- <tr>
49
- <th>Game</th>
50
- <th>Image</th>
51
- <th>Price</th>
52
- <th>Developers</th>
53
- <th>Date</th>
54
- <th>Description</th>
55
- <th>Recommendation</th>
56
- <th>Time In The Game</th>
57
- </tr>
58
- </thead>
59
- <tbody>"
60
-
61
- games_information = information_of_games(get_user_games(user_id))
62
- games_information.each do |elem|
63
- file_html.puts "<tr>"
64
- file_html.puts "<th>"
65
- if elem[:name].nil?
66
- file_html.puts "<span style = 'font-size:20pt'> - </span>"
67
- else
68
- file_html.puts elem[:name]
69
- end
70
- file_html.puts "</th>"
71
- file_html.puts "<th>"
72
- file_html.puts "<img src = '#{elem[:img]}'
73
- width = '220'
74
- height = '102'
75
- alt = 'Picture of the game'>"
76
- file_html.puts "</th>"
77
- file_html.puts "<th>"
78
- if elem[:price].nil?
79
- file_html.puts "<span style = 'font-size:20pt'> - </span>"
80
- else
81
- file_html.puts elem[:price]
82
- end
83
- file_html.puts "</th>"
84
- file_html.puts "<th>"
85
- if elem[:developers].nil?
86
- file_html.puts "<span style = 'font-size:20pt'> - </span>"
87
- else
88
- file_html.puts elem[:developers]
89
- end
90
- file_html.puts "</th>"
91
- file_html.puts "<th>"
92
- if elem[:date].nil?
93
- file_html.puts "<span style = 'font-size:20pt'> - </span>"
94
- else
95
- file_html.puts elem[:date]
96
- end
97
- file_html.puts "</th>"
98
- file_html.puts "<th>"
99
- if elem[:desc].nil?
100
- file_html.puts "<span style = 'font-size:20pt'> - </span>"
101
- else
102
- file_html.puts elem[:desc]
103
- end
104
- file_html.puts "</th>"
105
- file_html.puts "<th>"
106
- if elem[:recommendations].nil?
107
- file_html.puts "<span style = 'font-size:20pt'> - </span>"
108
- else
109
- file_html.puts elem[:recommendations]
110
- end
111
- file_html.puts "</th>"
112
- file_html.puts "<th>"
113
- if elem[:time] == 0
114
- file_html.puts "0"
115
- else
116
- file_html.puts "#{elem[:time].to_i/60}h #{-(elem[:time].to_i/60*60 - elem[:time].to_i)}min"
117
- end
118
- file_html.puts "</th>"
119
- file_html.puts "</tr>"
120
- end
121
- file_html.puts "</tbody>
122
- </table>"
123
- file_html.close
124
- end