ogs_katacheck 0.1.3 → 0.2.1
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 +4 -4
- data/.gitignore +1 -0
- data/CHANGELOG.md +13 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +9 -1
- data/README.md +5 -7
- data/bin/katacheck +1 -1
- data/bin/ogs-katacheck +1 -1
- data/images/output.png +0 -0
- data/images/reviews.png +0 -0
- data/lib/ogs_katacheck.rb +2 -0
- data/lib/ogs_katacheck/cli.rb +2 -1
- data/lib/ogs_katacheck/full_review.rb +13 -10
- data/lib/ogs_katacheck/review.rb +75 -16
- data/lib/ogs_katacheck/version.rb +1 -1
- data/ogs_katacheck.gemspec +4 -0
- metadata +34 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2baab19f04bb46ebca2c9233288ea4af806716bbf6871765aa6a5048f2c868b7
|
4
|
+
data.tar.gz: aadc143d83e47a546345fbeecebc5c0a24599b505f495f68c0137374efd5a8bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3ff08796e04916871bc281944e78ca87bcaf6693618fc9cb7c091e09b571b9662a694f3422c3bbd36b1eb90f9887b23309cec4727de4b9f4ad870873899f951b
|
7
|
+
data.tar.gz: dc9268e55c96cd61bac98a06f9b92865c1a52d82d7660cc76e1e93aa42ee2b35f0ade3d18f2f8bc8fd0e7e303ce3665d365b4cae10d8eed814dcf4eb6cac5990
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -11,3 +11,16 @@
|
|
11
11
|
|
12
12
|
### 0.1.3
|
13
13
|
- bug fix
|
14
|
+
|
15
|
+
### 0.1.4
|
16
|
+
- bug fix
|
17
|
+
|
18
|
+
### 0.1.5
|
19
|
+
- bug fix
|
20
|
+
|
21
|
+
### 0.1.6
|
22
|
+
- fixes bug in the way percentages are calculated
|
23
|
+
|
24
|
+
### 0.2.0
|
25
|
+
- new formatting for output table
|
26
|
+
- fixes error introduced by new uuid attribute on reviews
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,25 +1,33 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ogs_katacheck (0.1
|
4
|
+
ogs_katacheck (0.2.1)
|
5
|
+
faraday
|
6
|
+
terminal-table
|
5
7
|
|
6
8
|
GEM
|
7
9
|
remote: https://rubygems.org/
|
8
10
|
specs:
|
11
|
+
colorize (0.8.1)
|
9
12
|
faraday (1.1.0)
|
10
13
|
multipart-post (>= 1.2, < 3)
|
11
14
|
ruby2_keywords
|
12
15
|
multipart-post (2.1.1)
|
13
16
|
rake (12.3.0)
|
14
17
|
ruby2_keywords (0.0.2)
|
18
|
+
terminal-table (1.8.0)
|
19
|
+
unicode-display_width (~> 1.1, >= 1.1.1)
|
20
|
+
unicode-display_width (1.7.0)
|
15
21
|
|
16
22
|
PLATFORMS
|
17
23
|
ruby
|
18
24
|
|
19
25
|
DEPENDENCIES
|
26
|
+
colorize
|
20
27
|
faraday
|
21
28
|
ogs_katacheck!
|
22
29
|
rake (~> 12.0)
|
30
|
+
terminal-table
|
23
31
|
|
24
32
|
BUNDLED WITH
|
25
33
|
2.1.4
|
data/README.md
CHANGED
@@ -6,7 +6,7 @@ It pulls game information from the OGS API and checks the user submitted moves a
|
|
6
6
|
|
7
7
|
## Installation
|
8
8
|
|
9
|
-
You will need to have Ruby installed on your machine to run this CLI
|
9
|
+
**You will need to have Ruby installed on your machine to run this CLI.** If you are using a Mac, this should already be done for you. If on a Windows machine you can install it by following [these instructions](https://stackify.com/install-ruby-on-windows-everything-you-need-to-get-going/). You can verify that everything is installed properly by running `ruby -v` and `gem -v`, you should see versions for both after running these commands.
|
10
10
|
|
11
11
|
To install this Gem, open a terminal and run:
|
12
12
|
|
@@ -26,15 +26,13 @@ You will be asked to enter a game ID. This can be simply copied and pasted from
|
|
26
26
|
|
27
27
|
You will then be presented with a list of available OGS AI reviews. **Only full reviews** are useable with this tool. If you do not see a full review in the list, open the game in OGS and run a full review. Once the server has completed the review, re-run the tool.
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
***Note:** A high percentage match in a game does not necessarily mean the user is cheating, but high percentage matches across many games will certainly warrant further investigation.*
|
29
|
+

|
32
30
|
|
33
|
-
|
31
|
+
The tool will output the number of user submitted moves that match the top 4 moves suggested by the AI in the review. Obviously, `tier 1` and `tier 2` moves are most important to look at, but the overall percentages can also be helpful.
|
34
32
|
|
35
|
-
|
33
|
+

|
36
34
|
|
37
|
-
|
35
|
+
***Note:** A high percentage match in a game does not necessarily mean the user is cheating, but high percentage matches across many games will certainly warrant further investigation.*
|
38
36
|
|
39
37
|
## Contributing
|
40
38
|
|
data/bin/katacheck
CHANGED
data/bin/ogs-katacheck
CHANGED
data/images/output.png
ADDED
Binary file
|
data/images/reviews.png
ADDED
Binary file
|
data/lib/ogs_katacheck.rb
CHANGED
data/lib/ogs_katacheck/cli.rb
CHANGED
@@ -37,7 +37,8 @@ class OGSKataCheck::CLI
|
|
37
37
|
puts "The following reviews are available:"
|
38
38
|
|
39
39
|
Review.all.each do |review|
|
40
|
-
|
40
|
+
review.date = Time.new(review.date.slice(0,4), review.date.slice(5, 2), review.date.slice(8, 2), review.date.slice(11, 2), review.date.slice(14, 2), review.date.slice(17, 2), "+00:00")
|
41
|
+
puts "#{review.number}. #{review.id} -- #{review.engine} -- #{review.type} -- #{review.date.localtime.strftime("%e %b %Y, %I:%M%p %Z")}"
|
41
42
|
end
|
42
43
|
|
43
44
|
puts ""
|
@@ -1,5 +1,5 @@
|
|
1
1
|
class FullReview
|
2
|
-
attr_accessor :win_rates, :scores, :id, :type, :game_id, :engine, :engine_version, :network, :network_size, :date, :strength, :win_rate, :moves,
|
2
|
+
attr_accessor :win_rates, :uuid, :scores, :id, :type, :game_id, :engine, :engine_version, :network, :network_size, :date, :strength, :win_rate, :moves,
|
3
3
|
:total_moves, :black_tier_1, :black_tier_2, :black_tier_3, :black_tier_4, :white_tier_1, :white_tier_2, :white_tier_3, :white_tier_4, :black_total, :white_total
|
4
4
|
|
5
5
|
@@all = []
|
@@ -25,18 +25,21 @@ class FullReview
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def self.destroy_all
|
28
|
-
self.all.clear
|
28
|
+
self.all.clear
|
29
29
|
end
|
30
30
|
|
31
31
|
def calculate_percentages
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
@
|
36
|
-
@
|
37
|
-
@
|
38
|
-
@
|
39
|
-
@
|
32
|
+
white_moves = (@total_moves / 2.0).floor
|
33
|
+
black_moves = (@total_moves / 2.0).ceil
|
34
|
+
|
35
|
+
@black_tier_1[1] = @black_tier_1[0].to_f / black_moves * 100
|
36
|
+
@black_tier_2[1] = @black_tier_2[0].to_f / black_moves * 100
|
37
|
+
@black_tier_3[1] = @black_tier_3[0].to_f / black_moves * 100
|
38
|
+
@black_tier_4[1] = @black_tier_4[0].to_f / black_moves * 100
|
39
|
+
@white_tier_1[1] = @white_tier_1[0].to_f / white_moves * 100
|
40
|
+
@white_tier_2[1] = @white_tier_2[0].to_f / white_moves * 100
|
41
|
+
@white_tier_3[1] = @white_tier_3[0].to_f / white_moves * 100
|
42
|
+
@white_tier_4[1] = @white_tier_4[0].to_f / white_moves * 100
|
40
43
|
|
41
44
|
@black_total[0] = @black_tier_1[0] + @black_tier_2[0] + @black_tier_3[0] + @black_tier_4[0]
|
42
45
|
@white_total[0] = @white_tier_1[0] + @white_tier_2[0] + @white_tier_3[0] + @white_tier_4[0]
|
data/lib/ogs_katacheck/review.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
class Review
|
2
|
-
attr_accessor :full_review, :number, :id, :type, :game_id, :engine, :engine_version, :network, :network_size, :date, :strength, :win_rate, :moves
|
2
|
+
attr_accessor :full_review, :number, :uuid, :id, :type, :game_id, :engine, :engine_version, :network, :network_size, :date, :strength, :win_rate, :moves
|
3
3
|
@@all = []
|
4
4
|
|
5
5
|
def initialize(attributes, number:)
|
@@ -25,21 +25,80 @@ class Review
|
|
25
25
|
puts "Checking player submitted moves against #{@engine} #{@type} review ##{@id}..."
|
26
26
|
review = load_review
|
27
27
|
review.process
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
28
|
+
|
29
|
+
# table = Terminal::Table.new title: "Results".bold, headings: ['Color'.bold, 'Tier'.bold, "#".bold, "%".bold]
|
30
|
+
# x = 1
|
31
|
+
# while x < 4 do
|
32
|
+
# table.add_row [x == 2 ? "Black".bold : nil, x, review.public_send("black_tier_#{x}")[0], review.public_send("black_tier_#{x}")[1].round(2)]
|
33
|
+
# x += 1
|
34
|
+
# end
|
35
|
+
#
|
36
|
+
# table.add_separator
|
37
|
+
# table.add_row [{:value => 'Total'.bold, :colspan => 2, :alignment => :center}, review.black_total[0], "#{review.black_total[1].round(2)}%"]
|
38
|
+
# table.add_separator
|
39
|
+
# table.add_separator
|
40
|
+
#
|
41
|
+
# x = 1
|
42
|
+
# while x < 4 do
|
43
|
+
# table.add_row [x == 2 ? "White".bold : nil, x, review.public_send("black_tier_#{x}")[0], review.public_send("black_tier_#{x}")[1].round(2)]
|
44
|
+
# x += 1
|
45
|
+
# end
|
46
|
+
#
|
47
|
+
# table.add_separator
|
48
|
+
#
|
49
|
+
# table.add_row [{:value => 'Total'.bold, :colspan => 2, :alignment => :center}, review.white_total[0], "#{review.white_total[1].round(2)}%"]
|
50
|
+
#
|
51
|
+
# table.style = {:width => 80, :padding_left => 3, :border_x => "=", :border_i => "x"}
|
52
|
+
#
|
53
|
+
# puts table
|
54
|
+
|
55
|
+
table = Terminal::Table.new title: "Results".bold, headings: ['Tier'.bold, "#".bold, "%".bold]
|
56
|
+
x = 1
|
57
|
+
table.add_row [{value: "Black".bold.light_white.on_black, alignment: :center, colspan: 3}]
|
58
|
+
table.add_separator
|
59
|
+
while x < 4 do
|
60
|
+
table.add_row [x, {value: review.public_send("black_tier_#{x}")[0], alignment: :center}, {value: review.public_send("black_tier_#{x}")[1].round(2).to_s + " %", alignment: :center}]
|
61
|
+
x += 1
|
62
|
+
end
|
63
|
+
|
64
|
+
table.add_separator
|
65
|
+
table.add_row [{:value => 'Total'.bold, :alignment => :center}, review.black_total[0], "#{review.black_total[1].round(2)}%"]
|
66
|
+
table.add_separator
|
67
|
+
|
68
|
+
table.add_row [{value: "White".bold.black.on_light_white.blink, alignment: :center, colspan: 3}]
|
69
|
+
table.add_separator
|
70
|
+
x = 1
|
71
|
+
while x < 4 do
|
72
|
+
table.add_row [x, review.public_send("white_tier_#{x}")[0], review.public_send("white_tier_#{x}")[1].round(2).to_s + " %"]
|
73
|
+
x += 1
|
74
|
+
end
|
75
|
+
|
76
|
+
table.add_separator
|
77
|
+
|
78
|
+
table.add_row [{:value => 'Total'.bold, :alignment => :center}, review.white_total[0], "#{review.white_total[1].round(2)}%"]
|
79
|
+
|
80
|
+
table.style = {:width => 70, :padding_left => 2, :border_x => "=".blue, :border_i => "x".blue, :alignment => :center}
|
81
|
+
|
82
|
+
puts table
|
83
|
+
|
84
|
+
# puts ""
|
85
|
+
# puts "^^ new"
|
86
|
+
# puts "vv old"
|
87
|
+
# puts ""
|
88
|
+
# puts "-----------------------------------------------------"
|
89
|
+
# puts "Black Tier 1 Moves: #{review.black_tier_1[0]} --- #{review.black_tier_1[1].round(2)}%"
|
90
|
+
# puts "Black Tier 2 Moves: #{review.black_tier_2[0]} --- #{review.black_tier_2[1].round(2)}%"
|
91
|
+
# puts "Black Tier 3 Moves: #{review.black_tier_3[0]} --- #{review.black_tier_3[1].round(2)}%"
|
92
|
+
# puts "Black Tier 4 Moves: #{review.black_tier_4[0]} --- #{review.black_tier_4[1].round(2)}%"
|
93
|
+
# puts "-----------------------------------------------------"
|
94
|
+
# puts "White Tier 1 Moves: #{review.white_tier_1[0]} --- #{review.white_tier_1[1].round(2)}%"
|
95
|
+
# puts "White Tier 2 Moves: #{review.white_tier_2[0]} --- #{review.white_tier_2[1].round(2)}%"
|
96
|
+
# puts "White Tier 3 Moves: #{review.white_tier_3[0]} --- #{review.white_tier_3[1].round(2)}%"
|
97
|
+
# puts "White Tier 4 Moves: #{review.white_tier_4[0]} --- #{review.white_tier_4[1].round(2)}%"
|
98
|
+
# puts "-----------------------------------------------------"
|
99
|
+
# puts "Black Total Top Moves: #{review.black_total[0]} --- #{review.black_total[1].round(2)}%"
|
100
|
+
# puts "White Total Top Moves: #{review.white_total[0]} --- #{review.white_total[1].round(2)}%"
|
101
|
+
# puts "-----------------------------------------------------"
|
43
102
|
|
44
103
|
end
|
45
104
|
|
data/ogs_katacheck.gemspec
CHANGED
@@ -22,7 +22,11 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
23
23
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
24
24
|
end
|
25
|
+
spec.add_runtime_dependency "faraday"
|
26
|
+
spec.add_runtime_dependency "terminal-table"
|
25
27
|
spec.bindir = "bin"
|
26
28
|
spec.executables = ["ogs-katacheck", "katacheck"]
|
27
29
|
spec.require_paths = ["lib"]
|
28
30
|
end
|
31
|
+
|
32
|
+
# to release, bump version and run `bundle exec rake release`
|
metadata
CHANGED
@@ -1,15 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ogs_katacheck
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- RubyMineshaft
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
12
|
-
dependencies:
|
11
|
+
date: 2020-11-18 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: faraday
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: terminal-table
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
13
41
|
description: This CLI gem is written for OGS team members in order to aid in investigating
|
14
42
|
suspicions of botting.
|
15
43
|
email:
|
@@ -20,6 +48,7 @@ executables:
|
|
20
48
|
extensions: []
|
21
49
|
extra_rdoc_files: []
|
22
50
|
files:
|
51
|
+
- ".DS_Store"
|
23
52
|
- ".gitignore"
|
24
53
|
- CHANGELOG.md
|
25
54
|
- Gemfile
|
@@ -30,6 +59,8 @@ files:
|
|
30
59
|
- bin/katacheck
|
31
60
|
- bin/ogs-katacheck
|
32
61
|
- bin/setup
|
62
|
+
- images/output.png
|
63
|
+
- images/reviews.png
|
33
64
|
- lib/ogs_katacheck.rb
|
34
65
|
- lib/ogs_katacheck/cli.rb
|
35
66
|
- lib/ogs_katacheck/full_review.rb
|