piwigo-api 0.5.9 → 0.5.10
Sign up to get free protection for your applications and to get access to all the features.
- 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
|