scene-toolkit 0.2.0 → 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.
- data/lib/scene_toolkit/release/validations/checksum.rb +38 -27
- data/lib/scene_toolkit/release.rb +1 -5
- data/lib/scene_toolkit.rb +1 -1
- metadata +11 -11
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'zlib'
|
2
|
+
|
1
3
|
module SceneToolkit
|
2
4
|
class Release
|
3
5
|
module Validations
|
@@ -8,43 +10,52 @@ module SceneToolkit
|
|
8
10
|
|
9
11
|
def valid_checksum?
|
10
12
|
@errors[:checksum], @warnings[:checksum] = [], []
|
11
|
-
|
12
13
|
if sfv_files.any?
|
13
14
|
sfv_files.each do |sfv|
|
14
|
-
|
15
|
-
|
16
|
-
|
15
|
+
begin
|
16
|
+
validate_checksum(sfv)
|
17
|
+
rescue => e
|
18
|
+
@errors[:playlist] << e.message
|
17
19
|
end
|
20
|
+
end
|
21
|
+
else
|
22
|
+
@errors[:checksum] << "No *.sfv files found"
|
23
|
+
end
|
24
|
+
@errors[:checksum].empty?
|
25
|
+
end
|
18
26
|
|
19
|
-
|
20
|
-
File.read(sfv).split(/[\r\n]+/).each do |line|
|
21
|
-
line.strip!
|
27
|
+
protected
|
22
28
|
|
23
|
-
|
24
|
-
|
25
|
-
|
29
|
+
def validate_checksum(sfv)
|
30
|
+
files_to_check = files.inject({ }) do |collection, file|
|
31
|
+
collection[File.basename(file).downcase] = File.expand_path(file)
|
32
|
+
collection
|
33
|
+
end
|
34
|
+
|
35
|
+
matched_something = false
|
36
|
+
File.read(sfv).split(/[\r\n]+/).each do |line|
|
37
|
+
line.strip!
|
38
|
+
|
39
|
+
if (/(generated|raped)/i =~ line and not /MorGoTH/i =~ line)
|
40
|
+
@warnings[:checksum] << "Possibly tampered SFV: #{line.strip}"
|
41
|
+
end
|
26
42
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
end
|
37
|
-
else
|
38
|
-
@errors[:checksum] << "File #{filename} not found"
|
39
|
-
end
|
43
|
+
if match = /^(.+?)\s+([\dA-Fa-f]{8})$/.match(line)
|
44
|
+
matched_something = true
|
45
|
+
filename, checksum = match.captures
|
46
|
+
filename.strip!
|
47
|
+
filename.downcase!
|
48
|
+
|
49
|
+
if files_to_check.has_key?(filename)
|
50
|
+
unless Zlib.crc32(File.read(files_to_check[filename])).eql?(checksum.hex)
|
51
|
+
@errors[:checksum] << "File #{filename} is corrupted"
|
40
52
|
end
|
53
|
+
else
|
54
|
+
@errors[:checksum] << "File #{filename} not found"
|
41
55
|
end
|
42
|
-
@warnings[:checksum] << "No files to verify found" unless matched_something
|
43
56
|
end
|
44
|
-
else
|
45
|
-
@errors[:checksum] << "No *.sfv files found"
|
46
57
|
end
|
47
|
-
@
|
58
|
+
@warnings[:checksum] << "No files to verify found" unless matched_something
|
48
59
|
end
|
49
60
|
end
|
50
61
|
end
|
@@ -1,6 +1,3 @@
|
|
1
|
-
require 'digest/md5'
|
2
|
-
require 'zlib'
|
3
|
-
|
4
1
|
require 'scene_toolkit/release/helpers'
|
5
2
|
require 'scene_toolkit/release/rename'
|
6
3
|
require 'scene_toolkit/release/validations'
|
@@ -11,7 +8,7 @@ require 'scene_toolkit/release/validations/required_files'
|
|
11
8
|
|
12
9
|
module SceneToolkit
|
13
10
|
class Release
|
14
|
-
attr_accessor :name, :path
|
11
|
+
attr_accessor :name, :path
|
15
12
|
attr_accessor :errors, :warnings
|
16
13
|
|
17
14
|
include Validations
|
@@ -26,7 +23,6 @@ module SceneToolkit
|
|
26
23
|
def initialize(path)
|
27
24
|
@path = File.expand_path(path)
|
28
25
|
@name = File.basename(path)
|
29
|
-
@uid = Digest::MD5.hexdigest(@name.downcase.gsub(/[^A-Z0-9]/i, ' ').gsub(/\s+/, ' '))
|
30
26
|
@errors, @warnings = { }, { }
|
31
27
|
end
|
32
28
|
|
data/lib/scene_toolkit.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scene-toolkit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -14,7 +14,7 @@ default_executable:
|
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
17
|
-
requirement: &
|
17
|
+
requirement: &2153049440 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: 3.0.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *2153049440
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: i18n
|
28
|
-
requirement: &
|
28
|
+
requirement: &2153049020 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *2153049020
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: colored
|
39
|
-
requirement: &
|
39
|
+
requirement: &2153048560 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: '0'
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *2153048560
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: optitron
|
50
|
-
requirement: &
|
50
|
+
requirement: &2153048140 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *2153048140
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: nestful
|
61
|
-
requirement: &
|
61
|
+
requirement: &2153047720 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ! '>='
|
@@ -66,7 +66,7 @@ dependencies:
|
|
66
66
|
version: '0'
|
67
67
|
type: :runtime
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *2153047720
|
70
70
|
description: Tool to assist scene MP3 library maintenance
|
71
71
|
email:
|
72
72
|
- knoopx@gmail.com
|