piwigo-api 0.5.10 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c0a99204c5afaf20cc4487138db8ac03f610b3599b2c67cd07885d0ee12c2150
4
- data.tar.gz: d2e3017eedba2439a241b79db9c7ecd5f8e2ab273136fea450d49286724b5b93
3
+ metadata.gz: 7fc5b8141101c1b604876f7d5bf09effc43bbb016fc1a41b46541e8d3b743553
4
+ data.tar.gz: bde9f990a5d2dc96577094a89677fdc5d013edd75d77be152dd51e1cb8eeab82
5
5
  SHA512:
6
- metadata.gz: 9c5bf3103979e5a1e68a5e687e35bae8232c7a1e83a5a732d7952c85c8d0d5cd65b555e50e617162c5805c64f91d5e61d87c33c58a5844ff365a8f91eb5ffb6a
7
- data.tar.gz: ebf38478a69894d10ed41b89e6b1e46b5fce6a97c6cf16c0a29c01debe96b7e8473b62e7852bf789583f29e034c7021ff3fcefa27c4a6ceb894c9ef737943de9
6
+ metadata.gz: e073d758652e9f9bba60b7de66d1025b22c03cbf5b051692c4187b9ea9c3b88fe1c308d449bc2df047960604ec0e6d507f68a316024acc0fd7e9cf4fc0fe7e58
7
+ data.tar.gz: 3b0375000c48966b96d67a51b79f49e3958493390087854eaa1b629c6438c4587e1a3b08ba0d0d838e272a8d77f46d91a245de62487219467da3da8c0ced6b2e
data/.gitignore CHANGED
@@ -8,4 +8,5 @@
8
8
  /tmp/
9
9
  *.gem
10
10
  main.rb
11
- settings.json
11
+ settings.json
12
+ /.idea/
data/CHANGELOG.md CHANGED
@@ -4,6 +4,11 @@ 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.6.0 - 2022-01-17
8
+ - Added support for specifying the port to connect to Piwigo on, and added an example
9
+ - Fixed a regression bug from updating EXITF gem
10
+ - Additional spelling fixes
11
+
7
12
  0.5.10 - 2022-01-16
8
13
  - Update Gemfile dependencies
9
14
  - Code and documentation cleanups
@@ -24,8 +29,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
24
29
  - Fix another encoding issue when synchronizing folder with accented characters.
25
30
 
26
31
  0.5.4 - 2019-11-26
27
- - Fix crash in sniff_attributes when the image dosn't contain a valid EXIF data
28
- - Fix parent albums when syncronizing a folder-tree of albums into Piwigo
32
+ - Fix crash in sniff_attributes when the image doesn't contain a valid EXIF data
33
+ - Fix parent albums when synchronizing a folder-tree of albums into Piwigo
29
34
 
30
35
  0.5.3 - 2019-11-25
31
36
  - Fixed to coverage reports
@@ -38,10 +43,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
38
43
 
39
44
  0.5.0 - 2019-11-23
40
45
  - Added a directory of example scripts
41
- - Added a folder-album syncronization methods
46
+ - Added a folder-album synchronization methods
42
47
 
43
48
  0.4.0 - 2019-11-20
44
- - Add methods to check for the existance of a specific image and to upload images
49
+ - Add methods to check for the existence of a specific image and to upload images
45
50
 
46
51
  0.3.1 - 2019-11-20
47
52
  - Add a codecov.yaml for coverage reports
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- piwigo-api (0.5.10)
4
+ piwigo-api (0.6.0)
5
5
  exifr (~> 1.3)
6
6
  http (~> 5.0)
7
7
  logger (~> 1.5)
