Topic: Iggykoopa! can you please!
I found this little script for uploading images to omploader and it returns the url.
The only thing is, that it is a command line tool. I dont mind using the command line but my girl friend thinks having to use it is equal to death it's self. I was wondering how hard it would be to make some kinda front end for it? Just some GUI to select the image and return the url would be fine. Im far from a coder and have no idea where to start on such a thing, but i thought i might ask you to see what you thought of the idea and how hard it would be.
I'm pretty sure the script calls on curl and ruby, if that helps anything.
I would be thankful if you could look at this for me.
#!/usr/bin/env ruby
#
# Copyright 2007-2009 David Shakaryan <omp@gentoo.org>
# Copyright 2007-2009 Brenden Matthews <brenden@rty.ca>
#
# Distributed under the terms of the GNU General Public License v3
#
require 'tempfile'
argv = Array.new
quiet = false
url_only = 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|--quiet/
quiet = true
elsif ARGV[i] =~ /-u|--url/
url_only = 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 ' -u, --url Only output URL when finished'
$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 = 5
Url = '[url]http://omploader.org/[/url]'
Max_size = 2**30
used_stdin = false
first = true
argv.each do |arg|
if stdin.nil? and !used_stdin and !File.file?(arg)
$stderr.puts "Invalid argument '#{arg}': file does not exist (or is not a regular file)."
errors += 1
next
elsif File.size(arg) > Max_size
$stderr.puts "Error omploading '#{arg}': file exceeds " + (Max_size).to_s + " bytes (size was " + File.size(arg).to_s + ")."
errors += 1
next
end
if !first
# try not to hammer the server
puts 'Sleeping for ' + wait.to_s + 's' if !quiet and !url_only
sleep(wait)
else
first = false
end
tmp = Tempfile.new(filename)
if !stdin.nil? and !used_stdin
# upload from stdin
puts "Progress for '#{arg}'" if !quiet and !url_only
if quiet or url_only
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 and !url_only
# escape quotes
tmp_path = arg.gsub('"', '\"')
if quiet or url_only
%x{curl -s -F file1=@"#{tmp_path}" #{Url}upload -o '#{tmp.path}'}
else
%x{curl -# -F file1=@"#{tmp_path}" #{Url}upload -o '#{tmp.path}'}
end
end
if !File.size?(tmp.path)
$stderr.puts "Error omploading '#{arg}'"
errors += 1
next
end
output = IO.read(tmp.path)
# parse for an ID
if output =~ /View file: <a href="v([A-Za-z0-9+\/]+)">/
id = $1
puts "Omploaded '#{arg}' to #{Url}v#{id}" if !quiet
wait = 5
elsif output =~ /Slow down there, cowboy\./
wait += 60
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
end
if !quiet and !url_only
if errors < 1
puts "Success."
else
puts "Finished with #{errors} errors."
end
end