SFTP-based image dropper for Mac OS X with archiving functionality

Wazakindjes 944162321b Print missing config field names l0l 1 year ago
icinz ed7a394aca Added WorkingIcon (yell0), implemented EXIF stripping and rotation of muh pics, cleaned up plist and added envvar bs (PYTHONPATH etc) =]] 3 years ago
.gitignore 9cc519cd78 Cleaned up gitignore a bit =] 4 years ago
LICENSE 2d64d0e9cc Repo creation lol 4 years ago
README.md 993b31bae3 Added Standard(Out|Error)Path directives to ex0mple plist, also added a nout bout em in el readme =] 1 year ago
com.jemoeder.lief.hurr.droppert.plist 993b31bae3 Added Standard(Out|Error)Path directives to ex0mple plist, also added a nout bout em in el readme =] 1 year ago
hurr.conf.example af9fadd06b Added exifgps conf var to example c0nf and updated exifrotate description y0 3 years ago
hurr.py 944162321b Print missing config field names l0l 1 year ago
load ef105be38f Added load/reload/unload skrips 4 years ago
reload ef105be38f Added load/reload/unload skrips 4 years ago
unload ef105be38f Added load/reload/unload skrips 4 years ago


The fuck is this

This shit is a premium self-hosted image uploader thingy based on SFTP, written for Mac OS X. It may or may not work with other OSes (cuz I've never tested it l m a o), provided Growl is available. I don't like the OS X Notification Center bullshit, so Growl all the way yo. It relies on the built-in OS X Cmd+Shift+3/4 key combo for scrots as that dumps them on your Desktop right away. You could probably use different software for scr0tting and run this skrip to upload that shit to your own server. Your own server must be *NIX as it runs a few specific commands that e.g. Windongs won't have.

It connects to yo server over SSH and dumps the scrot, then copies a URL to ur clipb0ardins. =] You can monitor up to 3 directories (fully configurable), which you could use for the default scrot location (normally ~/Desktop), some remote/networked dir and Dropbox/Camera Uploads or some shit. It werks by checking file differences in those dirs and uploads everything that matches the regex in the config.

Furthermore, it supports archiving your pics so the main directory doesn't get cluttered af as well as strippin' of EXIF tags (and rotating pics w/ EXIF orientation tags y0). ;]


Be sure to install the following libs (either pip install or easy_install should werks):

  • gntp -- Growl Notification Transport Protocol shit
  • paramiko -- SSH/SFTP bs
  • piexif -- Required for modifying EXIF sections
  • PIL/Pillow -- Python Image Library to rotate images ;]
  • pyperclip -- Clipboard hecks lol

There are other libs but they should be built-in. You'll receive an error message about a missing library anyways. =]

Also, it requires the following:

  • A *NIX server with a web service (like Apache, nginx, etc)
  • A domain to go with it, 2 subdomains are best obv (one for "live" pics and another for archived ones)
  • Key-based SSH authentication cuz fuck passwerds


Copy hurr.conf.example to hurr.conf and fire up een editor. All the options are explained in there so git to reading fam.

After that change the contents of the com.jemoeder.lief.hurr.droppert.plist file, namely the line that says <string>/Users/[user]/[dir]/hurr.py</string>. Then just copy it to ~/Library/LaunchAgents and run ./load. This makes sure it gets restarted after you reboot or log out and in again. Also it has a keepalive flag so if it died it'll be restarted. ;3

Depending on your setup, you may also need the EnvironmentVariables key in the plist file (in my case launchctl wouldn't import PIL lmao). Just remove the <!-- --> shit and ur gucci mane. Don't forget to ./reload if you already l0aded em before doing dis.

Hurrrr pls halp it's br0ke

Simply ./unload that shit and do ./hurr.py in a terminal, Pythinz will most likely shit out some errors that will give you an idea of wats goin on. =]

Alternatively, uncomment the StandardOutPath/StandardErrorPath directives in the plist file and reload that shit. Then check the lawg files obv. ;]

Common issues

After upgrading em OS X (I'll keep saying that instead of macOS, fucking deal w/ it) your GNTP might have been fucked over. Verify your Python is still alive w/ python --version and pip --version, then make sure pip is up to date and reinstall gntp:

sudo pip install --upgrade pip
pip install --upgrade --ignore-installed --user gntp

Shud b gucci after that. ;] If shit's still rip, your Growl might have vanished entirely so just reinstall the application itself.