A Script to take Screenshots and upload them.

Requirements:

  • scrot
  • zenity
  • ruby
  • curl
  • omploader script – listed below

Yeah looking at that list, it doesn’t seem as lightweight as a CLI script should, but I think I had everything installed anyway when I put it together.

Script in action:

Call the script...
Call the script...

Choose whether to \'ompload\' or not...
Choose whether to 'ompload' or not...

Screen shot is taken and is uploaded...
Screen shot is taken and is uploaded...

All done! Link is shown in console...
All done! Link is shown in console...

This is the script which takes the screenshot, asks whether to upload, and moves shots to ~/Pictures/Screens/

#!/bin/bash

zenity --question --title "Omploader" --text "Upload to Omploader?"
# automatically.
if [ "$?" = "0" ]; then
   echo 'uploading to omploader'
   scrot '%d-%m-%Y-%T_$wx$h.png' -e '~/Scripts/omploader.sh $f && mv $f ~/Pictures/Screens/' -c -d 5
else
   scrot '%d-%m-%Y-%T_$wx$h.png' -e 'mv $f ~/Pictures/Screens/' -c -d 5
fi

This is the script which actually does the uploading. It is from the website omploader. The script can be used to upload any file, but I mainly use it for uploading screenshots.

I have placed this script in ~/Scripts/omploader.sh (yeah I know it’s not a shell script, not sure why I named it that)

#!/usr/bin/env ruby
#
# $Id: ompload 226 2007-10-31 03:07:43Z brenden $
#
# Copyright 2007 David Shakaryan
# Copyright 2007 Brenden Matthews
#
# Distributed under the terms of the GNU General Public License v3
#

require ‘tempfile’

argv = Array.new

quiet = false
help = false
skip = false
filename = ‘pasta’

$stdin.fcntl(4, File::NONBLOCK)
stdin = $stdin.read if !$stdin.eof
unless stdin.nil?
argv < < '' end ARGV.each_index do |i| if skip skip = false next end if ARGV[i] =~ /-q|--queit/ quiet = true elsif ARGV[i] =~ /-h|--help/ help = true elsif ARGV[i] =~ /-f|--filename/ filename = ARGV[i + 1] skip = true else argv << ARGV[i] end end nocurl = false curl = %x{curl --version 2> /dev/null}
if curl.empty?
nocurl = true
$stderr.puts ‘Error: curl missing or not in path. Cannot continue.’
$stderr.puts
end

if (ARGV.size < 1 and (stdin.nil? or stdin.empty?)) or help or nocurl $stderr.puts 'Usage: ompload [-h|--help] [options] [file(s)]' $stderr.puts ' -q, --quiet Only output errors and warnings' $stderr.puts ' -f, --filename Filename to use when posting data' $stderr.puts ' from stdin' $stderr.puts $stderr.puts ' You can supply a list of files or data via stdin (or both)' $stderr.puts $stderr.puts ' This script requires a copy of cURL in the path.' Process.exit end errors = 0 wait = 15 old_poop = Time.now - wait new_poop = Time.now Url = 'http://omploader.org/' used_stdin = false argv.each do |arg| if stdin.nil? and !used_stdin and !File.exists?(arg) $stderr.puts "Invalid argument '#{arg}': file does not exist" errors += 1 next end # no more than 1 every 15 seconds is common courtesy turd = new_poop - old_poop if turd < wait puts 'Sleeping for ' + (wait - turd).to_s if !quiet sleep(wait - turd) end old_poop = new_poop tmp = Tempfile.new(filename) if !stdin.nil? and !used_stdin # upload from stdin puts "Progress for '#{arg}'" if !quiet if quiet p = IO.popen("curl -s -F 'file1=@-;filename=\"#{filename}\"' #{Url}upload -o '#{tmp.path}'", "w+") else p = IO.popen("curl -# -F 'file1=@-;filename=\"#{filename}\"' #{Url}upload -o '#{tmp.path}'", "w+") end p.puts stdin p.close_write Process.wait used_stdin = true else # upload file puts "Progress for '#{arg}'" if !quiet if quiet %x{curl -s -F file1=@"#{arg}" #{Url}upload -o '#{tmp.path}'} else %x{curl -# -F file1=@"#{arg}" #{Url}upload -o '#{tmp.path}'} end end if !File.size?(tmp.path) $stderr.puts "Error omploading '#{arg}'" errors += 1 new_poop = Time.now next end output = IO.read(tmp.path) # parse for an ID if output =~ /View file: /
id = $1
puts “Omploaded ‘#{arg}’ to #{Url}v#{id}” if !quiet
elsif output =~ /Slow down there, cowboy\./
wait += 5
argv << arg $stderr.puts "Got throttled when trying to ompload '#{arg}'" $stderr.puts "Increasing wait and attempting to continue..." errors += 1 else $stderr.puts "Error omploading '#{arg}'" errors += 1 end new_poop = Time.now end if !quiet if errors < 1 puts "Success." else puts "Finished with #{errors} errors." end [/sourcecode]

A Script to take Screenshots and upload them.

3 thoughts on “A Script to take Screenshots and upload them.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s