Guest User

Untitled

a guest
Mar 2nd, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.15 KB | None | 0 0
  1. #!/usr/bin/env ruby19
  2. # {{{ Unimportant
  3. module Scrshot
  4. # }}}
  5.  
  6. #-------------------------------Configuration----------------------------------#
  7.  
  8. # Where to save the screenshot
  9. Screenshot_Dir = File.join(ENV['HOME'], 'screenshots')
  10.  
  11. # Default screenshot name
  12. Screenshot_Name = ARGV.first || 'currentdesk'
  13.  
  14. # Default thumbnail extension (currentdesk becomes currentdeskt)
  15. Thumbnail_Extension = 't'
  16.  
  17. # Thumbnail size
  18. Thumbnail_Size = '10%'
  19.  
  20. # FTP info
  21. Hostname = ''
  22. Username = ''
  23. Password = ''
  24. Remote_Dir = ''
  25.  
  26. #------------------------------------------------------------------------------#
  27.  
  28. # {{{1 Unimportant
  29. class << self
  30. def get_filenames
  31. full_name = File.join(Screenshot_Dir, Screenshot_Name)
  32. thumb_name = full_name + Thumbnail_Extension
  33.  
  34. return ["#{full_name}.png", "#{thumb_name}.png"]
  35. end
  36. end
  37.  
  38. class Screeny
  39. def initialize
  40. take_screenshot(Screenshot_Name)
  41. create_thumbnail(Screenshot_Name, Thumbnail_Extension, Thumbnail_Size)
  42. upload_screenshot
  43. end
  44.  
  45. private
  46.  
  47. def take_screenshot(name)
  48. if File.directory?(Screenshot_Dir)
  49. full_name = File.join(Screenshot_Dir, name)
  50.  
  51. system "import -window root #{full_name}.png"
  52. else
  53. raise "'#{Screenshot_Dir}' does not exist."
  54. end
  55. end
  56.  
  57. def create_thumbnail(name, ext, pct)
  58. unless `which mogrify`.strip == ''
  59. full_name = File.join(Screenshot_Dir, name)
  60. thumb_name = full_name + ext
  61.  
  62. system "cp #{full_name}.png #{thumb_name}.png"
  63. system "mogrify -resize #{pct} #{thumb_name}.png"
  64. else
  65. raise "'mogrify' command not found. is 'imagemagick' installed?"
  66. end
  67. end
  68.  
  69. def upload_screenshot
  70. require 'net/ftp'
  71.  
  72. ftp = Net::FTP.new(Hostname)
  73. ftp.login(user = Username, passwd = Password)
  74. ftp.chdir(Remote_Dir) unless Remote_Dir == ''
  75.  
  76. Scrshot::get_filenames.each do |name|
  77. ftp.put(name, File.basename(name))
  78. end
  79.  
  80. ftp.close
  81. end
  82. end
  83. end
  84.  
  85. if __FILE__ == $0
  86. if %w[-h --help].include?(ARGV.first)
  87. puts "Usage: #{File.basename($0)} [name]"
  88. puts "[name] is optional"
  89. else
  90. Scrshot::Screeny.new
  91. end
  92. end
Add Comment
Please, Sign In to add comment