@@ -0,0 +1,42 @@
1
+ ## Specify a URL with a port
2
+
3
+ If you are running Piwigo on a non-standard port in docker, you can specify the port when connecting:
4
+
5
+ ```ruby
6
+ require 'piwigo/session'
7
+ require 'piwigo/images'
8
+
9
+
10
+ session = Piwigo::Session.login('localhost', 'root', 'piwigo', port: 8083, https: false)
11
+ unless session.nil?
12
+ require 'piwigo/session'
13
+ require 'piwigo/albums'
14
+
15
+ album = Piwigo::Albums::Album.new
16
+ album.name = "Chippy"
17
+ album = Piwigo::Albums.add(session, album)
18
+
19
+ filename = 'C:\Photos\chippy.jpg'
20
+ if Piwigo::Images.lookup(session, filename).nil?
21
+ Piwigo::Images.upload(session, filename, album, 'apple-pie-bars')
22
+ end
23
+ end
24
+ ```
25
+
26
+ Example output:
27
+ ~~~
28
+ $ ruby main.rb
29
+ I, [2022-01-16T20:40:27.437987 #13428] INFO -- : Login succeeded: {"stat":"ok","result":true}
30
+ I, [2022-01-16T20:40:27.471733 #13428] INFO -- : Status succeeded
31
+ I, [2022-01-16T20:40:27.475731 #13428] INFO -- : Encoding: Chippy - UTF-8
32
+ I, [2022-01-16T20:40:27.534389 #13428] INFO -- : Album Add succeeded: Chippy(1) created.
33
+ I, [2022-01-16T20:40:27.589282 #13428] INFO -- : Image lookup succeeded: {"e49804192ae97cd09460e09fddb8187a"=>nil}
34
+ I, [2022-01-16T20:40:27.702908 #13428] INFO -- : Image AddChunk #0 succeeded: {"stat"=>"ok", "result"=>nil}
35
+ I, [2022-01-16T20:40:27.817544 #13428] INFO -- : Image AddChunk #1 succeeded: {"stat"=>"ok", "result"=>nil}
36
+ I, [2022-01-16T20:40:27.901301 #13428] INFO -- : Image AddChunk #2 succeeded: {"stat"=>"ok", "result"=>nil}
37
+ I, [2022-01-16T20:40:27.902947 #13428] INFO -- : --> GPS: 45.33110277777778, -75.79546111111111
38
+ I, [2022-01-16T20:40:27.903224 #13428] INFO -- : {:date_creation=>"2022-01-16", :categories=>1}
39
+ {"stat"=>"ok", "result"=>{"image_id"=>1, "url"=>"http://localhost:8083:8000/picture.php?/1/category/1"}}
40
+ I, [2022-01-16T20:40:27.980021 #13428] INFO -- : Image Add succeeded.
41
+
42
+ ~~~
@@ -1,6 +1,6 @@
1
- ## Syncronize a Directory with Piwigo
1
+ ## Synchronize a Directory with Piwigo
2
2
 
3
- To syncronize a folder-tree of im ages with Piwigo:
3
+ To synchronize a folder-tree of im ages with Piwigo:
4
4
 
5
5
  ```ruby
6
6
  require 'piwigo/session'
@@ -14,7 +14,7 @@ unless session.nil?
14
14
  end
15
15
  ```
16
16
 
17
- Call the script with the directory to syncronize. Eg:
17
+ Call the script with the directory to synchronize. Eg:
18
18
 
19
19
  ```ruby
20
20
  ruby main.rb //DISKSTATION/photos/
@@ -9,9 +9,13 @@ require 'piwigo/images'
9
9
 
10
10
  session = Piwigo::Session.login('10.100.230.78', 'Adrian', 'mypassword', https: false)
11
11
  unless session.nil?
12
+ album = Piwigo::Albums::Album.new
13
+ album.name = "Recipes"
14
+ album = Piwigo::Albums.add(session, album)
15
+
12
16
  filename = 'C:\photos\apple-pie-bars-articleLarge.jpg'
13
- if Piwigo::Images.Lookup(session, filename).nil?
14
- Piwigo::Images.Upload(session, filename, 'apple-pie-bars')
17
+ if Piwigo::Images.lookup(session, filename).nil?
18
+ Piwigo::Images.upload(session, filename, album, 'apple-pie-bars')
15
19
  end
16
20
  end
17
21
  ```
@@ -4,6 +4,7 @@ require 'json'
4
4
  require 'logger'
5
5
  require 'digest'
6
6
  require 'base64'
7
+ require 'exifr/jpeg'
7
8
 
8
9
  # Add a photo.
9
10
  #
@@ -28,7 +29,7 @@ module Piwigo
28
29
  # @param [<Type>] name of the image
29
30
  #
30
31
  # @return [Boolean] True if successful
31
- def upload(session, filename, name, album: null)
32
+ def upload(session, filename, name, album: nil)
32
33
  @session = session
33
34
  raise 'Invalid session' if @session.uri.nil?
34
35
 
@@ -134,6 +135,7 @@ module Piwigo
134
135
  @logger.info 'Image Add succeeded.'
135
136
  true
136
137
  else
138
+ @logger.error "Unexpected error: #{response.code}"
137
139
  false
138
140
  end
139
141
  rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e
data/lib/piwigo/images.rb CHANGED
@@ -131,11 +131,12 @@ module Piwigo
131
131
  #
132
132
  # @param [<Type>] session
133
133
  # @param [<Type>] filename of the file to upload
134
- # @param [<Type>] name of the image
134
+ # @param [Album] album to place tge image in
135
+ # @param [String] name of the image
135
136
  #
136
137
  # @return [Boolean] True if successful
137
- def self.upload(session, file, name)
138
- ImageUploader.new(session, file, name).upload
138
+ def self.upload(session, file, album, name)
139
+ ImageUploader.new.upload(session, file, name, album: album)
139
140
  end
140
141
 
141
142
  # Checks existence of images
@@ -78,9 +78,10 @@ module Piwigo
78
78
  # @param [string] piwigo - host to connect to. Can be fqdn or ip.
79
79
  # @param [string] username - user to connect as
80
80
  # @param [string] password - password for user
81
- # @param [boolean] https - Use HTTPS?
81
+ # @param [boolean] https -
82
+ # @param [port] Optional port. If not specified, then http connections will use 80, https 443
82
83
  # @param [Logger] logger logger to output debug messages to (Optional)
83
- def self.login(host, username, password, https: true, logger: nil)
84
+ def self.login(host, username, password, https: true, port: nil, logger: nil)
84
85
  raise 'host should not be nil' if host.nil?
85
86
  raise 'username should not be nil' if username.nil?
86
87
 
@@ -88,9 +89,9 @@ module Piwigo
88
89
 
89
90
  begin
90
91
  uri = if https
91
- URI::HTTPS.build(host: host, path: '/ws.php', query: 'format=json')
92
+ URI::HTTPS.build(host: host, port: port.nil? ? 443 : port, path: '/ws.php', query: 'format=json')
92
93
  else
93
- URI::HTTP.build(host: host, path: '/ws.php', query: 'format=json')
94
+ URI::HTTP.build(host: host, port: port.nil? ? 80 : port, path: '/ws.php', query: 'format=json')
94
95
  end
95
96
 
96
97
  # Create the HTTP objects
@@ -108,7 +109,7 @@ module Piwigo
108
109
 
109
110
  if response.code == '200'
110
111
  logger.info "Login succeeded: #{response.body}"
111
- pwg_id = response.response['set-cookie'].split(';').select { |i| i.strip.start_with? 'pwg_id' }.first
112
+ pwg_id = response.response['set-cookie'].split(/[;,\,]/).select { |i| i.strip.start_with? 'pwg_id' }.first
112
113
  return Session.new(pwg_id, uri)
113
114
  else
114
115
  logger.error "Login failed: #{response.body}"
@@ -1,3 +1,3 @@
1
1
  module Piwigo
2
- VERSION = '0.5.10'.freeze
2
+ VERSION = '0.6.0'.freeze
3
3
  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.10
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adrian Gilbert
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-01-16 00:00:00.000000000 Z
11
+ date: 2022-01-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -160,6 +160,7 @@ files:
160
160
  - bin/console
161
161
  - bin/setup
162
162
  - codecov.yml
163
+ - examples/Different_Port.md
163
164
  - examples/Syncronize_Folder.md
164
165
  - examples/Upload_Image.md
165
166
  - lib/piwigo.rb