class Piwigo::Images
Public Class Methods
Returns elements for the corresponding categories. order comma separated fields for sorting
@param [Session] session @param [Number] album_id - Can be empty if recursive is true. @param [Boolean] recursive - Include images from child albums @param [Number] per_page - Number of items to include per page @param [Number] page - Page to retrieve @param [String] order - One or more of id, file, name, hit, rating_score, date_creation, date_available or random @param [Logger] logger logger to output debug messages to (Optional)
@return [Hash] <description>
# File lib/piwigo/images.rb, line 96 def self.getImages(session, album_id: nil, recursive: nil, per_page: 100, page: 0, order: nil, logger: nil) raise 'Invalid session' if session.uri.nil? logger ||= Logger.new(STDOUT) begin http = Net::HTTP.new(session.uri.host, session.uri.port) request = Net::HTTP::Post.new(session.uri.request_uri) form = { method: 'pwg.categories.getImages' } form[:cat_id] = album_id unless album_id.nil? form[:recursive] = recursive unless recursive.nil? form[:per_page] = per_page unless per_page.nil? form[:order] = order unless order.nil? form[:page] = page unless page.nil? request.set_form_data(form) request['Cookie'] = [session.id] # Send the request response = http.request(request) if response.code == '200' data = JSON.parse(response.body) paging = Paging.new hash: data['result']['paging'] images = data['result']['images'].map { |hash| Image.new(hash: hash) } logger.info "Image List succeeded: #{images.size} images retrieved." { paging: paging, images: images } end rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e logger.error "Image List failed: #{e.message}" nil end end
Checks existence of images
@param [Session] session @param [String] file to check @param [Logger] logger
@return [Number] Piwigo
image_id if matched, nil if not present
# File lib/piwigo/images.rb, line 148 def self.lookup(session, file, logger: nil) raise 'Invalid session' if session.uri.nil? logger ||= Logger.new(STDOUT) image_content = File.binread(file) file_sum = Digest::MD5.hexdigest(image_content) begin http = Net::HTTP.new(session.uri.host, session.uri.port) request = Net::HTTP::Post.new(session.uri.request_uri) form = { method: 'pwg.images.exist', md5sum_list: file_sum, filename_list: file } request.set_form_data(form) request['Cookie'] = [session.id] # Send the request response = http.request(request) if response.code == '200' data = JSON.parse(response.body) logger.info "Image lookup succeeded: #{data['result']}" data['result'][file_sum] end rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e logger.error "Image lookup failed: #{e.message}" nil end end
Add a photo to Piwigo
@param [<Type>] session @param [<Type>] filename of the file to upload @param [<Type>] name of the image
@return [Boolean] True if successful
# File lib/piwigo/images.rb, line 137 def self.upload(session, file, name) ImageUploader.new(session, file, name).upload end