fpl_gsheet 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +13 -11
- data/.rspec +3 -3
- data/.travis.yml +5 -5
- data/Gemfile +6 -6
- data/Gemfile.lock +40 -42
- data/LICENSE.txt +21 -21
- data/README.md +59 -58
- data/Rakefile +6 -6
- data/bin/console +14 -14
- data/bin/setup +8 -8
- data/fpl_gsheet.gemspec +30 -31
- data/lib/fpl_gsheet/databank.rb +12 -12
- data/lib/fpl_gsheet/entry.rb +22 -22
- data/lib/fpl_gsheet/league.rb +4 -4
- data/lib/fpl_gsheet/version.rb +3 -3
- data/lib/fpl_gsheet.rb +13 -13
- metadata +3 -5
- data/client_secret.json +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 21c9e082024e848d7bce1cde916dd2af099188aa29c7088961dfea2bfb7a8c88
|
4
|
+
data.tar.gz: '038a7049bf9d921b6c80940fbf2ae96ec4bfafc54233e6c221117ca0d0fb5f6c'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9eafec5afc91026d2764bccf6f77f2ee579f1823a69abccd36d86972a20ec99a4baac43e7855a65ae0818c94406169b7c10f288bfc13328ecc060e9fa6108ce5
|
7
|
+
data.tar.gz: 107fa3ab205e4c7a0b72d1d8c1b32cd9fa582ad40a6a4b8395bdf217a15efbb81d65ebdeaef12fdaa763a4a91c80c7873f98942e36b9655048ea09f563b589a8
|
data/.gitignore
CHANGED
@@ -1,12 +1,14 @@
|
|
1
|
-
/.bundle/
|
2
|
-
/.yardoc
|
3
|
-
/_yardoc/
|
4
|
-
/coverage/
|
5
|
-
/doc/
|
6
|
-
/pkg/
|
7
|
-
/spec/reports/
|
8
|
-
/tmp/
|
9
|
-
|
10
|
-
# rspec failure tracking
|
11
|
-
.rspec_status
|
1
|
+
/.bundle/
|
2
|
+
/.yardoc
|
3
|
+
/_yardoc/
|
4
|
+
/coverage/
|
5
|
+
/doc/
|
6
|
+
/pkg/
|
7
|
+
/spec/reports/
|
8
|
+
/tmp/
|
9
|
+
|
10
|
+
# rspec failure tracking
|
11
|
+
.rspec_status
|
12
|
+
|
13
|
+
|
12
14
|
client_secret.json
|
data/.rspec
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
--format documentation
|
2
|
-
--color
|
3
|
-
--require spec_helper
|
1
|
+
--format documentation
|
2
|
+
--color
|
3
|
+
--require spec_helper
|
data/.travis.yml
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
sudo: false
|
2
|
-
language: ruby
|
3
|
-
rvm:
|
4
|
-
- 2.2.5
|
5
|
-
before_install: gem install bundler -v 1.16.1
|
1
|
+
sudo: false
|
2
|
+
language: ruby
|
3
|
+
rvm:
|
4
|
+
- 2.2.5
|
5
|
+
before_install: gem install bundler -v 1.16.1
|
data/Gemfile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
source "https://rubygems.org"
|
2
|
-
|
3
|
-
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
4
|
-
|
5
|
-
# Specify your gem's dependencies in fpl_gsheet.gemspec
|
6
|
-
gemspec
|
1
|
+
source "https://rubygems.org"
|
2
|
+
|
3
|
+
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
4
|
+
|
5
|
+
# Specify your gem's dependencies in fpl_gsheet.gemspec
|
6
|
+
gemspec
|
data/Gemfile.lock
CHANGED
@@ -1,77 +1,74 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
fpl_gsheet (0.
|
4
|
+
fpl_gsheet (0.2.0)
|
5
5
|
google_drive (~> 2.1)
|
6
6
|
recursive-open-struct (~> 1.1)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
|
-
addressable (2.
|
12
|
-
public_suffix (>= 2.0.2, <
|
11
|
+
addressable (2.7.0)
|
12
|
+
public_suffix (>= 2.0.2, < 5.0)
|
13
13
|
declarative (0.0.10)
|
14
14
|
declarative-option (0.1.0)
|
15
|
-
diff-lcs (1.
|
16
|
-
faraday (0.
|
15
|
+
diff-lcs (1.3)
|
16
|
+
faraday (0.17.3)
|
17
17
|
multipart-post (>= 1.2, < 3)
|
18
|
-
google-api-client (0.
|
18
|
+
google-api-client (0.21.2)
|
19
19
|
addressable (~> 2.5, >= 2.5.1)
|
20
20
|
googleauth (>= 0.5, < 0.7.0)
|
21
21
|
httpclient (>= 2.8.1, < 3.0)
|
22
22
|
mime-types (~> 3.0)
|
23
23
|
representable (~> 3.0)
|
24
24
|
retriable (>= 2.0, < 4.0)
|
25
|
-
google_drive (2.1.
|
26
|
-
google-api-client (>= 0.11.0, < 0.
|
25
|
+
google_drive (2.1.12)
|
26
|
+
google-api-client (>= 0.11.0, < 0.22.0)
|
27
27
|
googleauth (>= 0.5.0, < 1.0.0)
|
28
28
|
nokogiri (>= 1.5.3, < 2.0.0)
|
29
|
-
googleauth (0.6.
|
29
|
+
googleauth (0.6.7)
|
30
30
|
faraday (~> 0.12)
|
31
31
|
jwt (>= 1.4, < 3.0)
|
32
|
-
|
33
|
-
memoist (~> 0.12)
|
32
|
+
memoist (~> 0.16)
|
34
33
|
multi_json (~> 1.11)
|
35
|
-
os (
|
34
|
+
os (>= 0.9, < 2.0)
|
36
35
|
signet (~> 0.7)
|
37
36
|
httpclient (2.8.3)
|
38
|
-
jwt (2.1
|
39
|
-
|
40
|
-
|
41
|
-
little-plugger (~> 1.1)
|
42
|
-
multi_json (~> 1.10)
|
43
|
-
memoist (0.16.0)
|
44
|
-
mime-types (3.1)
|
37
|
+
jwt (2.2.1)
|
38
|
+
memoist (0.16.2)
|
39
|
+
mime-types (3.3.1)
|
45
40
|
mime-types-data (~> 3.2015)
|
46
|
-
mime-types-data (3.
|
47
|
-
mini_portile2 (2.
|
48
|
-
multi_json (1.
|
49
|
-
multipart-post (2.
|
50
|
-
nokogiri (1.
|
51
|
-
mini_portile2 (~> 2.
|
52
|
-
|
53
|
-
|
54
|
-
|
41
|
+
mime-types-data (3.2019.1009)
|
42
|
+
mini_portile2 (2.4.0)
|
43
|
+
multi_json (1.14.1)
|
44
|
+
multipart-post (2.1.1)
|
45
|
+
nokogiri (1.10.7-x64-mingw32)
|
46
|
+
mini_portile2 (~> 2.4.0)
|
47
|
+
nokogiri (1.10.7-x86-mingw32)
|
48
|
+
mini_portile2 (~> 2.4.0)
|
49
|
+
os (1.0.1)
|
50
|
+
public_suffix (4.0.3)
|
51
|
+
rake (10.5.0)
|
55
52
|
recursive-open-struct (1.1.0)
|
56
53
|
representable (3.0.4)
|
57
54
|
declarative (< 0.1.0)
|
58
55
|
declarative-option (< 0.2.0)
|
59
56
|
uber (< 0.2.0)
|
60
|
-
retriable (3.1.
|
61
|
-
rspec (3.
|
62
|
-
rspec-core (~> 3.
|
63
|
-
rspec-expectations (~> 3.
|
64
|
-
rspec-mocks (~> 3.
|
65
|
-
rspec-core (3.
|
66
|
-
rspec-support (~> 3.
|
67
|
-
rspec-expectations (3.
|
57
|
+
retriable (3.1.2)
|
58
|
+
rspec (3.9.0)
|
59
|
+
rspec-core (~> 3.9.0)
|
60
|
+
rspec-expectations (~> 3.9.0)
|
61
|
+
rspec-mocks (~> 3.9.0)
|
62
|
+
rspec-core (3.9.1)
|
63
|
+
rspec-support (~> 3.9.1)
|
64
|
+
rspec-expectations (3.9.0)
|
68
65
|
diff-lcs (>= 1.2.0, < 2.0)
|
69
|
-
rspec-support (~> 3.
|
70
|
-
rspec-mocks (3.
|
66
|
+
rspec-support (~> 3.9.0)
|
67
|
+
rspec-mocks (3.9.1)
|
71
68
|
diff-lcs (>= 1.2.0, < 2.0)
|
72
|
-
rspec-support (~> 3.
|
73
|
-
rspec-support (3.
|
74
|
-
signet (0.
|
69
|
+
rspec-support (~> 3.9.0)
|
70
|
+
rspec-support (3.9.2)
|
71
|
+
signet (0.12.0)
|
75
72
|
addressable (~> 2.3)
|
76
73
|
faraday (~> 0.9)
|
77
74
|
jwt (>= 1.5, < 3.0)
|
@@ -79,6 +76,7 @@ GEM
|
|
79
76
|
uber (0.1.0)
|
80
77
|
|
81
78
|
PLATFORMS
|
79
|
+
x64-mingw32
|
82
80
|
x86-mingw32
|
83
81
|
|
84
82
|
DEPENDENCIES
|
@@ -88,4 +86,4 @@ DEPENDENCIES
|
|
88
86
|
rspec (~> 3.0)
|
89
87
|
|
90
88
|
BUNDLED WITH
|
91
|
-
1.
|
89
|
+
1.17.2
|
data/LICENSE.txt
CHANGED
@@ -1,21 +1,21 @@
|
|
1
|
-
The MIT License (MIT)
|
2
|
-
|
3
|
-
Copyright (c)
|
4
|
-
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
7
|
-
in the Software without restriction, including without limitation the rights
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
10
|
-
furnished to do so, subject to the following conditions:
|
11
|
-
|
12
|
-
The above copyright notice and this permission notice shall be included in
|
13
|
-
all copies or substantial portions of the Software.
|
14
|
-
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
-
THE SOFTWARE.
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2020 reedstonefood
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
CHANGED
@@ -1,59 +1,60 @@
|
|
1
|
-
# Fpl_Gsheet
|
2
|
-
|
3
|
-
A Ruby gem for extracting information from [Fantasy Premier League](https://fantasy.premierleague.com/a/home) & storing the information in a Google Sheet, for onwards analysis.
|
4
|
-
|
5
|
-
For example, you could use Tableau Public to access the Google Sheet and create some great visualisations.
|
6
|
-
|
7
|
-
## Installation
|
8
|
-
|
9
|
-
1. Install the gem.
|
10
|
-
gem install fpl_gsheet
|
11
|
-
|
12
|
-
2. To allow the gem access to a Google sheet, the following steps must be followed.
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
#
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
spreadsheet
|
33
|
-
spreadsheet.
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
#
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
spreadsheet
|
45
|
-
spreadsheet.
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
s['
|
51
|
-
s['
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
1
|
+
# Fpl_Gsheet
|
2
|
+
|
3
|
+
A Ruby gem for extracting information from [Fantasy Premier League](https://fantasy.premierleague.com/a/home) & storing the information in a Google Sheet, for onwards analysis.
|
4
|
+
|
5
|
+
For example, you could use Tableau Public to access the Google Sheet and create some great visualisations.
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
1. Install the gem.
|
10
|
+
gem install fpl_gsheet
|
11
|
+
|
12
|
+
2. To allow the gem access to a Google sheet, the following steps must be followed.
|
13
|
+
|
14
|
+
* Create a Google service account
|
15
|
+
* Store the client_secret.json file in the same location as the script you write that uses this gem
|
16
|
+
* Create a google sheet & share it (giving it edit access) with the user created in the first step
|
17
|
+
More detailed instructions & a nice animated gif can be [found here](https://www.twilio.com/blog/2017/03/google-spreadsheets-ruby.html).
|
18
|
+
|
19
|
+
|
20
|
+
## Usage
|
21
|
+
|
22
|
+
```ruby
|
23
|
+
gem 'fpl_gsheet'
|
24
|
+
|
25
|
+
# stores all "generic" data, eg teams, players, fixtures
|
26
|
+
databank = FplGsheet::Databank.new
|
27
|
+
|
28
|
+
# put the reference to your spreadsheet here.
|
29
|
+
# This must already exist & have been shared with the service account
|
30
|
+
spreadsheet = FplGsheet::Spreadsheet.new('FplGsheet sample')
|
31
|
+
|
32
|
+
# Put all team names into the spreadsheet
|
33
|
+
spreadsheet.new_sheet('Teams')
|
34
|
+
spreadsheet.add_row(['Team ID', 'Team Name']) # header row
|
35
|
+
databank.teams.each do |t|
|
36
|
+
spreadsheet.insert_new_row([t['id'], t['name'])
|
37
|
+
end
|
38
|
+
spreadsheet.save # commits the changes you've written
|
39
|
+
|
40
|
+
# load a league - the ID can be found in the URL of the league table page,
|
41
|
+
# eg https://fantasy.premierleague.com/a/leagues/standings/487590/classic
|
42
|
+
league = FplGsheet::League.new(487590)
|
43
|
+
|
44
|
+
# Put team names & score into spreadsheet
|
45
|
+
spreadsheet.new_sheet('League')
|
46
|
+
spreadsheet.insert_new_row(%w(Rank Team Score))
|
47
|
+
|
48
|
+
league.standings.each do |s|
|
49
|
+
spreadsheet.insert_new_row([
|
50
|
+
s['rank'],
|
51
|
+
s['entry_name'],
|
52
|
+
s['total']
|
53
|
+
])
|
54
|
+
end
|
55
|
+
spreadsheet.save
|
56
|
+
```
|
57
|
+
|
58
|
+
## More usage information
|
59
|
+
|
59
60
|
See the wiki on the [GitHub repo page](https://github.com/reedstonefood/fpl_gsheet).
|
data/Rakefile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
require "bundler/gem_tasks"
|
2
|
-
require "rspec/core/rake_task"
|
3
|
-
|
4
|
-
RSpec::Core::RakeTask.new(:spec)
|
5
|
-
|
6
|
-
task :default => :spec
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
require "rspec/core/rake_task"
|
3
|
+
|
4
|
+
RSpec::Core::RakeTask.new(:spec)
|
5
|
+
|
6
|
+
task :default => :spec
|
data/bin/console
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require "bundler/setup"
|
4
|
-
require "fpl/gsheet"
|
5
|
-
|
6
|
-
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
-
# with your gem easier. You can also use a different console, if you like.
|
8
|
-
|
9
|
-
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
-
# require "pry"
|
11
|
-
# Pry.start
|
12
|
-
|
13
|
-
require "irb"
|
14
|
-
IRB.start(__FILE__)
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "fpl/gsheet"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start(__FILE__)
|
data/bin/setup
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
#!/usr/bin/env bash
|
2
|
-
set -euo pipefail
|
3
|
-
IFS=$'\n\t'
|
4
|
-
set -vx
|
5
|
-
|
6
|
-
bundle install
|
7
|
-
|
8
|
-
# Do any other automated setup that you need to do here
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
set -euo pipefail
|
3
|
+
IFS=$'\n\t'
|
4
|
+
set -vx
|
5
|
+
|
6
|
+
bundle install
|
7
|
+
|
8
|
+
# Do any other automated setup that you need to do here
|
data/fpl_gsheet.gemspec
CHANGED
@@ -1,31 +1,30 @@
|
|
1
|
-
|
2
|
-
lib = File.expand_path("../lib", __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require "fpl_gsheet/version"
|
5
|
-
|
6
|
-
Gem::Specification.new do |spec|
|
7
|
-
spec.name = "fpl_gsheet"
|
8
|
-
spec.version = FplGsheet::VERSION
|
9
|
-
spec.authors = ["reedstonefood"]
|
10
|
-
spec.email = ["reedstonefood@users.noreply.github.com"]
|
11
|
-
|
12
|
-
spec.summary = %q{Get Premier League Fantasy Football data into Google Sheets.}
|
13
|
-
spec.description = %q{Data comes from fantasy.premierleague.com.}
|
14
|
-
spec.homepage = "https://github.com/reedstonefood"
|
15
|
-
spec.license = "MIT"
|
16
|
-
|
17
|
-
|
18
|
-
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
19
|
-
f.match(%r{^(test|spec|features)/})
|
20
|
-
end
|
21
|
-
spec.bindir = "exe"
|
22
|
-
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
23
|
-
spec.require_paths = ["lib"]
|
24
|
-
|
25
|
-
spec.add_development_dependency "bundler", "~> 1.16"
|
26
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
27
|
-
spec.add_development_dependency "rspec", "~> 3.0"
|
28
|
-
spec.add_dependency "google_drive", "~> 2.1"
|
29
|
-
|
30
|
-
|
31
|
-
end
|
1
|
+
|
2
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require "fpl_gsheet/version"
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "fpl_gsheet"
|
8
|
+
spec.version = FplGsheet::VERSION
|
9
|
+
spec.authors = ["reedstonefood"]
|
10
|
+
spec.email = ["reedstonefood@users.noreply.github.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{Get Premier League Fantasy Football data into Google Sheets.}
|
13
|
+
spec.description = %q{Data comes from fantasy.premierleague.com.}
|
14
|
+
spec.homepage = "https://github.com/reedstonefood"
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
|
18
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
19
|
+
f.match(%r{^(test|spec|features)/})
|
20
|
+
end
|
21
|
+
spec.bindir = "exe"
|
22
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
23
|
+
spec.require_paths = ["lib"]
|
24
|
+
|
25
|
+
spec.add_development_dependency "bundler", "~> 1.16"
|
26
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
27
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
28
|
+
spec.add_dependency "google_drive", "~> 2.1"
|
29
|
+
spec.add_dependency "recursive-open-struct", "~> 1.1"
|
30
|
+
end
|
data/lib/fpl_gsheet/databank.rb
CHANGED
@@ -11,36 +11,36 @@ module FplGsheet
|
|
11
11
|
def initialize
|
12
12
|
#some stuff outside the scope of this review
|
13
13
|
#just assume the fixtures and teams methods work
|
14
|
-
@all_data=JSON.load(open("https://fantasy.premierleague.com/
|
15
|
-
@fixture_data=JSON.load(open("https://fantasy.premierleague.com/
|
14
|
+
@all_data=JSON.load(open("https://fantasy.premierleague.com/api/bootstrap-static/", {ssl_verify_mode: 0}))
|
15
|
+
@fixture_data=JSON.load(open("https://fantasy.premierleague.com/api/fixtures/", {ssl_verify_mode: 0}))
|
16
16
|
end
|
17
17
|
|
18
18
|
def fixtures
|
19
19
|
#returns array of all Fixtures
|
20
20
|
@fixtures ||= @fixture_data.map { |f| Fixture.new(f, self) }
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
def teams
|
24
24
|
#returns array of all Teams
|
25
25
|
return @teams if defined? @teams
|
26
|
-
@teams = @all_data['teams'].map do |t|
|
26
|
+
@teams = @all_data['teams'].map do |t|
|
27
27
|
Team.new(t, self)
|
28
28
|
end
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
def players
|
32
32
|
return @players if defined? @players
|
33
|
-
@players = @all_data['elements'].map do |t|
|
33
|
+
@players = @all_data['elements'].map do |t|
|
34
34
|
Player.new(t, self)
|
35
35
|
end
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
def fixtures_for_team(id)
|
39
39
|
fixtures.select do |f|
|
40
40
|
id==f.data['team_h'] || id==f.data['team_a']
|
41
41
|
end
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
def gameweeks
|
45
45
|
@gameweeks ||= @all_data['events']
|
46
46
|
end
|
@@ -69,14 +69,14 @@ module FplGsheet
|
|
69
69
|
# @h_score = fixture.data['team_h_score']
|
70
70
|
# @a_score = fixture.data['team_a_score']
|
71
71
|
# end
|
72
|
-
#
|
72
|
+
#
|
73
73
|
# def result
|
74
74
|
# return '-' if @h_score=='null'
|
75
75
|
# return 'D' if @h_score==a_score
|
76
76
|
# winner = @h_score==@a_score ? 'H' : 'A'
|
77
77
|
# return @venue==winner ? 'W' : 'L'
|
78
78
|
# end
|
79
|
-
#
|
79
|
+
#
|
80
80
|
# def own_score
|
81
81
|
# @venue=='H' ? @h_score : @a_score
|
82
82
|
# end
|
@@ -84,14 +84,14 @@ module FplGsheet
|
|
84
84
|
# def opp_score
|
85
85
|
# @venue=='H' ? @a_score : @h_score
|
86
86
|
# end
|
87
|
-
#
|
87
|
+
#
|
88
88
|
# def opponent
|
89
89
|
# id = @venue=='H' ? @fixture['team_a'] : @fixture['team_h']
|
90
90
|
# # How to get from this id to the Team object it represents?
|
91
91
|
# end
|
92
92
|
#end
|
93
93
|
end
|
94
|
-
|
94
|
+
|
95
95
|
#d = Databank.new
|
96
96
|
#d.teams.each do |t|
|
97
97
|
# puts "#{t.data['name'].upcase} are playing these teams..."
|
data/lib/fpl_gsheet/entry.rb
CHANGED
@@ -1,54 +1,54 @@
|
|
1
|
+
require 'open-uri'
|
1
2
|
|
2
3
|
module FplGsheet
|
3
4
|
class Entry
|
4
5
|
attr_reader :name, :id
|
5
6
|
def initialize(entry_id)
|
6
|
-
entry_json=JSON.load(open("https://fantasy.premierleague.com/
|
7
|
-
@entry_data=entry_json
|
7
|
+
entry_json=JSON.load(open("https://fantasy.premierleague.com/api/entry/#{entry_id}/", {ssl_verify_mode: 0}))
|
8
|
+
@entry_data=entry_json.reject { |e| e.is_a? Hash }
|
8
9
|
@league_data=entry_json['leagues']
|
9
10
|
@name=@entry_data['name']
|
10
11
|
@id=@entry_data['id']
|
11
12
|
@historical_gameweeks = Hash.new()
|
12
13
|
#@fixtures = fixtures.map { |f| TeamFixture.new(f, @data['id']) }
|
13
14
|
end
|
14
|
-
|
15
|
+
|
15
16
|
def manager_name
|
16
17
|
@entry_data['player_first_name'] + ' ' + @entry_data['player_last_name']
|
17
18
|
end
|
18
|
-
|
19
|
+
|
19
20
|
def history
|
20
|
-
@history ||= JSON.load(open("https://fantasy.premierleague.com/
|
21
|
+
@history ||= JSON.load(open("https://fantasy.premierleague.com/api/entry/#{id}/history/", {ssl_verify_mode: 0}))
|
21
22
|
end
|
22
|
-
|
23
|
-
|
23
|
+
|
24
|
+
|
24
25
|
def transfers
|
25
|
-
@transfer_data ||= JSON.load(open("https://fantasy.premierleague.com/
|
26
|
-
@transfer_data
|
26
|
+
@transfer_data ||= JSON.load(open("https://fantasy.premierleague.com/api/entry/#{id}/transfers/", {ssl_verify_mode: 0}))
|
27
|
+
@transfer_data.reverse # At some point FPL changed to have newest transfers first; that's just silly
|
27
28
|
end
|
28
|
-
|
29
|
+
|
29
30
|
def chips; history["chips"]; end
|
30
|
-
|
31
|
+
|
31
32
|
def summary; history["entry"]; end
|
32
|
-
|
33
|
-
def past_seasons; history["
|
34
|
-
|
35
|
-
def gameweek_history; history["
|
36
|
-
|
33
|
+
|
34
|
+
def past_seasons; history["past"]; end
|
35
|
+
|
36
|
+
def gameweek_history; history["current"]; end
|
37
|
+
|
37
38
|
def picks
|
38
39
|
latest_gameweek = gameweek_history.last['event']
|
39
40
|
picks_for_gameweek[latest_gameweek]
|
40
41
|
end
|
41
|
-
|
42
|
+
|
42
43
|
def picks_for_gameweek(gw)
|
43
44
|
return @historical_gameweeks[gw] if @historical_gameweeks.key?(gw)
|
44
|
-
api ||= JSON.load(open("https://fantasy.premierleague.com/
|
45
|
+
api ||= JSON.load(open("https://fantasy.premierleague.com/api/entry/#{id}/event/#{gw}/picks/", {ssl_verify_mode: 0}))
|
45
46
|
@historical_gameweeks[gw] = api['picks'].map { |p| Pick.new(p)}
|
46
47
|
end
|
47
|
-
|
48
48
|
end
|
49
|
-
|
49
|
+
|
50
50
|
class Entries < Hash
|
51
|
-
|
51
|
+
|
52
52
|
def [](key)
|
53
53
|
val = super
|
54
54
|
if val.nil?
|
@@ -61,5 +61,5 @@ module FplGsheet
|
|
61
61
|
val
|
62
62
|
end
|
63
63
|
end
|
64
|
-
|
64
|
+
|
65
65
|
end
|
data/lib/fpl_gsheet/league.rb
CHANGED
@@ -3,16 +3,16 @@ module FplGsheet
|
|
3
3
|
class League
|
4
4
|
attr_reader :name, :id
|
5
5
|
def initialize(league_id)
|
6
|
-
@league_data=JSON.load(open("https://fantasy.premierleague.com/
|
6
|
+
@league_data=JSON.load(open("https://fantasy.premierleague.com/api/leagues-classic/#{league_id}/standings/", {ssl_verify_mode: 0}))
|
7
7
|
@name=@league_data['league']['name']
|
8
8
|
@id=@league_data['league']['id']
|
9
9
|
#@fixtures = fixtures.map { |f| TeamFixture.new(f, @data['id']) }
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
def standings
|
13
13
|
@standings ||= @league_data['standings']['results']
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
end
|
data/lib/fpl_gsheet/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
module FplGsheet
|
2
|
-
VERSION = "0.
|
3
|
-
end
|
1
|
+
module FplGsheet
|
2
|
+
VERSION = "0.2.0"
|
3
|
+
end
|
data/lib/fpl_gsheet.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
|
-
require "fpl_gsheet/version"
|
2
|
-
require "fpl_gsheet/spreadsheet"
|
3
|
-
require "fpl_gsheet/databank"
|
4
|
-
require "fpl_gsheet/fixture"
|
5
|
-
require "fpl_gsheet/league"
|
6
|
-
require "fpl_gsheet/player"
|
7
|
-
require "fpl_gsheet/team"
|
8
|
-
require "fpl_gsheet/entry"
|
9
|
-
require "fpl_gsheet/pick"
|
10
|
-
|
11
|
-
module FplGsheet
|
12
|
-
# Your code goes here...
|
13
|
-
end
|
1
|
+
require "fpl_gsheet/version"
|
2
|
+
require "fpl_gsheet/spreadsheet"
|
3
|
+
require "fpl_gsheet/databank"
|
4
|
+
require "fpl_gsheet/fixture"
|
5
|
+
require "fpl_gsheet/league"
|
6
|
+
require "fpl_gsheet/player"
|
7
|
+
require "fpl_gsheet/team"
|
8
|
+
require "fpl_gsheet/entry"
|
9
|
+
require "fpl_gsheet/pick"
|
10
|
+
|
11
|
+
module FplGsheet
|
12
|
+
# Your code goes here...
|
13
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fpl_gsheet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- reedstonefood
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-01-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -97,7 +97,6 @@ files:
|
|
97
97
|
- Rakefile
|
98
98
|
- bin/console
|
99
99
|
- bin/setup
|
100
|
-
- client_secret.json
|
101
100
|
- fpl_gsheet.gemspec
|
102
101
|
- lib/fpl_gsheet.rb
|
103
102
|
- lib/fpl_gsheet/databank.rb
|
@@ -128,8 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
128
127
|
- !ruby/object:Gem::Version
|
129
128
|
version: '0'
|
130
129
|
requirements: []
|
131
|
-
|
132
|
-
rubygems_version: 2.7.6
|
130
|
+
rubygems_version: 3.0.3
|
133
131
|
signing_key:
|
134
132
|
specification_version: 4
|
135
133
|
summary: Get Premier League Fantasy Football data into Google Sheets.
|
data/client_secret.json
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"type": "service_account",
|
3
|
-
"project_id": "innate-works-201616",
|
4
|
-
"private_key_id": "f1d63496e3156e67fee7fd2cf3393c61b6335691",
|
5
|
-
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCqYVuGNfyOBfl3\nJgvNJZ0Zvpc1zD1u2pwZ0pMnl7dXPim+2XL1h53s761gATvLSuqleQDMvZbxZ6iR\nbtISlcpW1q+dhYmk8r1ZyHO3Xjf8hrSg5T5NsxgJk5TG81BrQNkDyxhhF7VYuAtK\nU08fcZ5N6PWbyEHovbq2KisLGSjzC3xqdTGmUmM3FIgL19NdVgw09uKJlgUPXyHl\nYh8o7PGjgKYbX4Xura9iyqkZ1CEnA66r/DgU0+ff8Ayxfa8rZ9WZKGfo4dCGiRSd\noanaweWdRpAG6b7imXlhpKdU24YBoLgeLo9eA78IwZClu1fOEdc74mYvsS/+67I6\nxbko9SoJAgMBAAECggEAGvueLgwgujFSB7+bwNqDHc+kTN3SoNq4PBKwQWXyoDt1\nCwePADmBFkQC9iBb4t8zeA9IxCQGYqbi+F1PoafdSpFncI/0c44J1M09Hj4qqbB/\nrLeBfXauiN25gySHiOTVOZeRfdbuXmWPTC8TacxpoLcTJp+5aG2bwzu8Y16RsKPP\nqGjKWgQeDcXrLqMRADZXaQkBtfNZoi0GI3qxigec6fA4K6M6am908Jkm6zOv8Sh2\n+rBrQGsgtipUKQDz7xXek3c4r9gkCQEHh+QVYHhPx/HkCG05RoIpnt/imNjvxUnj\n/Xl9m2s30keAIowJaQtep1348CfSCE47ATk0GXvdLQKBgQDi66KwGRjFUoybinIx\nM5uOlARP7vNX/6CaljLN3ZFqoEIKBhDPynce7t+L7Yz/ZttP/G5DPxAjmKRaA9Bu\nUrWjnMVYifNHhO/CttrqH0uXfU7mx7XJCfLCj4EZY1r+2C9wJhC68iOe1NL+vW0i\nYUzlHwwMOytCxEn46mVZ37R/kwKBgQDANtzlYF9HXrLEtPDtPKmz+0LdN6C82+G+\nIKuhMRXZgQ70MNlBKarTo7FPh9HxqEWR76yXjib91v585m23ohFJtJ3Cae/Ly8ci\neOcHcesQYa7/fkP5s18O/3xWZ2nFfDosFqoyhXUlne9ZWVeCLlKOWTPGjYb7jnAE\nEB5V5XuZcwKBgCPqkex3fHE2+KRhzGM3PObbTLduJbwG7N+q6E2nRS3wQaOehCiv\nbh1KR725ErkWCZ5mYPlp0N8heNn6gpIDq1ZDKQUziHsIcn6KPKoT2/4VSljCwWYZ\nmf/rgM6I6E0v4IpKrBk63CJ2oxLI3q4zYl1dhaWl89n0gZTRXMtV2hbbAoGBAIu3\nFUexjnAdOIpdD4cSAjSuHYMZDUBZ/7OoobiQKlaoRctfuntwIxilMpwhmIw0iSUz\n9ttO267FWMRG5leFeVV+8PFA+anEHKJFCYFS389Pgdl62UQmiqEnOiTAFJUU4F/t\ntZb1hRpru2/Rzhb1PtLzqfvYIda2SVvar4I2RWpbAoGBAMalwnqw4NbS22qrZBG/\n6NU49X81C0jZcBRoVWUOsv9GPWHqB4p2+hA2a9sgZwVaqsqO8rmG06pr7urwi0gL\nrHuQ/KtYfdaZY9uHDqXgxSuvK4nzpv5I9MO/W8SeLArU61ZwNl5Nn6u+eqjY6JKD\nBwelbhBAxYvzdcNRKnM5WaK7\n-----END PRIVATE KEY-----\n",
|
6
|
-
"client_email": "ruby-service-account@innate-works-201616.iam.gserviceaccount.com",
|
7
|
-
"client_id": "117713227265954709342",
|
8
|
-
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
|
9
|
-
"token_uri": "https://accounts.google.com/o/oauth2/token",
|
10
|
-
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
|
11
|
-
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/ruby-service-account%40innate-works-201616.iam.gserviceaccount.com"
|
12
|
-
}
|