#!/usr/local/bin/python
# encoding: utf-8
"""
Documentation for picaxe can be found here: http://picaxe.readthedocs.org/en/stable
Usage:
picaxe init
picaxe auth [-s <pathToSettingsFile>]
picaxe md <urlOrPhotoid> [<width>] [-s <pathToSettingsFile>]
picaxe albums [-s <pathToSettingsFile>]
picaxe [-giop] upload <imagePath> [--title=<title> --tags=<tags> --desc=<desc> --album=<album>]
picaxe [-op] grab [--title=<title> --tags=<tags> --desc=<desc> --album=<album> --delay=<sec>]
Options:
init setup the polygot settings file for the first time
auth authenticate picaxe against your flickr account
md generate the MD reference link for the image in the given flickr URL
albums list all the albums in the flickr account
upload upload a local image to flickr
<pathToSettingsFile> path to the picaxe settings file
<urlOrPhotoid> the flickr URL or photoid
<width> pixel width resolution of the linked image. Default *original*. [75|100|150|240|320|500|640|800|1024|1600|2048]
<imagePath> path to the local image to upload to flickr
--title=<title> the image title
--tags=<tags> quoted, comma-sepatated tags
--desc=<desc> image description
--delay=<sec> the delay time before screen-grab selection tool appears
-p, --public make the image public (private by default)
-o, --open open the image in the flickr web-app once uploaded
-i, --image "photo" is an image
-g, --screenGrab "photo" is a screengrab
-h, --help show this help message
-v, --version show version
-s, --settings the settings file
"""
################# GLOBAL IMPORTS ####################
import sys
import os
os.environ['TERM'] = 'vt100'
import readline
import glob
import pickle
import time
from docopt import docopt
from fundamentals import tools, times
# from ..__init__ import *
[docs]def main(arguments=None):
"""
*The main function used when ``cl_utils.py`` is run as a single script from the cl, or when installed as a cl command*
"""
# setup the command-line util settings
su = tools(
arguments=arguments,
docString=__doc__,
logLevel="DEBUG",
options_first=False,
projectName="picaxe"
)
arguments, settings, log, dbConn = su.setup()
startTime = times.get_now_sql_datetime()
# unpack remaining cl arguments using `exec` to setup the variable names
# automatically
for arg, val in arguments.iteritems():
if arg[0] == "-":
varname = arg.replace("-", "") + "Flag"
else:
varname = arg.replace("<", "").replace(">", "")
if isinstance(val, str) or isinstance(val, unicode):
exec(varname + " = '%s'" % (val,))
else:
exec(varname + " = %s" % (val,))
if arg == "--dbConn":
dbConn = val
log.debug('%s = %s' % (varname, val,))
if init:
from os.path import expanduser
home = expanduser("~")
filepath = home + "/.config/picaxe/picaxe.yaml"
try:
cmd = """open %(filepath)s""" % locals()
p = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=True)
except:
pass
try:
cmd = """start %(filepath)s""" % locals()
p = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=True)
except:
pass
if auth:
from picaxe import picaxe
client = picaxe(
log=log,
settings=settings,
pathToSettingsFile=pathToSettingsFile
)
client.authenticate()
if md:
from picaxe import picaxe
Flickr = picaxe(
log=log,
settings=settings
)
if not width:
width = "original"
mdLink = Flickr.md(
url=urlOrPhotoid,
# [75, 100, 150, 240, 320, 500, 640, 800, 1024, 1600, 2048]
width=width
)
print mdLink
if albums:
from picaxe import picaxe
flickr = picaxe(
log=log,
settings=settings
)
albumList = flickr.list_album_titles()
for a in albumList:
print a
if upload:
from picaxe import picaxe
flickr = picaxe(
log=log,
settings=settings
)
imageType = "photo"
if screenGrabFlag:
imageType = "screengrab"
elif imageFlag:
imageType = "image"
album = "inbox"
if albumFlag:
album = albumFlag
photoid = flickr.upload(
imagePath=imagePath,
title=titleFlag,
private=publicFlag,
tags=tagsFlag,
description=descFlag,
imageType=imageType, # image|screengrab|photo
album=albumFlag,
openInBrowser=openFlag
)
print photoid
if grab:
# for k, v in locals().iteritems():
# print k, v
# return
try:
os.remove("/tmp/screengrab.png")
except:
pass
if delayFlag:
time.sleep(int(delayFlag))
from subprocess import Popen, PIPE, STDOUT
cmd = """screencapture -i /tmp/screengrab.png""" % locals()
p = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=True)
stdout, stderr = p.communicate()
log.debug('output: %(stdout)s' % locals())
exists = os.path.exists("/tmp/screengrab.png")
if exists:
from picaxe import picaxe
flickr = picaxe(
log=log,
settings=settings
)
if not albumFlag:
albumFlag = "screengrabs"
photoid = flickr.upload(
imagePath="/tmp/screengrab.png",
title=titleFlag,
private=publicFlag,
tags=tagsFlag,
description=descFlag,
imageType="screengrab", # image|screengrab|photo
album=albumFlag,
openInBrowser=openFlag
)
mdLink = flickr.md(
url=photoid,
# [75, 100, 150, 240, 320, 500, 640, 800, 1024, 1600, 2048]
width="original"
)
print mdLink
# CALL FUNCTIONS/OBJECTS
if "dbConn" in locals() and dbConn:
dbConn.commit()
dbConn.close()
## FINISH LOGGING ##
endTime = times.get_now_sql_datetime()
runningTime = times.calculate_time_difference(startTime, endTime)
log.info('-- FINISHED ATTEMPT TO RUN THE cl_utils.py AT %s (RUNTIME: %s) --' %
(endTime, runningTime, ))
return
if __name__ == '__main__':
main()