piwigo-api 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +20 -0
- data/CHANGELOG.md +6 -1
- data/README.md +22 -5
- data/lib/piwigo/albums.rb +1 -3
- data/lib/piwigo/images.rb +117 -0
- data/lib/piwigo/version.rb +1 -1
- data/piwigo-api.gemspec +1 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1108a31f234ef9bb5c9f99091378eb6d6d114eedd26b4e64329e2f803554b612
|
4
|
+
data.tar.gz: c30f56e0cb40c0b93cba86bffcd3d14d5f00d0aec28bd861707f8d8e8ef1406d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 71c2c6bd8420c15e1590339612c512e5c589819d005fd0b569f850b8ab7adcdc407d852aadff78cb28d97e6976f1941a232c508dbf1204a42c9691234ab56b52
|
7
|
+
data.tar.gz: c248f198a9d17fa71e29d7e53cd98e89087cb756898139fef94ddcd7ae30956d52c4ecc67fc9efd8a6cc2a93ed7c6c265a0f6deb8e47f85bd2237cf45e37f19e
|
@@ -0,0 +1,20 @@
|
|
1
|
+
name: Ruby
|
2
|
+
|
3
|
+
on: [push]
|
4
|
+
|
5
|
+
jobs:
|
6
|
+
build:
|
7
|
+
|
8
|
+
runs-on: ubuntu-latest
|
9
|
+
|
10
|
+
steps:
|
11
|
+
- uses: actions/checkout@v1
|
12
|
+
- name: Set up Ruby 2.6
|
13
|
+
uses: actions/setup-ruby@v1
|
14
|
+
with:
|
15
|
+
ruby-version: 2.6.x
|
16
|
+
- name: Build and test with Rake
|
17
|
+
run: |
|
18
|
+
gem install bundler
|
19
|
+
bundle install --jobs 4 --retry 3
|
20
|
+
bundle exec rake
|
data/CHANGELOG.md
CHANGED
@@ -6,8 +6,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
6
6
|
|
7
7
|
## [Unreleased]
|
8
8
|
|
9
|
+
0.3.0 - 2019-11-17
|
10
|
+
- Added a documentation URL pointing to rubydoc.info
|
11
|
+
- Added build badges
|
12
|
+
- Added ability to page though the images in an album
|
13
|
+
|
9
14
|
0.2.0 - 2019-11-17
|
10
|
-
- Refactored the Session to make
|
15
|
+
- Refactored the Session to make it easier to use
|
11
16
|
- Support adding/deleting & listing albums
|
12
17
|
|
13
18
|
0.1.1 - 2019-11-16
|
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# Piwigo-API
|
2
2
|
|
3
|
-
|
3
|
+
![](https://github.com/kkdad/piwigo-api/workflows/Ruby/badge.svg) ![](https://github.com/kkdad/piwigo-api/workflows/Ruby%20Gem/badge.svg) [![Gem Version](https://badge.fury.io/rb/piwigo-api.svg)](https://badge.fury.io/rb/piwigo-api)
|
4
|
+
|
5
|
+
[Piwigo](https://piwigo.org/) is open source web application to manage your collection of photos, and other medias. Piwigo provides an API for interacting with it.
|
4
6
|
|
5
7
|
This is a ruby-based client for interacting with a Piwigo instance using the Piwigo API.
|
6
8
|
|
@@ -26,8 +28,7 @@ Just include 'piwigo/session' and the related classes, then querying Piwigo is f
|
|
26
28
|
|
27
29
|
# Get the second album and all of it's children
|
28
30
|
|
29
|
-
|
30
|
-
```
|
31
|
+
```ruby
|
31
32
|
require 'piwigo/session'
|
32
33
|
require 'piwigo/albums'
|
33
34
|
|
@@ -39,8 +40,11 @@ end
|
|
39
40
|
```
|
40
41
|
|
41
42
|
# Add a new album
|
42
|
-
```
|
43
|
-
|
43
|
+
```ruby
|
44
|
+
require 'piwigo/session'
|
45
|
+
require 'piwigo/albums'
|
46
|
+
|
47
|
+
session = Piwigo::Session.login('10.100.230.78', 'Adrian', 'mypassword', https: false)
|
44
48
|
unless session.nil?
|
45
49
|
album = Piwigo::Albums::Album.new
|
46
50
|
album.name = "My First Album"
|
@@ -48,6 +52,19 @@ unless session.nil?
|
|
48
52
|
end
|
49
53
|
```
|
50
54
|
|
55
|
+
# List the Contents of an Album
|
56
|
+
|
57
|
+
```ruby
|
58
|
+
require 'piwigo/session'
|
59
|
+
require 'piwigo/images'
|
60
|
+
|
61
|
+
session = Piwigo::Session.login('mypiwigo.fqdn', 'Adrian', 'mypassword', https: false)
|
62
|
+
unless session.nil?
|
63
|
+
results = Piwigo::Images.getImages(session, album_id: 4)
|
64
|
+
|
65
|
+
results[:images].each { |image| p "#{image.id}, #{image.name} - #{image.element_url}" }
|
66
|
+
end
|
67
|
+
```
|
51
68
|
|
52
69
|
## Development
|
53
70
|
|
data/lib/piwigo/albums.rb
CHANGED
@@ -0,0 +1,117 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require 'uri'
|
3
|
+
require 'json'
|
4
|
+
require 'logger'
|
5
|
+
|
6
|
+
# Piwigo organizes images by albums. The album tree has unlimted depth and each photo can belong to multiple albums. The Piwigo API
|
7
|
+
# refers to a Album as a Category.
|
8
|
+
module Piwigo
|
9
|
+
class Images
|
10
|
+
class Image
|
11
|
+
# @return [Number] Unique ID idenifying this ie
|
12
|
+
attr_accessor :id
|
13
|
+
|
14
|
+
# @return [Number] Width of the image in pixels
|
15
|
+
attr_accessor :width
|
16
|
+
|
17
|
+
# @return [Number] Height of the image in pixels
|
18
|
+
attr_accessor :height
|
19
|
+
|
20
|
+
# @return [Number] Number of times the image has been viewed
|
21
|
+
attr_accessor :hit
|
22
|
+
|
23
|
+
# @return [String] Filename for the image
|
24
|
+
attr_accessor :file
|
25
|
+
|
26
|
+
# @return [String] Name of the image
|
27
|
+
attr_accessor :name
|
28
|
+
|
29
|
+
# @return [String] Comments about the image
|
30
|
+
attr_accessor :comment
|
31
|
+
|
32
|
+
# @return [DateTime] DateTime when the image was taken
|
33
|
+
attr_accessor :date_creation
|
34
|
+
|
35
|
+
# @return [DateTime] DateTime when the image was uploaded to Piwigo
|
36
|
+
attr_accessor :date_available
|
37
|
+
|
38
|
+
# @return [String] URL to the image page
|
39
|
+
attr_accessor :page_url
|
40
|
+
|
41
|
+
# @return [String] URL to the image itself
|
42
|
+
attr_accessor :element_url
|
43
|
+
|
44
|
+
# @return [Array<String>] Links to different sizes of the image
|
45
|
+
attr_accessor :derivatives
|
46
|
+
|
47
|
+
# @return [<Type>] List of all of the Albums this image is in
|
48
|
+
attr_accessor :categories
|
49
|
+
|
50
|
+
def initialize(hash: nil)
|
51
|
+
hash.each { |key, value| send("#{key}=", value) } unless hash.nil?
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
class Paging
|
56
|
+
# @return [Number] Page number of the results
|
57
|
+
attr_accessor :page
|
58
|
+
|
59
|
+
# @return [Number] Number of images requesed per page
|
60
|
+
attr_accessor :per_page
|
61
|
+
|
62
|
+
# @return [Number] Number of Images on this page. When this is less then the number per page, then there are no more results.
|
63
|
+
attr_accessor :count
|
64
|
+
|
65
|
+
# @return [Number] Total number of images across all pages
|
66
|
+
attr_accessor :total_count
|
67
|
+
|
68
|
+
def initialize(hash: nil)
|
69
|
+
hash.each { |key, value| send("#{key}=", value) } unless hash.nil?
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
# Returns elements for the corresponding categories.
|
74
|
+
# order comma separated fields for sorting
|
75
|
+
#
|
76
|
+
# @param [Session] session
|
77
|
+
# @param [Number] album_id - Can be empty if recursive is true.
|
78
|
+
# @param [Boolean] recursive - Include images from child albums
|
79
|
+
# @param [Number] per_page - Number of items to include per page
|
80
|
+
# @param [Number] page - Page to retrieve
|
81
|
+
# @param [String] order - One or more of id, file, name, hit, rating_score, date_creation, date_available or random
|
82
|
+
# @param [Logger] logger logger to output debug messages to (Optional)
|
83
|
+
#
|
84
|
+
# @return [Hash] <description>
|
85
|
+
def self.getImages(session, album_id: nil, recursive: nil, per_page: 100, page: 0, order: nil, logger: nil)
|
86
|
+
raise "Invalid session" if session.uri.nil?
|
87
|
+
logger = logger || Logger.new(STDOUT)
|
88
|
+
|
89
|
+
begin
|
90
|
+
http = Net::HTTP.new(session.uri.host, session.uri.port)
|
91
|
+
request = Net::HTTP::Post.new(session.uri.request_uri)
|
92
|
+
request.body = "method=pwg.categories.getImages"
|
93
|
+
request.body.concat "&cat_id=#{album_id}" unless album_id.nil?
|
94
|
+
request.body.concat "&recursive=#{recursive}" unless recursive.nil?
|
95
|
+
request.body.concat "&per_page=#{per_page}" unless album_id.nil?
|
96
|
+
request.body.concat "&order=#{order}" unless order.nil?
|
97
|
+
request['Cookie'] = [session.id]
|
98
|
+
|
99
|
+
# Send the request
|
100
|
+
response = http.request(request)
|
101
|
+
if response.code == '200'
|
102
|
+
data = JSON.parse(response.body)
|
103
|
+
paging = Paging.new hash: data['result']['paging']
|
104
|
+
images = data['result']['images'].map{ |hash| Image.new(hash: hash) }
|
105
|
+
logger.info "Image List succeeded: #{images.size} images retrieved."
|
106
|
+
{ :paging => paging, :images => images }
|
107
|
+
else
|
108
|
+
nil
|
109
|
+
end
|
110
|
+
rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e
|
111
|
+
logger.error "Image List failed: #{e.messages}"
|
112
|
+
nil
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
end
|
117
|
+
end
|
data/lib/piwigo/version.rb
CHANGED
data/piwigo-api.gemspec
CHANGED
@@ -16,6 +16,7 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.metadata["homepage_uri"] = spec.homepage
|
17
17
|
spec.metadata["source_code_uri"] = "https://github.com/kkdad/piwigo-api"
|
18
18
|
spec.metadata["changelog_uri"] = "https://github.com/kkdad/piwigo-api/CHANGELOG.md"
|
19
|
+
spec.metadata["documentation_uri"] = "https://rubydoc.info/github/KKDad/piwigo-api/master"
|
19
20
|
|
20
21
|
# Specify which files should be added to the gem when it is released.
|
21
22
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
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.
|
4
|
+
version: 0.3.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: 2019-11-
|
11
|
+
date: 2019-11-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -90,6 +90,7 @@ extensions: []
|
|
90
90
|
extra_rdoc_files: []
|
91
91
|
files:
|
92
92
|
- ".github/workflows/gempush.yml"
|
93
|
+
- ".github/workflows/ruby.yml"
|
93
94
|
- ".gitignore"
|
94
95
|
- ".travis.yml"
|
95
96
|
- ".vscode/launch.json"
|
@@ -103,6 +104,7 @@ files:
|
|
103
104
|
- bin/setup
|
104
105
|
- lib/piwigo.rb
|
105
106
|
- lib/piwigo/albums.rb
|
107
|
+
- lib/piwigo/images.rb
|
106
108
|
- lib/piwigo/session.rb
|
107
109
|
- lib/piwigo/version.rb
|
108
110
|
- piwigo-api.gemspec
|
@@ -113,6 +115,7 @@ metadata:
|
|
113
115
|
homepage_uri: https://github.com/kkdad/piwigo-api
|
114
116
|
source_code_uri: https://github.com/kkdad/piwigo-api
|
115
117
|
changelog_uri: https://github.com/kkdad/piwigo-api/CHANGELOG.md
|
118
|
+
documentation_uri: https://rubydoc.info/github/KKDad/piwigo-api/master
|
116
119
|
post_install_message:
|
117
120
|
rdoc_options: []
|
118
121
|
require_paths:
|