easy_captcha_solver 0.0.2 → 0.0.3
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/lib/easy_captcha_solver.rb +32 -3
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2c0efaec755c121dae345e90395b94ad7502f222
|
4
|
+
data.tar.gz: 4b60d856f1c1db88b72e8a6cd2784806478ad18e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0710d76863f1370abdd452a91717e783aa9b09a98a5f2733a1dd28126bffe4a354f638951fbd55b433577f3c282c452beba978eb6d1fdd48f0b4fc4c3ee7fc3e
|
7
|
+
data.tar.gz: bcceed3bc41f98006ef498bfb9687255985a6e6417005bf35fb7c32ab70c4ffc2167f4e0f0d35f4a094188d9f9f3b109811c897d5b8843efdd76513db57c2473
|
data/lib/easy_captcha_solver.rb
CHANGED
@@ -11,12 +11,22 @@ class EasyCaptchaSolver
|
|
11
11
|
}
|
12
12
|
|
13
13
|
@image = options[:image_path] if options[:image_path]
|
14
|
-
|
14
|
+
|
15
|
+
# If URL, save a file instead of trying to solve the captcha from memory because of tesseract limitations with .png images
|
16
|
+
if options[:image_url]
|
17
|
+
image = agent.get(options[:image_url]).save! "./tmp_image"
|
18
|
+
|
19
|
+
# Guess image extension and rename tmp file
|
20
|
+
@image = "./tmp_image.#{get_image_extension(image)}"
|
21
|
+
File.rename( image, @image)
|
22
|
+
end
|
23
|
+
|
15
24
|
unless @image
|
16
25
|
throw Exception.new "A local image path or a image URL must be provided. Example: easy_c = EasyCaptcha.new( image_url: 'http://www.example.com/captcha_img.jpg')"
|
17
26
|
end
|
18
27
|
|
19
|
-
solve_captcha
|
28
|
+
solve_captcha ensure File.delete(@image) if options[:image_url]
|
29
|
+
|
20
30
|
end
|
21
31
|
|
22
32
|
private
|
@@ -27,8 +37,27 @@ class EasyCaptchaSolver
|
|
27
37
|
e.language = :eng
|
28
38
|
e.blacklist = '|'
|
29
39
|
}
|
40
|
+
|
30
41
|
@captcha = e.text_for(@image).strip # => 'ABC'
|
31
42
|
end
|
32
43
|
end
|
33
44
|
|
34
|
-
|
45
|
+
def get_image_extension(local_file_path)
|
46
|
+
png = Regexp.new("\x89PNG".force_encoding("binary"))
|
47
|
+
jpg = Regexp.new("\xff\xd8\xff\xe0\x00\x10JFIF".force_encoding("binary"))
|
48
|
+
jpg2 = Regexp.new("\xff\xd8\xff\xe1(.*){2}Exif".force_encoding("binary"))
|
49
|
+
case IO.read(local_file_path, 10)
|
50
|
+
when /^GIF8/
|
51
|
+
'gif'
|
52
|
+
when /^#{png}/
|
53
|
+
'png'
|
54
|
+
when /^#{jpg}/
|
55
|
+
'jpg'
|
56
|
+
when /^#{jpg2}/
|
57
|
+
'jpg'
|
58
|
+
else
|
59
|
+
mime_type = `file #{local_file_path} --mime-type`.gsub("\n", '') # Works on linux and mac
|
60
|
+
raise UnprocessableEntity, "unknown file type" if !mime_type
|
61
|
+
mime_type.split(':')[1].split('/')[1].gsub('x-', '').gsub(/jpeg/, 'jpg').gsub(/text/, 'txt').gsub(/x-/, '')
|
62
|
+
end
|
63
|
+
end
|