Skip to content
Snippets Groups Projects
Commit c9d6beb8 authored by Mateus Rambo Strey's avatar Mateus Rambo Strey
Browse files

fix thumbnail generation

parent a634598e
No related branches found
No related tags found
No related merge requests found
......@@ -4,15 +4,20 @@ require 'screencap'
class ThumbnailGenerateWorker
include Sidekiq::Worker
def perform(attachment_id, media_path = nil)
def perform(attachment_id, media_path = nil, force = false)
attachment = ::LearningObject::Attachment.find(attachment_id)
return false if attachment.nil?
media = media_path.nil? ? bitstream_download(attachment.id_dspace) : create_media(media_path)
thumbnail = thumbnail_service.create_thumbnail(media) unless media.blank?
attachment.update(thumbnail: thumbnail) unless thumbnail.blank?
return false if attachment.nil? || (!attachment.thumbnail.blank? && !force)
# object from dspace
if media_path.nil?
media = bitstream_download(attachment.id_dspace)
create_thumbnail(media, attachment)
File.unlink(media) if File.exist?(media.path)
# new object
else
create_media(media_path, attachment)
create_thumbnail(media)
end
end
private
......@@ -22,6 +27,14 @@ class ThumbnailGenerateWorker
File.open path
end
def create_thumbnail(media, attachment)
thumbnail = thumbnail_service.create_thumbnail(media)
return false if thumbnail.blank?
attachment.update(thumbnail: thumbnail)
File.unlink(thumbnail) if File.exist?(thumbnail.path)
end
def bitstream_download(id)
client = DspaceService.create_client
client.bitstreams.retrieve(id: id).open
......
require 'rainbow'
namespace :thumbnail do
desc "Portal MEC thumnail task"
desc 'Create thumbnail to every learning object without one'
task :create_missing, [:log] => [:environment] do |t, args|
desc "Create thumbnail to all learning objects"
include Log::Logging
args.with_defaults(:log => STDOUT)
......@@ -12,10 +10,10 @@ namespace :thumbnail do
Log::Logging.logger = Log::DatabaseLogger.new(args.log)
logger.level = Log::DatabaseLogger::CREATE
logger.info " --> Creating thumbnails"
logger.info ' --> Creating thumbnails'
LearningObject.missing_thumbnail.find_each do |object|
ThumbnailGenerateWorker.perform_async(object.attachments.first.id) unless object.attachments.blank?
object.attachments.where(bundle_name: 'ORIGINAL').find_each { |a| ThumbnailGenerateWorker.perform_async(a.id) } unless object.attachments.blank?
end
logger.close
......
......@@ -15,7 +15,11 @@ module Thumbnail
##
# Checks if the strategy can generate a thumbnail of that +media+
def can_generate?(media)
raise NotImplementedError
if File == media.class
mime = MimeMagic.by_magic(media)
return mime.type.include? yield unless mime.blank?
end
false
end
end
......
......@@ -7,10 +7,9 @@ module Thumbnail
end
def can_generate?(media)
return MimeMagic.by_magic(media).type.include? "image" if File == media.class
false
super { 'image' }
end
end
end
end
\ No newline at end of file
end
......@@ -11,8 +11,7 @@ module Thumbnail
end
def can_generate?(media)
return MimeMagic.by_magic(media).type.include? "pdf" if File == media.class
false
super { 'pdf' }
end
private
......@@ -24,4 +23,4 @@ module Thumbnail
end
end
end
\ No newline at end of file
end
......@@ -17,4 +17,4 @@ module Thumbnail
end
end
end
\ No newline at end of file
end
......@@ -21,8 +21,7 @@ module Thumbnail
end
def can_generate?(media)
return MimeMagic.by_magic(media).type.include? "video" if File == media.class
false
super { 'video' }
end
private
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment