cbz_tools 0.1.1 → 0.2.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/.vscode/settings.json +3 -0
- data/CHANGELOG.md +4 -0
- data/lib/cbz_tools/error.rb +5 -0
- data/lib/cbz_tools/reader.rb +64 -0
- data/lib/cbz_tools/version.rb +1 -1
- data/lib/cbz_tools.rb +2 -5
- metadata +19 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: be6a34e670ac04d6ea7d87875e6ce57eb182dda4f6349f72404ae66ce6a863df
|
|
4
|
+
data.tar.gz: 46d9ff6e0b8b52d13027a1ea06558947e6407cc0408637acb9acf9cbe03aafe5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 54063af8baff3b28a84f03d20339d85821f1d0326011faf81afecb4c5081840292a8083a936070d597040cc79ac4833d68c4717fb7a0d0575d68f2fceb823103
|
|
7
|
+
data.tar.gz: e264ef924c0781ef429da2aa89ee71dbc9ff7c3d37307bf832dd10e633852e1326af140ced09b2aaf8c4d5185deefd76e6dcf45b0b1f6e09a8989619c8dbc59f
|
data/CHANGELOG.md
CHANGED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "zip"
|
|
4
|
+
|
|
5
|
+
module CbzTools
|
|
6
|
+
class Reader
|
|
7
|
+
IMAGE_EXTENSIONS = %w[.jpg .jpeg .png .webp].freeze
|
|
8
|
+
|
|
9
|
+
class ImageNotFoundError < Error; end
|
|
10
|
+
|
|
11
|
+
def self.open(path, &block)
|
|
12
|
+
reader = new(path)
|
|
13
|
+
block.call(reader)
|
|
14
|
+
ensure
|
|
15
|
+
reader&.close
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def initialize(path)
|
|
19
|
+
@path = path
|
|
20
|
+
@zip = Zip::File.open(@path)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def close
|
|
24
|
+
@zip&.close
|
|
25
|
+
@zip = nil
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def image_names
|
|
29
|
+
@zip.entries
|
|
30
|
+
.reject(&:directory?)
|
|
31
|
+
.map(&:name)
|
|
32
|
+
.select { |name| !name.include?("__macosx") && image?(name) }
|
|
33
|
+
.sort
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def read(name)
|
|
37
|
+
entry = @zip.find_entry(name)
|
|
38
|
+
return nil unless entry
|
|
39
|
+
|
|
40
|
+
entry.get_input_stream.read
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def first_image
|
|
44
|
+
read(image_names.first)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def image(name)
|
|
48
|
+
data = read(name)
|
|
49
|
+
raise ImageNotFoundError, "Image '#{name}' not found in #{@path}" unless data
|
|
50
|
+
|
|
51
|
+
data
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def comic_info
|
|
55
|
+
read("ComicInfo.xml") || read("comicinfo.xml")
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
private
|
|
59
|
+
|
|
60
|
+
def image?(name)
|
|
61
|
+
IMAGE_EXTENSIONS.any? { |ext| name.downcase.end_with?(ext) }
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
data/lib/cbz_tools/version.rb
CHANGED
data/lib/cbz_tools.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,28 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cbz_tools
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- David Figueroa
|
|
8
8
|
bindir: exe
|
|
9
9
|
cert_chain: []
|
|
10
10
|
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
-
dependencies:
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: rubyzip
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - "~>"
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '3.0'
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - "~>"
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: '3.0'
|
|
12
26
|
description: 'Tools for working with CBZ comic book archives: reading and extracting
|
|
13
27
|
their contents, reading and updating their embedded metadata, and converting CBR
|
|
14
28
|
archives to CBZ.'
|
|
@@ -18,10 +32,13 @@ executables: []
|
|
|
18
32
|
extensions: []
|
|
19
33
|
extra_rdoc_files: []
|
|
20
34
|
files:
|
|
35
|
+
- ".vscode/settings.json"
|
|
21
36
|
- CHANGELOG.md
|
|
22
37
|
- LICENSE.txt
|
|
23
38
|
- README.md
|
|
24
39
|
- lib/cbz_tools.rb
|
|
40
|
+
- lib/cbz_tools/error.rb
|
|
41
|
+
- lib/cbz_tools/reader.rb
|
|
25
42
|
- lib/cbz_tools/version.rb
|
|
26
43
|
- sig/cbz_tools.rbs
|
|
27
44
|
homepage: https://github.com/dmfigueroa/cbz_tools
|