piwigo-api 0.5.9 → 0.5.10
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/CHANGELOG.md +4 -0
- data/Gemfile.lock +19 -19
- data/lib/piwigo/albums.rb +5 -5
- data/lib/piwigo/folder_sync.rb +5 -5
- data/lib/piwigo/image_uploader.rb +5 -6
- data/lib/piwigo/images.rb +4 -4
- data/lib/piwigo/session.rb +9 -6
- data/lib/piwigo/version.rb +1 -1
- data/piwigo-api.gemspec +5 -5
- metadata +12 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c0a99204c5afaf20cc4487138db8ac03f610b3599b2c67cd07885d0ee12c2150
|
4
|
+
data.tar.gz: d2e3017eedba2439a241b79db9c7ecd5f8e2ab273136fea450d49286724b5b93
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c5bf3103979e5a1e68a5e687e35bae8232c7a1e83a5a732d7952c85c8d0d5cd65b555e50e617162c5805c64f91d5e61d87c33c58a5844ff365a8f91eb5ffb6a
|
7
|
+
data.tar.gz: ebf38478a69894d10ed41b89e6b1e46b5fce6a97c6cf16c0a29c01debe96b7e8473b62e7852bf789583f29e034c7021ff3fcefa27c4a6ceb894c9ef737943de9
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file.
|
|
4
4
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
5
5
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
6
6
|
|
7
|
+
0.5.10 - 2022-01-16
|
8
|
+
- Update Gemfile dependencies
|
9
|
+
- Code and documentation cleanups
|
10
|
+
|
7
11
|
0.5.9 - 2021-07-13
|
8
12
|
- Update version to fix github actions
|
9
13
|
|
data/Gemfile.lock
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
piwigo-api (0.5.
|
4
|
+
piwigo-api (0.5.10)
|
5
5
|
exifr (~> 1.3)
|
6
6
|
http (~> 5.0)
|
7
|
-
logger (~> 1.
|
7
|
+
logger (~> 1.5)
|
8
8
|
|
9
9
|
GEM
|
10
10
|
remote: https://rubygems.org/
|
@@ -13,31 +13,31 @@ GEM
|
|
13
13
|
public_suffix (>= 2.0.2, < 5.0)
|
14
14
|
ansi (1.5.0)
|
15
15
|
builder (3.2.4)
|
16
|
-
codecov (0.
|
16
|
+
codecov (0.6.0)
|
17
17
|
simplecov (>= 0.15, < 0.22)
|
18
18
|
docile (1.4.0)
|
19
19
|
domain_name (0.5.20190701)
|
20
20
|
unf (>= 0.0.5, < 1.0.0)
|
21
21
|
exifr (1.3.9)
|
22
|
-
ffi (1.15.
|
23
|
-
ffi (1.15.
|
22
|
+
ffi (1.15.5)
|
23
|
+
ffi (1.15.5-x64-mingw32)
|
24
24
|
ffi-compiler (1.0.1)
|
25
25
|
ffi (>= 1.0.0)
|
26
26
|
rake
|
27
|
-
http (5.0.
|
28
|
-
addressable (~> 2.
|
27
|
+
http (5.0.4)
|
28
|
+
addressable (~> 2.8)
|
29
29
|
http-cookie (~> 1.0)
|
30
30
|
http-form_data (~> 2.2)
|
31
|
-
llhttp-ffi (~> 0.
|
31
|
+
llhttp-ffi (~> 0.4.0)
|
32
32
|
http-cookie (1.0.4)
|
33
33
|
domain_name (~> 0.5)
|
34
34
|
http-form_data (2.3.0)
|
35
|
-
llhttp-ffi (0.
|
35
|
+
llhttp-ffi (0.4.0)
|
36
36
|
ffi-compiler (~> 1.0)
|
37
37
|
rake (~> 13.0)
|
38
|
-
logger (1.
|
39
|
-
minitest (5.
|
40
|
-
minitest-reporters (1.
|
38
|
+
logger (1.5.0)
|
39
|
+
minitest (5.15.0)
|
40
|
+
minitest-reporters (1.5.0)
|
41
41
|
ansi
|
42
42
|
builder
|
43
43
|
minitest (>= 5.0)
|
@@ -53,21 +53,21 @@ GEM
|
|
53
53
|
simplecov_json_formatter (0.1.3)
|
54
54
|
unf (0.1.4)
|
55
55
|
unf_ext
|
56
|
-
unf_ext (0.0.
|
57
|
-
unf_ext (0.0.
|
56
|
+
unf_ext (0.0.8)
|
57
|
+
unf_ext (0.0.8-x64-mingw32)
|
58
58
|
|
59
59
|
PLATFORMS
|
60
60
|
ruby
|
61
61
|
x64-mingw32
|
62
62
|
|
63
63
|
DEPENDENCIES
|
64
|
-
bundler (~> 2.
|
65
|
-
codecov (~> 0.
|
66
|
-
minitest (~> 5.
|
67
|
-
minitest-reporters (~> 1.
|
64
|
+
bundler (~> 2.3)
|
65
|
+
codecov (~> 0.6)
|
66
|
+
minitest (~> 5.15)
|
67
|
+
minitest-reporters (~> 1.5)
|
68
68
|
piwigo-api!
|
69
69
|
rake (~> 13.0)
|
70
70
|
simplecov (~> 0.21)
|
71
71
|
|
72
72
|
BUNDLED WITH
|
73
|
-
2.
|
73
|
+
2.3.5
|
data/lib/piwigo/albums.rb
CHANGED
@@ -3,8 +3,8 @@ require 'uri'
|
|
3
3
|
require 'json'
|
4
4
|
require 'logger'
|
5
5
|
|
6
|
-
# Piwigo organizes images by albums. The album tree has
|
7
|
-
# refers to a Album as a Category.
|
6
|
+
# Piwigo organizes images by albums. The album tree has unlimited depth and each photo can belong to multiple albums.
|
7
|
+
# The Piwigo API refers to a Album as a Category.
|
8
8
|
module Piwigo
|
9
9
|
class Albums
|
10
10
|
class Album
|
@@ -59,7 +59,7 @@ module Piwigo
|
|
59
59
|
def initialize(hash: nil)
|
60
60
|
hash&.each do |key, value|
|
61
61
|
# Bug: If the encoding is Windows-1252, then Piwigo will blowup when creating the album
|
62
|
-
value = value.encode('UTF-8', 'Windows-1252') if value.
|
62
|
+
value = value.encode('UTF-8', 'Windows-1252') if value.instance_of?(String) && value.encoding.to_s == 'Windows-1252'
|
63
63
|
send("#{key}=", value)
|
64
64
|
end
|
65
65
|
end
|
@@ -73,10 +73,10 @@ module Piwigo
|
|
73
73
|
#
|
74
74
|
# @param [Session] session - Session
|
75
75
|
# @param [Number] album_id - Album to fetch, Optional
|
76
|
-
# @param [Boolean] recursive - Include
|
76
|
+
# @param [Boolean] recursive - Include sub albums, Optional
|
77
77
|
# @param [Boolean] public - Only include public albums, Optional
|
78
78
|
# @param [Boolean] fullname - ???, Optional
|
79
|
-
# @param [String] thumbnail_size - Size of
|
79
|
+
# @param [String] thumbnail_size - Size of thumbnail to return, One of: square, thumb, 2small, xsmall, small, medium, large, xlarge, xxlarge. Optional
|
80
80
|
# @param [Logger] logger logger to output debug messages to (Optional)
|
81
81
|
#
|
82
82
|
# @return [Array<Album>] All albums that match the criteria, or nil there were no matches
|
data/lib/piwigo/folder_sync.rb
CHANGED
@@ -5,7 +5,7 @@ require_relative 'albums'
|
|
5
5
|
require_relative 'image_uploader'
|
6
6
|
|
7
7
|
module Piwigo
|
8
|
-
#
|
8
|
+
# Synchronize a folder with Piwigo
|
9
9
|
# - Album name will be the same as the folder name
|
10
10
|
# - Will be created as a top-level folder unless specified
|
11
11
|
class FolderSync
|
@@ -27,11 +27,11 @@ module Piwigo
|
|
27
27
|
FolderSync.new(session, logger: logger).synchronize(directory)
|
28
28
|
end
|
29
29
|
|
30
|
-
#
|
30
|
+
# Synchronize a folder with Piwigo
|
31
31
|
#
|
32
|
-
# @param [String] directory - directory to
|
32
|
+
# @param [String] directory - directory to synchronize.
|
33
33
|
def synchronize(directory)
|
34
|
-
if [
|
34
|
+
if %w[originals .picasaoriginals].include? File.basename(directory.downcase)
|
35
35
|
@logger.info "Skipping special directory: #{directory}"
|
36
36
|
return
|
37
37
|
else
|
@@ -75,7 +75,7 @@ module Piwigo
|
|
75
75
|
|
76
76
|
def process_file(directory_entry)
|
77
77
|
# Only attempt to import images
|
78
|
-
return unless [
|
78
|
+
return unless %w[.jpg .png .gif].include? File.extname(directory_entry).downcase
|
79
79
|
|
80
80
|
@logger.info "Processing Image: '#{directory_entry}' in album '#{@current_album}'"
|
81
81
|
image = Piwigo::Images.lookup(@session, directory_entry)
|
@@ -7,7 +7,7 @@ require 'base64'
|
|
7
7
|
|
8
8
|
# Add a photo.
|
9
9
|
#
|
10
|
-
# To avoid limitations on HTTP POST maximum size, the piwigo requires the image to be splitted into several calls to pwg.images.addChunk
|
10
|
+
# To avoid limitations on HTTP POST maximum size, the piwigo requires the image to be splitted into several calls to pwg.images.addChunk
|
11
11
|
# and then a single call to pwg.images.add.
|
12
12
|
#
|
13
13
|
# Reference: https://piwigo.org/doc/doku.php?id=dev:webapi:pwg.images.add
|
@@ -17,8 +17,6 @@ module Piwigo
|
|
17
17
|
MEGABYTE = 1024 * 1024
|
18
18
|
|
19
19
|
# Create a new ImageUploader
|
20
|
-
#
|
21
|
-
# @param [Session] session - session to a piwigo instance
|
22
20
|
def initialize(logger: nil)
|
23
21
|
@logger = logger || Logger.new(STDOUT)
|
24
22
|
end
|
@@ -126,10 +124,11 @@ module Piwigo
|
|
126
124
|
request['Cookie'] = [@session.id]
|
127
125
|
|
128
126
|
response = http.request(request)
|
129
|
-
|
127
|
+
case response.code
|
128
|
+
when '500'
|
130
129
|
@logger.error "Image Add failed: #{response.message}"
|
131
130
|
false
|
132
|
-
|
131
|
+
when '200'
|
133
132
|
data = JSON.parse(response.body)
|
134
133
|
p data
|
135
134
|
@logger.info 'Image Add succeeded.'
|
@@ -144,7 +143,7 @@ module Piwigo
|
|
144
143
|
|
145
144
|
def sniff_attributes(filename, album: nil)
|
146
145
|
attributes = {}
|
147
|
-
begin
|
146
|
+
begin
|
148
147
|
info = EXIFR::JPEG.new(filename)
|
149
148
|
@logger.info "--> GPS: #{info.gps.latitude}, #{info.gps.longitude}" unless info.gps.nil?
|
150
149
|
exif = info.exif.first.to_hash if info.exif?
|
data/lib/piwigo/images.rb
CHANGED
@@ -6,12 +6,12 @@ require 'logger'
|
|
6
6
|
require 'digest'
|
7
7
|
require_relative 'image_uploader'
|
8
8
|
|
9
|
-
# Piwigo organizes images by albums. The album tree has
|
9
|
+
# Piwigo organizes images by albums. The album tree has unlimited depth and each photo can belong to multiple albums. The Piwigo API
|
10
10
|
# refers to a Album as a Category.
|
11
11
|
module Piwigo
|
12
12
|
class Images
|
13
13
|
class Image
|
14
|
-
# @return [Number] Unique ID
|
14
|
+
# @return [Number] Unique ID identifying this ie
|
15
15
|
attr_accessor :id
|
16
16
|
|
17
17
|
# @return [Number] Width of the image in pixels
|
@@ -53,7 +53,7 @@ module Piwigo
|
|
53
53
|
def initialize(hash: nil)
|
54
54
|
hash&.each do |key, value|
|
55
55
|
# Bug: If the encoding is Windows-1252, then Piwigo will blowup when creating the album
|
56
|
-
value = value.encode('UTF-8', 'Windows-1252') if value.
|
56
|
+
value = value.encode('UTF-8', 'Windows-1252') if value.instance_of?(String) && value.encoding.to_s == 'Windows-1252'
|
57
57
|
send("#{key}=", value)
|
58
58
|
end
|
59
59
|
end
|
@@ -75,7 +75,7 @@ module Piwigo
|
|
75
75
|
def initialize(hash: nil)
|
76
76
|
hash&.each do |key, value|
|
77
77
|
# Bug: If the encoding is Windows-1252, then Piwigo will blowup when creating the album
|
78
|
-
value = value.encode('UTF-8', 'Windows-1252') if value.
|
78
|
+
value = value.encode('UTF-8', 'Windows-1252') if value.instance_of?(String) && value.encoding.to_s == 'Windows-1252'
|
79
79
|
send("#{key}=", value)
|
80
80
|
end
|
81
81
|
end
|
data/lib/piwigo/session.rb
CHANGED
@@ -28,7 +28,7 @@ module Piwigo
|
|
28
28
|
# Gets information about the current session. Also provides a token useable with admin methods.
|
29
29
|
# @return [<Type>] <description>
|
30
30
|
def status
|
31
|
-
logger ||= Logger.new(
|
31
|
+
logger ||= Logger.new($stdout)
|
32
32
|
|
33
33
|
begin
|
34
34
|
# Create the HTTP objects
|
@@ -60,11 +60,11 @@ module Piwigo
|
|
60
60
|
def logout(logger: nil)
|
61
61
|
raise 'This session has already been logged out' if uri.nil?
|
62
62
|
|
63
|
-
logger ||= Logger.new(
|
63
|
+
logger ||= Logger.new($stdout)
|
64
64
|
|
65
65
|
# Create the HTTP objects
|
66
66
|
http = Net::HTTP.new(uri.host, uri.port)
|
67
|
-
request = Net::HTTP::Get.new(uri.request_uri
|
67
|
+
request = Net::HTTP::Get.new("#{uri.request_uri}&method=pwg.session.logout")
|
68
68
|
request['Cookie'] = id
|
69
69
|
|
70
70
|
# Send the request
|
@@ -84,11 +84,14 @@ module Piwigo
|
|
84
84
|
raise 'host should not be nil' if host.nil?
|
85
85
|
raise 'username should not be nil' if username.nil?
|
86
86
|
|
87
|
-
logger ||= Logger.new(
|
87
|
+
logger ||= Logger.new($stdout)
|
88
88
|
|
89
89
|
begin
|
90
|
-
uri = https
|
91
|
-
|
90
|
+
uri = if https
|
91
|
+
URI::HTTPS.build(host: host, path: '/ws.php', query: 'format=json')
|
92
|
+
else
|
93
|
+
URI::HTTP.build(host: host, path: '/ws.php', query: 'format=json')
|
94
|
+
end
|
92
95
|
|
93
96
|
# Create the HTTP objects
|
94
97
|
http = Net::HTTP.new(uri.host, uri.port)
|
data/lib/piwigo/version.rb
CHANGED
data/piwigo-api.gemspec
CHANGED
@@ -27,14 +27,14 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
28
28
|
spec.require_paths = ['lib']
|
29
29
|
|
30
|
-
spec.add_development_dependency 'bundler', '~> 2.
|
31
|
-
spec.add_development_dependency 'codecov', '~> 0.
|
32
|
-
spec.add_development_dependency 'minitest', '~> 5.
|
33
|
-
spec.add_development_dependency 'minitest-reporters', '~>1.
|
30
|
+
spec.add_development_dependency 'bundler', '~> 2.3'
|
31
|
+
spec.add_development_dependency 'codecov', '~> 0.6'
|
32
|
+
spec.add_development_dependency 'minitest', '~> 5.15'
|
33
|
+
spec.add_development_dependency 'minitest-reporters', '~>1.5'
|
34
34
|
spec.add_development_dependency 'rake', '~> 13.0'
|
35
35
|
spec.add_development_dependency 'simplecov', '~> 0.21'
|
36
36
|
|
37
37
|
spec.add_runtime_dependency 'http', '~>5.0'
|
38
|
-
spec.add_runtime_dependency 'logger', '~>1.
|
38
|
+
spec.add_runtime_dependency 'logger', '~>1.5'
|
39
39
|
spec.add_runtime_dependency 'exifr', '~>1.3'
|
40
40
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: piwigo-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adrian Gilbert
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,56 +16,56 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '2.
|
19
|
+
version: '2.3'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '2.
|
26
|
+
version: '2.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: codecov
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0.
|
33
|
+
version: '0.6'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0.
|
40
|
+
version: '0.6'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: minitest
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '5.
|
47
|
+
version: '5.15'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '5.
|
54
|
+
version: '5.15'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: minitest-reporters
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '1.
|
61
|
+
version: '1.5'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '1.
|
68
|
+
version: '1.5'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,14 +114,14 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: '1.
|
117
|
+
version: '1.5'
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: '1.
|
124
|
+
version: '1.5'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: exifr
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|