def get_image_vector(uv_task): task_tag = "AVI: GETTING IMAGE VECTOR" print "\n\n************** %s [START] ******************\n" % task_tag uv_task.setStatus(302) from lib.Worker.Models.uv_document import UnveillanceDocument from conf import ANNEX_DIR import pypuzzle image = UnveillanceDocument(_id=uv_task.doc_id) puzz = pypuzzle.Puzzle() try: cvec = puzz.get_cvec_from_file(os.path.join(ANNEX_DIR, image.file_name)) except Exception as e: error_msg = "Could not get image vector because %s" % e print error_msg print "\n\n************** %s [ERROR] ******************\n" % task_tag uv_task.fail(message=error_msg) return from vars import ASSET_TAGS if not image.addAsset(cvec, "image_cvec.json", as_literal=False, tags=[ASSET_TAGS['IMAGE_CVEC']]): error_msg = "could not save cvec asset!" print error_msg print "\n\n************** %s [ERROR] ******************\n" % task_tag uv_task.fail(message=error_msg) return print "\n\n************** %s [END] ******************\n" % task_tag uv_task.finish()
def evaluate_JSON_media(uv_task): task_tag = "EVALUATE JSON MEDIA" print "\n\n************** %s [START] ******************\n" % task_tag uv_task.setStatus(302) import os from json import loads from lib.Worker.Models.uv_document import UnveillanceDocument from conf import ANNEX_DIR, DEBUG doc = UnveillanceDocument(_id=uv_task.doc_id) try: if DEBUG: print doc.emit() except Exception as e: print e content = None try: content = loads(doc.loadFile(doc.file_name)) except Exception as e: error_msg = "could not load content at all: %s" % e print error_msg print "\n\n************** %s [ERROR] ******************\n" % task_tag uv_task.fail(message=error_msg) return # match keys to object mention_set = ["mimeType", "headers", "parts", "body", "filename"] if len(set(content.keys()).intersection(mention_set)) == len( content.keys()): from lib.Worker.Models.dl_FD_mention import FoxyDoxxingMention doc = FoxyDoxxingMention(inflate=doc.emit()) else: error_msg = "document not really usable." print error_msg print "\n\n************** %s [ERROR] ******************\n" % task_tag uv_task.fail(message=error_msg) return doc.addCompletedTask(uv_task.task_path) from vars import MIME_TYPE_TASKS uv_task.task_queue = [uv_task.task_path] try: uv_task.task_queue.extend(MIME_TYPE_TASKS[doc.mime_type]) uv_task.routeNext() except Exception as e: error_msg = "cannot get task queue for mime type %s: %s" % ( doc.mime_type, e) print error_msg print "\n\n************** %s [WARN] ******************\n" % task_tag print "\n\n************** %s [END] ******************\n" % task_tag uv_task.finish()
def compare_avis(uv_task): task_tag = "CLUSTER: COMPARING 2 AVIS" print "\n\n************** %s [START] ******************\n" % task_tag uv_task.setStatus(302) if not hasattr(uv_task, 'avis') or len(uv_task.avis != 2): error_msg = "Cannot compare anything." print error_msg print "\n\n************** %s [ERROR] ******************\n" % task_tag uv_task.fail(message=error_msg, status=412) return from lib.Worker.Models.uv_document import UnveillanceDocument try: avis = map(lambda a: UnveillanceDocument(_id=a), uv_task.avis) except Exception as e: error_msg = "could not load up avis as UnveillanceDocuments: %s" % e print error_msg print "\n\n************** %s [ERROR] ******************\n" % task_tag uv_task.fail(message=error_msg, status=412) return from conf import ANNEX_DIR from vars import ASSET_TAGS from json import loads import pypuzzle puzz = pypuzzle.Puzzle() try: compare_avi = puzz.get_distance_from_cvec( *(map(lambda a: loads(a.loadAsset("image_cvec.json")), avis))) except Exception as e: error_msg = "could not get one or more image vectors because %s" % e print error_msg print "\n\n************** %s [ERROR] ******************\n" % task_tag uv_task.fail(message=error_msg, status=412) return if type(compare_avi) not in [int, float]: error_msg = "non-numerical result for comparaison." print error_msg print "\n\n************** %s [ERROR] ******************\n" % task_tag uv_task.fail(message=error_msg, status=412) return c_map = { 'avis': map(lambda a: { 'file_name': a.file_name, '_id': a._id }, avis), 'compared': compare_avi } if not uv_task.addAsset(c_map, "compare_avi_output.json", as_literal=False, tags=[ASSET_TAGS['C_RES']]): error_msg = "could not save result asset to this task." print error_msg print "\n\n************** %s [ERROR] ******************\n" % task_tag uv_task.fail(message=error_msg) return print "\n\n************** %s [END] ******************\n" % task_tag uv_task.finish()