Added Rake task to remove duplicate screenshots
This commit is contained in:
parent
ac3d52a66e
commit
2df1024b9b
1 changed files with 31 additions and 0 deletions
31
lib/tasks/remove_image_duplicates.rake
Normal file
31
lib/tasks/remove_image_duplicates.rake
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
namespace :debshots do
|
||||||
|
desc "Remove duplicate images"
|
||||||
|
|
||||||
|
task :remove_duplicate_images => :environment do
|
||||||
|
Rails.logger = Logger.new(STDOUT)
|
||||||
|
Rails.logger.level = Logger::INFO
|
||||||
|
#Rails.logger.level = Logger::DEBUG
|
||||||
|
|
||||||
|
Rails.logger.info "Removing packages with 'nil' screenshots"
|
||||||
|
|
||||||
|
Screenshot.where(image_fingerprint: nil).each do |ss|
|
||||||
|
Rails.logger.info "Destroying screenshots #{ss.id} of package #{ss.package.name} that has nil data"
|
||||||
|
ss.destroy
|
||||||
|
end
|
||||||
|
|
||||||
|
Rails.logger.info "Removing packages with duplicate screenshot checksums"
|
||||||
|
|
||||||
|
loop do
|
||||||
|
destroyed = 0
|
||||||
|
Screenshot.select(:package_id, :image_fingerprint).group(:package_id, :image_fingerprint).having("count(*) > 1").each do |ss|
|
||||||
|
# Look again for screenshots of this fingerprint.
|
||||||
|
# This extra step may seem stupid but the above query lead to package_id=NULL results sometimes.
|
||||||
|
del = Screenshot.find_by(image_fingerprint: ss.image_fingerprint)
|
||||||
|
Rails.logger.info "Destroying duplicate screenshots #{del.id} of package #{del.package.name}"
|
||||||
|
del.destroy
|
||||||
|
destroyed += 1
|
||||||
|
end
|
||||||
|
break if destroyed == 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
Loading…
Add table
Add a link
Reference in a new issue