alpr 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 1e2635632c662cd1e9c097123bd57afd78644753
4
- data.tar.gz: d3d1c374ee5e35438f147f4fb03a70d7d5d76c4e
2
+ SHA256:
3
+ metadata.gz: ac803bf984fae234c3fb83e57b29108fa2ba781fdf43fd8f75c2de5b49c195e8
4
+ data.tar.gz: 40deada9c770b0611369f6e2095a164d653b5ec0d65f54e8d383ed61735c644a
5
5
  SHA512:
6
- metadata.gz: 78d766154580ec38b117cb1b72ad6523868cac2aba0ff48893ad222b0e4c819d80ffe88e9349849e15ff3c77a0488dd6987b4dbb2c455d287087d421e6947c59
7
- data.tar.gz: be4f2495d64a0f7ec7087da5cd49af5431c0d58d9e7aa77513f0f846179fc9e94019e7369db631879b2c811b4a693d88d95e6349347c2309e7a6c8fdd297f361
6
+ metadata.gz: ab28f0ddf8d416a5244640072e68a887d6c3601c34677e0e7ec83a645dfa1cd1a0997a7a01bab42443d749de5ca5c3dd2df3126640c7541c3b1e6c80cfec92f6
7
+ data.tar.gz: 316d6b9045191e773cf732f4665035686ff8e5fa0c94d240ddf061208d24846b05c2aa66b1f391ade61003eeda9b3f666d5f6b60766058a42c8847d2c7507be3
@@ -0,0 +1,101 @@
1
+ version: 2
2
+
3
+ workspace_root: &workspace_root
4
+ ~/alpr
5
+
6
+ main_container: &main_container
7
+ image: circleci/ruby:2.3.8
8
+
9
+ attach_workspace: &attach_workspace
10
+ attach_workspace:
11
+ at: *workspace_root
12
+
13
+ restore_repo: &restore_repo
14
+ restore_cache:
15
+ name: Restore repository
16
+ keys:
17
+ - repo-{{ .Branch }}-{{ .Revision }}
18
+
19
+ restore_gems: &restore_gems
20
+ restore_cache:
21
+ name: Restore gems
22
+ keys:
23
+ - alpr-{{ checksum "alpr.gemspec" }}
24
+
25
+ jobs:
26
+ # Since a workspace can't persist the root of the working directory we are using the caching mechanism to save
27
+ # the repository.
28
+ checkout-code:
29
+ working_directory: *workspace_root
30
+ docker:
31
+ - *main_container
32
+ steps:
33
+ - *restore_repo
34
+ - checkout
35
+ - save_cache:
36
+ key: repo-{{ .Branch }}-{{ .Revision }}
37
+ paths:
38
+ - *workspace_root
39
+
40
+ bundle-dependencies:
41
+ working_directory: *workspace_root
42
+ docker:
43
+ - *main_container
44
+ steps:
45
+ - *restore_repo
46
+ - *restore_gems
47
+ - run:
48
+ name: Install Bundler dependencies
49
+ command: |
50
+ bundle install --path=vendor/bundle \
51
+ --retry=3
52
+ - save_cache:
53
+ key: alpr-{{ checksum "alpr.gemspec" }}
54
+ paths:
55
+ - vendor/bundle
56
+ - persist_to_workspace:
57
+ root: *workspace_root
58
+ paths:
59
+ - vendor/bundle
60
+
61
+ run-specs:
62
+ working_directory: *workspace_root
63
+ docker:
64
+ - *main_container
65
+ parallelism: 1
66
+ steps:
67
+ - *restore_repo
68
+ - *attach_workspace
69
+ - run:
70
+ name: Set bundler path
71
+ command: bundle --path vendor/bundle
72
+ - run:
73
+ name: Install OpenALPR
74
+ command: sudo apt-get update && sudo apt-get install -y openalpr openalpr-daemon openalpr-utils libopenalpr-dev
75
+ - run:
76
+ name: Run tests
77
+ command: bundle exec rake test
78
+ when: always
79
+ - store_test_results:
80
+ path: test/reports
81
+
82
+ workflows:
83
+ version: 2
84
+ build-test-deploy:
85
+ jobs:
86
+ - checkout-code:
87
+ filters:
88
+ tags:
89
+ only: /.*/
90
+ - bundle-dependencies:
91
+ requires:
92
+ - checkout-code
93
+ filters:
94
+ tags:
95
+ only: /.*/
96
+ - run-specs:
97
+ requires:
98
+ - bundle-dependencies
99
+ filters:
100
+ tags:
101
+ only: /.*/
@@ -0,0 +1,51 @@
1
+ require: rubocop-rspec
2
+
3
+ AllCops:
4
+ TargetRubyVersion: 2.3
5
+
6
+ Documentation:
7
+ # Skips checking to make sure top level modules / classes have a comment.
8
+ Enabled: false
9
+
10
+ Style/ClassAndModuleChildren:
11
+ # Skips checking the style of children definitions at classes and modules.
12
+ #
13
+ # Basically there are two different styles:
14
+ #
15
+ # `nested` - have each child on a separate line
16
+ # class Foo
17
+ # class Bar
18
+ # end
19
+ # end
20
+ #
21
+ # `compact` - combine definitions as much as possible
22
+ # class Foo::Bar
23
+ # end
24
+ #
25
+ # With it disabled, either or is valid.
26
+ Enabled: false
27
+
28
+ Metrics/LineLength:
29
+ # Commonly used screens these days easily fit more than 80 characters.
30
+ Max: 120
31
+
32
+ Metrics/MethodLength:
33
+ # Too short methods lead to extraction of single-use methods, which can make
34
+ # the code easier to read (by naming things), but can also clutter the class
35
+ Max: 20
36
+
37
+ Layout/SpaceAroundEqualsInParameterDefault:
38
+ # No space makes the method definition shorter and differentiates
39
+ # from a regular assignment.
40
+ EnforcedStyle: no_space
41
+
42
+ Style/SymbolArray:
43
+ # We do not need to support Ruby 1.9, so this is good to use.
44
+ Enabled: true
45
+
46
+ Style/PercentLiteralDelimiters:
47
+ # Because percent literals are closer to method calls, use parenthesis.
48
+ PreferredDelimiters:
49
+ default: ()
50
+ '%i': '()'
51
+ '%w': '()'
@@ -1,3 +1,3 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.1.4
3
+ - 2.3.8
@@ -0,0 +1,10 @@
1
+ FROM circleci/ruby:2.3.8
2
+ USER root
3
+ RUN apt-get update && sudo apt-get install -y openalpr openalpr-daemon openalpr-utils libopenalpr-dev
4
+ RUN mkdir /alpr
5
+ RUN chown -R circleci:circleci /alpr
6
+ USER circleci
7
+ WORKDIR /alpr
8
+ COPY . /alpr
9
+ RUN bundle install
10
+ COPY . /alpr
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in alpr.gemspec
data/README.md CHANGED
@@ -1,7 +1,16 @@
1
- # Alpr
1
+ # Alpr [![Gem](https://img.shields.io/gem/v/alpr.svg?style=plastic)](https://rubygems.org/gems/alpr) [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fzjwhitehead%2Falpr.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fzjwhitehead%2Falpr?ref=badge_shield)
2
+ [![CircleCI](https://circleci.com/gh/zjwhitehead/alpr/tree/master.svg?style=svg)](https://circleci.com/gh/zjwhitehead/alpr/tree/master)
3
+
4
+ Tiny rubygem wrapping [openALPR](https://github.com/openalpr/openalpr).
5
+
6
+ You'll need to install openALPR. I used `brew tap brewsci/science && brew install openalpr`, on macOS.
7
+
8
+ For Linux see the [official wiki](https://github.com/openalpr/openalpr/wiki/Compilation-instructions-(Ubuntu-Linux))
2
9
 
3
10
  ## Installation
4
11
 
12
+ Requires Ruby version 2.3 or higher
13
+
5
14
  Add this line to your application's Gemfile:
6
15
 
7
16
  ```ruby
@@ -18,11 +27,22 @@ Or install it yourself as:
18
27
 
19
28
  ## Usage
20
29
 
21
- TODO: Write usage instructions here
30
+ ```ruby
31
+ search = Alpr.new("lc.jpg")
32
+ puts search.output
33
+ ```
34
+
35
+ For USA license plates
36
+ specify an optional state pattern (eg. Ohio = "oh" )
37
+ ```ruby
38
+ search = Alpr.new("lc.jpg", :us, "oh")
39
+ puts search.output
40
+ ```
41
+
22
42
 
23
43
  ## Contributing
24
44
 
25
- 1. Fork it ( https://github.com/[my-github-username]/alpr/fork )
45
+ 1. Fork it ( https://github.com/zjwhitehead/alpr/fork )
26
46
  2. Create your feature branch (`git checkout -b my-new-feature`)
27
47
  3. Commit your changes (`git commit -am 'Add some feature'`)
28
48
  4. Push to the branch (`git push origin my-new-feature`)
data/Rakefile CHANGED
@@ -1,8 +1,12 @@
1
- require "bundler/gem_tasks"
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
2
4
 
3
5
  require 'rake/testtask'
4
6
 
5
7
  Rake::TestTask.new do |t|
6
8
  t.libs << 'test'
7
- t.pattern = "test/test_*.rb"
9
+ t.pattern = 'test/test_*.rb'
8
10
  end
11
+
12
+ task :default => :test
@@ -1,23 +1,29 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
  require 'alpr/version'
5
6
 
6
7
  Gem::Specification.new do |spec|
7
- spec.name = "alpr"
8
+ spec.name = 'alpr'
8
9
  spec.version = Alpr::VERSION
9
- spec.authors = ["Andrew Monks"]
10
- spec.email = ["a@monks.co"]
10
+ spec.authors = ['Andrew Monks', 'Zach Whitehead']
11
+ spec.email = ['zjwhitehead@users.noreply.github.com']
11
12
 
12
- spec.summary = %q{Ruby wrapper for openalpr}
13
- spec.homepage = "http://github.com/amonks/alpr"
14
- spec.license = "MIT"
13
+ spec.summary = 'Ruby wrapper for openalpr'
14
+ spec.homepage = 'http://github.com/zjwhitehead/alpr'
15
+ spec.license = 'MIT'
15
16
 
16
17
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
- spec.bindir = "exe"
18
+ spec.bindir = 'exe'
18
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
- spec.require_paths = ["lib"]
20
+ spec.require_paths = ['lib']
21
+
22
+ spec.required_ruby_version = '>= 2.3'
20
23
 
21
- spec.add_development_dependency "bundler", "~> 1.9"
22
- spec.add_development_dependency "rake", "~> 10.0"
24
+ spec.add_development_dependency 'bundler', '~> 1.9'
25
+ spec.add_development_dependency 'json'
26
+ spec.add_development_dependency 'rake', '~> 10.0'
27
+ spec.add_development_dependency 'minitest'
28
+ spec.add_development_dependency 'minitest-ci'
23
29
  end
@@ -0,0 +1,6 @@
1
+ version: '3'
2
+ services:
3
+ alpr:
4
+ build: .
5
+ volumes:
6
+ - .:/alpr
@@ -1,15 +1,17 @@
1
- require "alpr/version"
1
+ # frozen_string_literal: true
2
2
 
3
- require 'shellwords'
4
- require 'JSON'
3
+ require 'alpr/version'
5
4
 
5
+ require 'shellwords'
6
+ require 'json'
6
7
 
7
8
  class Alpr
8
- attr_reader :region, :max, :glob, :output, :command
9
+ attr_reader :region, :max, :glob, :output, :command, :pattern
9
10
 
10
- def initialize(file, region = :detect, max = 10, glob = false)
11
+ def initialize(file, region=:detect, pattern=nil, max=10, glob=false)
11
12
  @file = file
12
13
  @region = region
14
+ @pattern = pattern
13
15
  @max = max
14
16
  @glob = glob
15
17
 
@@ -17,10 +19,10 @@ class Alpr
17
19
  begin
18
20
  if @glob
19
21
  Dir.glob(glob).each do |picture|
20
- @output.push JSON.parse(checkFile(picture))
22
+ @output.push JSON.parse(check_file(picture))
21
23
  end
22
24
  else
23
- @output = JSON.parse(checkFile(file))
25
+ @output = JSON.parse(check_file(file))
24
26
  end
25
27
  rescue JSON::ParserError
26
28
  @output = nil
@@ -29,21 +31,25 @@ class Alpr
29
31
 
30
32
  private
31
33
 
32
- def checkFile(file)
33
- @command = "alpr -j -n #{@max} #{regionString} #{Shellwords.shellescape file}"
34
+ def check_file(file)
35
+ @command = "alpr -j -n #{@max} #{region_string} #{pattern_string} #{Shellwords.shellescape file}"
34
36
  `#{@command}`
35
37
  end
36
38
 
37
- def regionString
39
+ def region_string
38
40
  case @region
39
41
  when :us
40
- "-c us"
42
+ '-c us'
41
43
  when :eu
42
- "-c eu"
44
+ '-c eu'
43
45
  when :detect
44
- "--detect_region"
46
+ '--detect_region'
45
47
  else
46
- ""
48
+ ''
47
49
  end
48
50
  end
51
+
52
+ def pattern_string
53
+ return "-p #{@pattern.downcase}" if @pattern
54
+ end
49
55
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Alpr
2
- VERSION = "0.1.0"
4
+ VERSION = '0.1.1'
3
5
  end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alpr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Monks
8
+ - Zach Whitehead
8
9
  autorequire:
9
10
  bindir: exe
10
11
  cert_chain: []
11
- date: 2015-04-10 00:00:00.000000000 Z
12
+ date: 2018-12-15 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: bundler
@@ -24,6 +25,20 @@ dependencies:
24
25
  - - "~>"
25
26
  - !ruby/object:Gem::Version
26
27
  version: '1.9'
28
+ - !ruby/object:Gem::Dependency
29
+ name: json
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
27
42
  - !ruby/object:Gem::Dependency
28
43
  name: rake
29
44
  requirement: !ruby/object:Gem::Requirement
@@ -38,24 +53,56 @@ dependencies:
38
53
  - - "~>"
39
54
  - !ruby/object:Gem::Version
40
55
  version: '10.0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: minitest
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: minitest-ci
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
41
84
  description:
42
85
  email:
43
- - a@monks.co
86
+ - zjwhitehead@users.noreply.github.com
44
87
  executables: []
45
88
  extensions: []
46
89
  extra_rdoc_files: []
47
90
  files:
91
+ - ".circleci/config.yml"
48
92
  - ".gitignore"
93
+ - ".rubocop.yml"
49
94
  - ".travis.yml"
50
95
  - CODE_OF_CONDUCT.md
96
+ - Dockerfile
51
97
  - Gemfile
52
98
  - LICENSE.txt
53
99
  - README.md
54
100
  - Rakefile
55
101
  - alpr.gemspec
102
+ - docker-compose.yml
56
103
  - lib/alpr.rb
57
104
  - lib/alpr/version.rb
58
- homepage: http://github.com/amonks/alpr
105
+ homepage: http://github.com/zjwhitehead/alpr
59
106
  licenses:
60
107
  - MIT
61
108
  metadata: {}
@@ -67,7 +114,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
67
114
  requirements:
68
115
  - - ">="
69
116
  - !ruby/object:Gem::Version
70
- version: '0'
117
+ version: '2.3'
71
118
  required_rubygems_version: !ruby/object:Gem::Requirement
72
119
  requirements:
73
120
  - - ">="
@@ -75,7 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
75
122
  version: '0'
76
123
  requirements: []
77
124
  rubyforge_project:
78
- rubygems_version: 2.2.2
125
+ rubygems_version: 2.7.7
79
126
  signing_key:
80
127
  specification_version: 4
81
128
  summary: Ruby wrapper for openalpr