summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xPb/Breaker/__init__.py~205
-rw-r--r--photoblaster/db/__init__.py1
-rw-r--r--photoblaster/db/db.py5
-rw-r--r--photoblaster/db/iasdfus.py2
-rw-r--r--photoblaster/db/pb.py6
-rw-r--r--photoblaster/db/s3.py10
-rwxr-xr-xphotoblaster/modules/breaker.py100
-rw-r--r--photoblaster/s3/cli.py20
-rw-r--r--remote_host_test.py27
9 files changed, 89 insertions, 287 deletions
diff --git a/Pb/Breaker/__init__.py~ b/Pb/Breaker/__init__.py~
deleted file mode 100755
index c1064e2..0000000
--- a/Pb/Breaker/__init__.py~
+++ /dev/null
@@ -1,205 +0,0 @@
-#!/usr/bin/python2.7
-import os
-import sys
-import random
-import re
-import urllib
-import inspect
-from Config import *
-from Pb import Pb
-from Pb.Params import Params
-
-DEFAULT_FINALFORMAT = "png";
-SUBTLE_BREAK_MARK = 'pron'
-EXTREME_BREAK_MARK = 'sugar'
-
-HEADER_OFFSET = 2000
-
-class Breaker(Pb):
- def __init__(self, url=None, breaktype=None, finalformat=DEFAULT_FINALFORMAT,
- breakmode=None, breakangle=None, username=None, expanded=None, firsttime=None):
- super(Breaker,self).__init__();
-
- self.params.breaktype = self._get_breaktype(breaktype);
- self.params.url = url
-
- _frame = inspect.currentframe();
- _args_vals = inspect.getargvalues(_frame);
- for arg in _args_vals.args:
- if arg == "self":
- continue
- sys.stderr.write(str(arg) + "\n")
- try:
- if arg not in ['breaktype', 'url']:
- sys.stderr.write("Yoooo");
- sys.stderr.write(arg)
- strarg = str(_args_vals.locals.get(arg))
- django self.bool_correct(strarg)
- self.params.__setattr__("dingo", django)
-# self.params.__setattr__(arg, self.bool_correct(_args_vals.locals.get(arg)))
- except Exception as e:
- sys.stderr.write("\n"+str(e)+"\n")
- sys.exit(1);
- self.params = Params(**self.params);
-
- self.tag = "imBreak"
- self.commands = [];
- self._now = self.now()
- self.files_created = []
-
- self.basename, self._first_format = self._get_filename_and_type_from_url();
- self._downloaded_file = self.tempname_create(basename=self.basename, fmt=self._first_format)
-
- try:
- self.download(self.params.url, self._downloaded_file)
- self.files_created.append(self._downloaded_file)
- except Exception as e:
- self.err_warn(str(e))
-
- self._gif_frames = self.gif_frames(self._downloaded_file)
- self._gif_frames = self._gif_frames if len(self._gif_frames) > 1 else False
- self.width, self.height = self.dimensions(self._downloaded_file) # same here
-
- if not self.params.finalformat and self._gif_frames:
- self.params.finalformat = 'gif'
- if self.params.breaktype == 'miff':
- self.params.finalformat = 'jpg'
- self.params.breakmode = 'subtle'
- #final filepath is stored in self.filepath
- self.filename = "{}.{}".format(self.basename, self.params.finalformat)
- self.filepath = os.path.join(self._working_dir, self.filename)
- self._conversion_file = self.tempname_create(basename=self.basename, fmt=self.params.breaktype);
-
- def _call_cmd(self, cmd):
- super(Breaker,self)._call_cmd(cmd, error)
- self.commands.append(" ".join(cmd));
-
- def _get_breaktype(self, key):
- #{{{ conversion table
- breaktypeTranslate = {
- 'CLASSIC':'jpg',
- 'REDUX':'pcds',
- 'BLURRY_BREAK':'viff',
- 'BLURRY_BREAK_2':'mat',
- 'SWIPE':'miff',
- 'RGB_WASH':'psd',
- 'RGB_WASH_2':'psb',
- 'NOISY_BREAK':'palm',
- 'NOISY_BREAK_2':'fig',
- 'BROKEN_VIGNETTE':'pbm',
- 'FAX_MACHINE':'cals',
- 'STRIPES':'exr',
- 'PHOTOCOPY':'art',
- }
- #}}}
- return breaktypeTranslate[key]
-
-#{{{#########rotatefunctions#######################################
- def _rotate(self):
- cmd = [BIN_CONVERT,self._downloaded_file,"-rotate",self.params.breakangle,"+repage",self._downloaded_file]
- self._call_cmd(cmd)
-
- def _rotate_back(self):
- angle = str(360-int(self.params.breakangle))
- cmd = [BIN_CONVERT,self.filepath,"-rotate",angle,"+repage",self.filepath]
- self._call_cmd(cmd)
- if not self.params.expanded:
- cmd = [BIN_CONVERT,self.filepath,"-gravity","Center","-crop","{}x{}+0+0".format(
- self.width, self.height),"+repage",self.filepath]
- self._call_cmd(cmd)
-#}}}
- def _subtle_break(self):
- #assume the header is no longer than HEADER_OFFSET bytes
- breakpoint = random.randint(HEADER_OFFSET, len(self.file_data))
- newfile = self.file_data[0:breakpoint] \
- + SUBTLE_BREAK_MARK \
- + self.file_data[breakpoint:]
- self.file_data = newfile[0:len(self.file_data)]
-
- def _extreme_break(self):
- increment = len(self.file_data)/10;
- i = 0
- newfile = "";
- for b in self.file_data:
- if i > HEADER_OFFSET and not (i % increment):
- b += EXTREME_BREAK_MARK
- newfile += b
- i += 1
- self.file_data = newfile[0:len(self.file_data)]
-
- def _choose_frame(self):
- frame = random.choice(self._gif_frames)
- self._call_cmd([BIN_CONVERT, frame, self._downloaded_file])
-
- def _enforce_jpg(self):
- if self.params.breaktype in [ "exr", "bmp", "miff" ] and not re.match(r'jpe?g$', self._first_format, re.IGNORECASE):
- jpg_file = self.tempname_create(basename=self.basename, fmt="jpg")
- self._call_cmd([BIN_CONVERT,self._downloaded_file,jpg_file])
- self._call_cmd(["rm",self._downloaded_file])
- self._downloaded_file = jpg_file
-
- def _first_conversion(self):
- if self._first_format == self.params.breaktype:
- self._downloaded_file = self._conversion_file
- return
- self._call_cmd([BIN_CONVERT, self._downloaded_file, self._conversion_file])
- self.files_created.append(self._conversion_file)
-
- def _prepare_filedata(self):
- if self._gif_frames:
- self._choose_frame()
- if self.params.breakangle:
- self._rotate()
- self._enforce_jpg();
- self._first_conversion();
- self.file_data = self._file_read(self._conversion_file)
- if not self.file_data:
- self.err_warn("Unable to get file data");
-
- def _add_false_data(self, breakmode):
- if breakmode == "subtle":
- self._subtle_break()
- elif breakmode == "extreme":
- self._extreme_break()
- f = open(self._conversion_file, 'w')
- f.write(self.file_data)
- f.close();
-
- def _final_conversion(self):
- self._call_cmd( [BIN_CONVERT, self._conversion_file, self.filepath])
- def psd_psbfilepath(num):
- return os.path.join(self._working_dir, "{}-{}.{}".format(self.basename, num, self.params.finalformat))
- if self.params.breaktype == 'psd':
- self._call_cmd(['mv', psd_psbfilepath(1), self.filepath])
- self.files_created.append(psd_psbfilepath(0))
- if self.params.breaktype == 'psb':
- self._call_cmd(['mv', psd_psbfilepath(0), self.filepath])
- self.files_created.append(psd_psbfilepath(1))
- if self.params.breakangle:
- self._rotate_back()
-
- def _cleanup(self):
- cmd = ["rm"]+self.files_created
- self._call_cmd(cmd)
-
- def create(self, breakmode=""):
- if not breakmode: breakmode = self.params.breakmode
- self._prepare_filedata();
- self._add_false_data(breakmode);
- self._final_conversion()
- self._cleanup()
-
- @classmethod
- def test(cls):
- TEST_PARAMS = {
- "url" : "http://i.asdf.us/im/27/1424816234661dumpfmpfifferkinggr_1424816412_pfifferking.gif" ,
- "breaktype" : "RGB_WASH",
- "finalformat" : "png",
- "breakmode" : "extreme",
- "breakangle" : "10",
- "username" : "donkey",
- "expanded" : "false"
- }
- b = cls(**TEST_PARAMS)
- b.create();
- print b.filepath
diff --git a/photoblaster/db/__init__.py b/photoblaster/db/__init__.py
index e69de29..9f3789d 100644
--- a/photoblaster/db/__init__.py
+++ b/photoblaster/db/__init__.py
@@ -0,0 +1 @@
+from photoblaster.db.db import Db
diff --git a/photoblaster/db/db.py b/photoblaster/db/db.py
index b264687..eb97d5e 100644
--- a/photoblaster/db/db.py
+++ b/photoblaster/db/db.py
@@ -2,10 +2,13 @@
from photoblaster.config import DB_HOST, DB_USER, DB_PASSWORD, DB_NAME
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
+import sys
+
class Db(object):
"""base class for all db methods"""
def __init__(self):
+ """initializes the connection to mysql"""
engine = create_engine('mysql://{}:{}@{}/{}'.format(
DB_USER,
DB_PASSWORD,
@@ -13,3 +16,5 @@ class Db(object):
DB_NAME
))
self.Session = sessionmaker(bind=engine)
+ def log_error(self, msg):
+ sys.stderr.write("DB error message: %s\n" % msg)
diff --git a/photoblaster/db/iasdfus.py b/photoblaster/db/iasdfus.py
index 55faf11..63def26 100644
--- a/photoblaster/db/iasdfus.py
+++ b/photoblaster/db/iasdfus.py
@@ -1,10 +1,10 @@
# coding: utf-8
+"""table class for iasdfus"""
from sqlalchemy import BigInteger, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
-
class Iasdfus(Base):
__tablename__ = 'iasdfus'
diff --git a/photoblaster/db/pb.py b/photoblaster/db/pb.py
index e6759aa..1263b56 100644
--- a/photoblaster/db/pb.py
+++ b/photoblaster/db/pb.py
@@ -2,12 +2,15 @@
import time
import sys
import simplejson as json
+from photoblaster.db import Db
+from photoblaster.db.imcmd import ImCmd
from sqlalchemy import sql
_NULL = sql.null()
+
class Pb(Db):
- """all photoblaster db methods go here"""
+ """all photoblaster db methods go here"""
def __init__(self):
super(Pb, self).__init__()
@@ -38,4 +41,3 @@ class Pb(Db):
except Exception as e:
sys.stderr.write("Unable to commit database entry\n")
sys.stderr.write(str(e))
-
diff --git a/photoblaster/db/s3.py b/photoblaster/db/s3.py
index 7e13853..8cfae35 100644
--- a/photoblaster/db/s3.py
+++ b/photoblaster/db/s3.py
@@ -1,6 +1,9 @@
# coding: utf-8
+from photoblaster.db.iasdfus import Iasdfus
+
+
class S3(Db):
- """wrapper for all db methods"""
+ """queries the db for s3 related stuff"""
def __init__(self):
super(S3, self).__init__()
@@ -31,6 +34,5 @@ class S3(Db):
session.commit()
session.close()
except Exception as e:
- sys.stderr.write("Unable to commit database entry\n")
- sys.stderr.write(str(e))
-
+ self.log_error("Unable to commit database entry")
+ self.log_error(str(e))
diff --git a/photoblaster/modules/breaker.py b/photoblaster/modules/breaker.py
index 6a2a63e..6a2e2f3 100755
--- a/photoblaster/modules/breaker.py
+++ b/photoblaster/modules/breaker.py
@@ -13,16 +13,18 @@ _extreme_break_mark = 'sugar'
_header_offset = 2000
_default_breakmode = "subtle"
+
class PbBreaker(Pb):
example_params = {
- "url" : "http://i.asdf.us/im/de/HolyMountain2_1322275112_seamonkey.gif",
- "breaktype" : "RGB_WASH",
- "finalformat" : "png",
- "breakmode" : "extreme",
- "breakangle" : "10",
- "username" : "donkey",
- "expanded" : "false"
+ "url": "http://i.asdf.us/im/de/HolyMountain2_1322275112_seamonkey.gif",
+ "breaktype": "RGB_WASH",
+ "finalformat": "png",
+ "breakmode": "extreme",
+ "breakangle": "10",
+ "username": "donkey",
+ "expanded": "false"
}
+
def __init__(self, **kwargs):
super(PbBreaker, self).__init__(**kwargs)
_definitions = {
@@ -30,19 +32,23 @@ class PbBreaker(Pb):
'breaktype': {'type': 'string'},
'breakmode': {
'type': 'enum',
- 'enum_values' : ['subtle', 'extreme', 'gradual'],
- 'default' : _default_breakmode
+ 'enum_values': ['subtle', 'extreme', 'gradual'],
+ 'default': _default_breakmode
},
'breakangle': {'type': 'float'},
'expanded': {'type': 'bool'},
'url': {'type': 'img_url'},
- 'finalformat': {'type': 'enum', 'enum_values' : ['png', 'gif', 'jpg']}
+ 'finalformat': {'type': 'enum',
+ 'enum_values': ['png', 'gif', 'jpg']}
}
- self.params.definitions_import(_definitions, kwargs, classname=self.__class__.__name__)
+ self.params.definitions_import(_definitions,
+ kwargs,
+ classname=self.__class__.__name__)
self._files_created.append(self.params.url.path)
- self.params.breaktype.set_val(self._get_breaktype(str(self.params.breaktype)))
+ self.params.breaktype.set_val(self._get_breaktype(
+ str(self.params.breaktype)))
- #psd returns an animation
+ # psd returns an animation
if not self.params.finalformat and self.params.url.mimetype == "gif":
self.params.finalformat.set_val("gif")
elif self.params.breaktype == 'miff':
@@ -64,26 +70,26 @@ class PbBreaker(Pb):
self._db_url_param = str(self.params.url['url'])
def _get_breaktype(self, key):
- #{{{ conversion table
+ # {{{ conversion table
breaktypeTranslate = {
- 'CLASSIC':'jpg',
- 'REDUX':'pcds',
- 'BLURRY_BREAK':'viff',
- 'BLURRY_BREAK_2':'mat',
- 'SWIPE':'miff',
- 'RGB_WASH':'psd',
- 'RGB_WASH_2':'psb',
- 'NOISY_BREAK':'palm',
- 'NOISY_BREAK_2':'fig',
- 'BROKEN_VIGNETTE':'pbm',
- 'FAX_MACHINE':'cals',
- 'STRIPES':'exr',
- 'PHOTOCOPY':'art',
+ 'CLASSIC': 'jpg',
+ 'REDUX': 'pcds',
+ 'BLURRY_BREAK': 'viff',
+ 'BLURRY_BREAK_2': 'mat',
+ 'SWIPE': 'miff',
+ 'RGB_WASH': 'psd',
+ 'RGB_WASH_2': 'psb',
+ 'NOISY_BREAK': 'palm',
+ 'NOISY_BREAK_2': 'fig',
+ 'BROKEN_VIGNETTE': 'pbm',
+ 'FAX_MACHINE': 'cals',
+ 'STRIPES': 'exr',
+ 'PHOTOCOPY': 'art',
}
- #}}}
+ # }}}
return breaktypeTranslate[key]
-#{{{#########rotatefunctions######################################
+# {{{#########rotatefunctions######################################
def _rotate(self):
cmd = [
BIN_CONVERT, self.params.url.path,
@@ -94,20 +100,27 @@ class PbBreaker(Pb):
def _rotate_back(self):
angle = str(360-int(self.params.breakangle))
- cmd = [BIN_CONVERT, self.filepath, "-rotate", angle, "+repage", self.filepath]
+ cmd = [BIN_CONVERT,
+ self.filepath, "-rotate", angle, "+repage", self.filepath]
self._call_cmd(cmd)
if not self.params.expanded:
- cmd = [BIN_CONVERT, self.filepath, "-gravity", "Center", "-crop", "{}x{}+0+0".format(
- self.width, self.height), "+repage", self.filepath]
+ cmd = [BIN_CONVERT,
+ self.filepath,
+ "-gravity",
+ "Center",
+ "-crop",
+ "{}x{}+0+0".format(self.width, self.height),
+ "+repage",
+ self.filepath]
self._call_cmd(cmd)
-#}}}
+# }}}
def _subtle_break(self):
- #assume the header is no longer than _header_offset bytes
+ # assume the header is no longer than _header_offset bytes
breakpoint = random.randint(_header_offset, len(self._file_data))
- newfile = self._file_data[0:breakpoint] \
- + _subtle_break_mark \
- + self._file_data[breakpoint:]
+ newfile = self._file_data[0:breakpoint] +\
+ _subtle_break_mark +\
+ self._file_data[breakpoint:]
self._file_data = newfile[0:len(self._file_data)]
def _extreme_break(self):
@@ -123,7 +136,9 @@ class PbBreaker(Pb):
def _enforce_jpg(self):
if self.params.breaktype in ["exr", "bmp", "miff"] and not \
- re.match(r'jpe?g$', self.params.url.mimetype, re.IGNORECASE):
+ re.match(r'jpe?g$',
+ self.params.url.mimetype,
+ re.IGNORECASE):
jpg_file = self._tempfilepath_create(extension="jpg")
self._call_cmd([BIN_CONVERT, self.params.url.path, jpg_file])
self._files_created.append(jpg_file)
@@ -133,11 +148,14 @@ class PbBreaker(Pb):
if self.params.url.mimetype == self.params.breaktype:
self._conversion_file = self.params.url.path
return
- self._call_cmd([BIN_CONVERT, self.params.url.path, self._conversion_file])
+ self._call_cmd([BIN_CONVERT,
+ self.params.url.path,
+ self._conversion_file])
self._files_created.append(self._conversion_file)
def _prepare_filedata(self):
- if self.params.url.mimetype == "gif" and self.params.breaktype not in ['mat', 'psd']:
+ if self.params.url.mimetype == "gif" and\
+ self.params.breaktype not in ['mat', 'psd']:
self._choose_gif_frame(self.params.url.path)
if self.params.breakangle:
self._rotate()
@@ -158,6 +176,7 @@ class PbBreaker(Pb):
def _final_conversion(self):
self._call_cmd([BIN_CONVERT, self._conversion_file, self.filepath])
+
def psd_psbfilepath(num):
return os.path.join(re.sub(r'\.', "-%s." % num, self.filepath))
if str(self.params.breaktype) == 'psd':
@@ -174,4 +193,3 @@ class PbBreaker(Pb):
self._add_false_data()
self._final_conversion()
super(PbBreaker, self).create()
-
diff --git a/photoblaster/s3/cli.py b/photoblaster/s3/cli.py
index e86ed0c..9c0cb78 100644
--- a/photoblaster/s3/cli.py
+++ b/photoblaster/s3/cli.py
@@ -1,17 +1,20 @@
"""All s3 related methods stored here"""
-from photoblaster.config import AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, BUCKET_NAME
+from photoblaster.config import AWS_ACCESS_KEY_ID,\
+ AWS_SECRET_ACCESS_KEY, BUCKET_NAME
import sys
from boto.s3.connection import S3Connection
from boto.s3.key import Key
+
+
class S3Cli(object):
def __init__(self):
try:
- self.conn = S3Connection(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, is_secure=False)
+ self.conn = S3Connection(AWS_ACCESS_KEY_ID,
+ AWS_SECRET_ACCESS_KEY,
+ is_secure=False)
self.bucket = self.conn.get_bucket(BUCKET_NAME)
except Exception as e:
- sys.stderr.write("Could not connect to s3\n")
- sys.stderr.write(str(e))
- sys.exit(1)
+ self.log_err_fatal("Could not connect to s3 - %s", e)
def s3move(self, filename, objectname):
try:
@@ -21,5 +24,8 @@ class S3Cli(object):
k.set_acl('public-read')
k.storage_class = 'REDUCED_REDUNDANCY'
except Exception as e:
- sys.stderr.write(str(e))
- sys.exit(1)
+ self.log_err_fatal(str(e))
+
+ def log_err_fatal(self, msg):
+ sys.stderr.write("S3 client error: %s\n", msg)
+ sys.exit(1)
diff --git a/remote_host_test.py b/remote_host_test.py
deleted file mode 100644
index d535db7..0000000
--- a/remote_host_test.py
+++ /dev/null
@@ -1,27 +0,0 @@
-from flask import request
-from flask import jsonify
-from flask import Flask
-import re
-app = Flask(__name__)
-
-@app.route("/")
-def hello():
- return "Hello World!"
-
-@app.route("/testme", methods=["GET"])
-def get_my_ip():
- host = request.headers.getlist("X-Forwarded-For")[0]
- regex = re.compile(r'[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+')
- forwarded_ip = regex.search(host).group()
- return jsonify(
- {
- 'ip1': request.remote_addr,
- 'ip2': request.environ['REMOTE_ADDR'],
- 'ip3': request.environ.get('HTTP_HOST', "nothing yet"),
- 'ip4': forwarded_ip,
- 'ip5': request.environ.get('HTTP_X_REAL_IP', request.remote_addr)
- }
- ), 200
-if __name__ == "__main__":
- app.run(port=9994)
-