webcomics 1.0.7 → 1.1.0
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/comics_cbz.rb +55 -0
- data/lib/comics_db.rb +18 -1
- data/lib/comics_dir.rb +88 -0
- data/lib/comics_engine.rb +46 -5
- data/lib/version.rb +3 -0
- data/lib/webcomics.rb +2 -0
- metadata +21 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e7f24b4b88e65cdbb40396fedae879b6ad3f7c98
|
4
|
+
data.tar.gz: a7ff820f56bdb16d30d5e9b4b392dfdf51d6a88a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb23e4c9ebfa39f4b0956ab23184154d25dda7545d4a4fee321d8e283879d209f52d5ed593e62df9d4ad3f75acdb8700248d998dc7b7b68d43c7d092d46bc38e
|
7
|
+
data.tar.gz: 0c5527550e1013089a2179e94c8b88285ecea6839a5128bf20643e986b852f4c2af61ae9b326ec4d4d9568213a67534144688ee44fea353210ab310728e2bb7e
|
data/lib/comics_cbz.rb
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'zip'
|
2
|
+
|
3
|
+
module WebComics
|
4
|
+
class CBZ < ComicsDir
|
5
|
+
attr_accessor :cbz
|
6
|
+
|
7
|
+
def self.cbz_or_zip?(file)
|
8
|
+
if File.extname(file) == ".cbz" || File.extname(file) == ".zip"
|
9
|
+
return true
|
10
|
+
else
|
11
|
+
return false
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def list_cbz_files
|
16
|
+
files_list = []
|
17
|
+
list_files.each do |cbz|
|
18
|
+
files_list.push(cbz) if CBZ.cbz_or_zip?(cbz)
|
19
|
+
end
|
20
|
+
|
21
|
+
files_list
|
22
|
+
end
|
23
|
+
|
24
|
+
def list_pages_inside(xml_ignore = true)
|
25
|
+
files_list = []
|
26
|
+
Zip::File.open("#{@series}/#{@cbz}") do |cbz|
|
27
|
+
cbz.each do |pages|
|
28
|
+
files_list.push(pages.name)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
return CBZ.ignore_xml(files_list) if xml_ignore
|
33
|
+
|
34
|
+
files_list
|
35
|
+
end
|
36
|
+
|
37
|
+
def extract(index = 0)
|
38
|
+
@page = nil
|
39
|
+
Zip::File.open("#{@series}/#{@cbz}") do |cbz|
|
40
|
+
@page = cbz.extract(list_pages_inside[index], list_pages_inside[index])
|
41
|
+
end
|
42
|
+
|
43
|
+
@page
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.ignore_xml(list)
|
47
|
+
files_list = []
|
48
|
+
list.each do |entry|
|
49
|
+
files_list.push(entry) if File.extname(entry) != ".xml"
|
50
|
+
end
|
51
|
+
|
52
|
+
files_list
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
data/lib/comics_db.rb
CHANGED
@@ -1,7 +1,24 @@
|
|
1
|
-
|
1
|
+
module WebComics
|
2
|
+
class ComicsDB
|
3
|
+
attr_accessor :db_record
|
4
|
+
attr_accessor :assets
|
2
5
|
|
6
|
+
def exists?
|
7
|
+
asset_names = []
|
8
|
+
|
9
|
+
Dir.entries(@assets).each do |a|
|
10
|
+
asset_names.push(a) if a == @db_record
|
11
|
+
end
|
12
|
+
|
13
|
+
!asset_names.empty?
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
# This class is kept here for backwards compadibity with older versions.
|
3
19
|
class ComicsDB
|
4
20
|
def self.exists?(db_table, assets)
|
21
|
+
warn "[DEPRECATION] `ComicsDB.exists?(db_table, assets) is deprecated. Please use `WebComics::ComicsDB.exists?` instead."
|
5
22
|
asset_names = []
|
6
23
|
|
7
24
|
Dir.entries(assets).each do |a|
|
data/lib/comics_dir.rb
CHANGED
@@ -1,10 +1,90 @@
|
|
1
|
+
module WebComics
|
2
|
+
class ComicsDir
|
3
|
+
attr_accessor :series
|
1
4
|
|
5
|
+
def self.comics_entries(dir)
|
6
|
+
entries = Dir.entries(dir)
|
7
|
+
entries.delete(".")
|
8
|
+
entries.delete("..")
|
9
|
+
|
10
|
+
entries
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.trim(entries)
|
14
|
+
trimed_entries = []
|
15
|
+
entries.each do |e|
|
16
|
+
trimed_entries.push(File.basename(e, ".*"))
|
17
|
+
end
|
18
|
+
|
19
|
+
trimed_entries
|
20
|
+
end
|
21
|
+
|
22
|
+
def directory?
|
23
|
+
File.directory?(@series)
|
24
|
+
end
|
25
|
+
|
26
|
+
def list_directories
|
27
|
+
dirs_list = []
|
28
|
+
ComicsDir.comics_entries(@series).each do |d|
|
29
|
+
dirs_list.push(d) if File.directory?("#{@series}/#{d}")
|
30
|
+
end
|
31
|
+
|
32
|
+
dirs_list
|
33
|
+
end
|
34
|
+
|
35
|
+
def file?
|
36
|
+
File.file?(@series)
|
37
|
+
end
|
38
|
+
|
39
|
+
def list_files
|
40
|
+
files_list = []
|
41
|
+
ComicsDir.comics_entries(@series).each do |d|
|
42
|
+
files_list.push(d) if File.file?("#{@series}/#{d}")
|
43
|
+
end
|
44
|
+
|
45
|
+
files_list
|
46
|
+
end
|
47
|
+
|
48
|
+
def filter_alphanum_dirs
|
49
|
+
alphanum_dirs = []
|
50
|
+
list_directories.each do |d|
|
51
|
+
alphanum_dirs.push(d) if d =~ /[0-9]/ && d =~ /[a-z]/ || d =~ /[A-Z]/
|
52
|
+
end
|
53
|
+
|
54
|
+
alphanum_dirs
|
55
|
+
end
|
56
|
+
|
57
|
+
def filter_alpha_dirs
|
58
|
+
alpha_dirs = []
|
59
|
+
list_directories.each do |d|
|
60
|
+
alpha_dirs.push(d) if d =~ /[a-z]/ || d =~ /[A-Z]/
|
61
|
+
alpha_dirs.delete_if { |d| d =~ /[0-9]/ }
|
62
|
+
end
|
63
|
+
|
64
|
+
alpha_dirs
|
65
|
+
end
|
66
|
+
|
67
|
+
def filter_num_dirs
|
68
|
+
num_dirs = []
|
69
|
+
list_directories.each do |d|
|
70
|
+
num_dirs.push(d) if d =~ /[0-9]/
|
71
|
+
num_dirs.delete_if { |d| d =~ /[a-z]/ || d =~ /[A-Z]/ }
|
72
|
+
end
|
73
|
+
|
74
|
+
num_dirs
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
# This class is kept here for backwards compadibity with older versions.
|
2
80
|
class ComicsDir
|
3
81
|
def initialize(series)
|
82
|
+
warn "[DEPRECATION] `ComicsDir.new(series)` is deprecated. Please use `WebComics::ComicsDir.new` instead."
|
4
83
|
@series = series
|
5
84
|
end
|
6
85
|
|
7
86
|
def comics_entries(dir)
|
87
|
+
warn "[DEPRECATION] `ComicsDir#comics_entries(dir)` is deprecated. Please use `WebComics::ComicsDir.comics_entries(dir)` instead."
|
8
88
|
entries = Dir.entries(dir)
|
9
89
|
entries.delete(".")
|
10
90
|
entries.delete("..")
|
@@ -13,6 +93,7 @@ class ComicsDir
|
|
13
93
|
end
|
14
94
|
|
15
95
|
def trim(entries)
|
96
|
+
warn "[DEPRECATION] `ComicsDir#trim(entries)` is deprecated. Please use `WebComics::ComicsDir.trim(entries)` instead."
|
16
97
|
trimed_entries = []
|
17
98
|
entries.each do |e|
|
18
99
|
trimed_entries.push(File.basename(e, ".*"))
|
@@ -22,10 +103,12 @@ class ComicsDir
|
|
22
103
|
end
|
23
104
|
|
24
105
|
def directory?(dir)
|
106
|
+
warn "[DEPRECATION] `ComicsDir#directory?(dir)` is deprecated. Please use `WebComics::ComicsDir#directory?` instead."
|
25
107
|
File.directory?(dir)
|
26
108
|
end
|
27
109
|
|
28
110
|
def list_directories(dir)
|
111
|
+
warn "[DEPRECATION] `ComicsDir#list_directories(dir)` is deprecated. Please use `WebComics::ComicsDir#list_directories` instead."
|
29
112
|
dirs_list = []
|
30
113
|
comics_entries("#{dir}/#{@series}").each do |d|
|
31
114
|
dirs_list.push(d) if directory?("#{dir}/#{@series}/#{d}")
|
@@ -35,10 +118,12 @@ class ComicsDir
|
|
35
118
|
end
|
36
119
|
|
37
120
|
def file?(f)
|
121
|
+
warn "[DEPRECATION] `ComicsDir#file?(f)` is deprecated. Please use `WebComics::ComicsDir#file?` instead."
|
38
122
|
File.file?(f)
|
39
123
|
end
|
40
124
|
|
41
125
|
def list_files(dir)
|
126
|
+
warn "[DEPRECATION] `ComicsDir#list_files(dir)` is deprecated. Please use `WebComics::ComicsDir#list_files` instead."
|
42
127
|
files_list = []
|
43
128
|
comics_entries(dir).each do |d|
|
44
129
|
files_list.push(d) if file?("#{dir}/#{d}")
|
@@ -48,6 +133,7 @@ class ComicsDir
|
|
48
133
|
end
|
49
134
|
|
50
135
|
def filter_alphanum_dirs(dir)
|
136
|
+
warn "[DEPRECATION] `ComicsDir#filter_alphanum_dirs(dir)` is deprecated. Please use `WebComics::ComicsDir#filter_alphanum_dirs` instead."
|
51
137
|
alphanum_dirs = []
|
52
138
|
list_directories(dir).each do |d|
|
53
139
|
alphanum_dirs.push(d) if d =~ /[0-9]/ && d =~ /[a-z]/ || d =~ /[A-Z]/
|
@@ -57,6 +143,7 @@ class ComicsDir
|
|
57
143
|
end
|
58
144
|
|
59
145
|
def filter_alpha_dirs(dir)
|
146
|
+
warn "[DEPRECATION] `ComicsDir#filter_alpha_dirs(dir)` is deprecated. Please use `WebComics::ComicsDir#filter_alpha_dirs` instead."
|
60
147
|
alpha_dirs = []
|
61
148
|
list_directories(dir).each do |d|
|
62
149
|
alpha_dirs.push(d) if d =~ /[a-z]/ || d =~ /[A-Z]/
|
@@ -67,6 +154,7 @@ class ComicsDir
|
|
67
154
|
end
|
68
155
|
|
69
156
|
def filter_num_dirs(dir)
|
157
|
+
warn "[DEPRECATION] `ComicsDir#filter_num_dirs(dir)` is deprecated. Please use `WebComics::ComicsDir#filter_num_dirs` instead."
|
70
158
|
num_dirs = []
|
71
159
|
list_directories(dir).each do |d|
|
72
160
|
num_dirs.push(d) if d =~ /[0-9]/
|
data/lib/comics_engine.rb
CHANGED
@@ -1,42 +1,83 @@
|
|
1
|
-
require_relative "comics_dir"
|
2
|
-
require_relative "comics_db"
|
3
1
|
require "fileutils"
|
4
2
|
|
3
|
+
module WebComics
|
4
|
+
class ComicsEngine < CBZ
|
5
|
+
FILE_EXT_ARRY = [".jpg", ".png", ".tiff", ".bmp", ".gif"]
|
6
|
+
|
7
|
+
def filter(entries)
|
8
|
+
entries.each_index do |i|
|
9
|
+
entries.delete_if { |e| e.include?(FILE_EXT_ARRY[i]) || e.include?("#") }
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def assets_dirs
|
14
|
+
filter(ComicsDir.comics_entries(@series))
|
15
|
+
end
|
16
|
+
|
17
|
+
def list_pages_cbz
|
18
|
+
list_pages_inside.sort
|
19
|
+
end
|
20
|
+
|
21
|
+
def list_pages
|
22
|
+
if CBZ.cbz_or_zip?("#{@series}/#{@cbz}")
|
23
|
+
list_pages_cbz
|
24
|
+
else
|
25
|
+
img_list = []
|
26
|
+
FileUtils.cd(@series) do
|
27
|
+
ComicsDir.comics_entries(".").each do |e|
|
28
|
+
img_list.push(e) if File.extname(e) == ".jpg" || File.extname(e) == ".png"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
img_list.sort
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
5
39
|
class ComicsEngine
|
6
|
-
def initialize(table_name, assets)
|
40
|
+
def initialize(table_name = nil, assets)
|
41
|
+
warn "[DEPRECATION] `ComicsEngine.new(table_name = nil, assets)` is deprecated. Please use `WebComics::ComicsEngine.new` instead."
|
7
42
|
@table_name = table_name
|
8
43
|
@assets = assets
|
9
44
|
@comics_dir = ComicsDir.new(@assets)
|
10
45
|
end
|
11
46
|
|
12
47
|
def dbtable_assets_match?
|
48
|
+
warn "[DEPRECATION] `ComicsEngine#dbtable_assets_match?` is deprecated."
|
13
49
|
ComicsDB.exists?(@table_name, @assets)
|
14
50
|
end
|
15
51
|
|
16
52
|
def add_appendage
|
53
|
+
warn "[DEPRECATION] `ComicsEngine#add_appendage` is deprecated."
|
17
54
|
@o_assets = @assets
|
18
|
-
@assets = "#{@assets}/#{@table_name}"
|
55
|
+
@assets = "#{@assets}/#{@table_name}"
|
19
56
|
end
|
20
57
|
|
21
58
|
def remove_appendage
|
59
|
+
warn "[DEPRECATION] `ComicsEngine#remove_appendage` is deprecated."
|
22
60
|
@assets.slice(@o_assets)
|
23
61
|
end
|
24
62
|
|
25
63
|
def filter(entries)
|
64
|
+
warn "[DEPRECATION] `ComicsEngine#filter(entries)` is deprecated."
|
26
65
|
entries.delete_if do |e|
|
27
66
|
e.include?(".") || e.include?("#")
|
28
67
|
end
|
29
68
|
end
|
30
69
|
|
31
70
|
def assets_dirs
|
71
|
+
warn "[DEPRECATION] `ComicsEngine#assets_dirs` is deprecated. Please use `WebComics::ComicsEngine#assets_dirs` instead."
|
32
72
|
filter(@comics_dir.comics_entries(@assets))
|
33
73
|
end
|
34
74
|
|
35
75
|
def list_pages
|
76
|
+
warn "[DEPRECATION] `ComicsEngine#list_pages` is deprecated. Please use `WebComics::ComicsEngine#list_pages(file = "")` instead."
|
36
77
|
img_list = []
|
37
78
|
FileUtils.cd(@assets) do
|
38
79
|
@comics_dir.comics_entries(".").each do |e|
|
39
|
-
|
80
|
+
img_list.push(e) if File.extname(e) == ".jpg" || File.extname(e) == ".png"
|
40
81
|
end
|
41
82
|
end
|
42
83
|
|
data/lib/version.rb
ADDED
data/lib/webcomics.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webcomics
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ralph Desir
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2016-02-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -39,19 +39,35 @@ dependencies:
|
|
39
39
|
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '3.3'
|
42
|
-
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: rubyzip
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '1.1'
|
49
|
+
type: :development
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - "~>"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '1.1'
|
56
|
+
description: A gem for creating comic book reader websites.
|
43
57
|
email: battleroundscool@gmail.com
|
44
58
|
executables: []
|
45
59
|
extensions: []
|
46
60
|
extra_rdoc_files: []
|
47
61
|
files:
|
62
|
+
- lib/comics_cbz.rb
|
48
63
|
- lib/comics_db.rb
|
49
64
|
- lib/comics_dir.rb
|
50
65
|
- lib/comics_engine.rb
|
66
|
+
- lib/version.rb
|
51
67
|
- lib/webcomics.rb
|
52
68
|
homepage: https://github.com/Mav7/Ruby-WebComics
|
53
69
|
licenses:
|
54
|
-
-
|
70
|
+
- GPL-2.0
|
55
71
|
metadata: {}
|
56
72
|
post_install_message:
|
57
73
|
rdoc_options: []
|
@@ -69,9 +85,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
69
85
|
version: '0'
|
70
86
|
requirements: []
|
71
87
|
rubyforge_project:
|
72
|
-
rubygems_version: 2.
|
88
|
+
rubygems_version: 2.5.1
|
73
89
|
signing_key:
|
74
90
|
specification_version: 4
|
75
91
|
summary: Ruby Web comics library
|
76
92
|
test_files: []
|
77
|
-
has_rdoc:
|