#!/usr/bin/python -tt # -*- coding: utf-8 -*- import cgi, os import cgitb; cgitb.enable() import json import random import time import sys import shutil from datetime import datetime import base64 from urlparse import urlparse form = cgi.FieldStorage() if form.has_key('data') or form.has_key('url') or form.has_key('web_data'): id = random.randint(0, 999999999999) fileWriteTemp = '/scratch/memcnn_daemon/tasks/{0}t'.format(id) fileWriteImage = '/scratch/memcnn_daemon/tasks/{0}i'.format(id) if form.has_key('data') and form['data'].value: head, data = form['data'].value.split(',', 1) plaindata = base64.b64decode(data); open(fileWriteTemp, 'wb').write(plaindata) #open(fileWriteTemp, 'wb').write(form['data'].file.read()) elif form.has_key('web_data') and form['web_data'].filename: open(fileWriteTemp, 'wb').write(form['web_data'].file.read()) else: fileurl = form['url'].value text_file = open(fileWriteTemp, "w") text_file.write("%s"%fileurl) text_file.close() shutil.move(fileWriteTemp,fileWriteImage); os.chmod(fileWriteImage, 0777) # os.chmod(fileWrite, 0777) # fileJSONObject = '/scratch/SUNapi/tasks/{0}o.json'.format(id) fileMemScore = '/scratch/memcnn_daemon/tasks/{0}i.dat'.format(id) # extra logging fileWriteImageMove = '/scratch/memcnn_daemon/upload/{0}i'.format(id) fileMemScoreMove = '/scratch/memcnn_daemon/upload/{0}i.dat'.format(id) fileInfo = '/scratch/memcnn_daemon/upload/{0}s.txt'.format(id) if form.has_key('data') and form['data'].value: infoTxt = form['random'].value elif form.has_key('web_data') and form['web_data'].filename: infoTxt = form['web_data'].filename else: infoTxt = form['url'].value text_file = open(fileInfo, "w") text_file.write("%s\n"%infoTxt) text_file.write("%s\n"%cgi.escape(os.environ["REMOTE_ADDR"])) text_file.write("%s"%str(datetime.now())) text_file.close() time.sleep(0.5) #while not os.path.exists(fileJSONObject): # time.sleep(0.2) while not os.path.exists(fileMemScore): time.sleep(0.2) json_data=open(fileMemScore) data = json.load(json_data) json_data.close() #mem_data=open(fileMemScore) #data = mem_data.read(); #mem_data.close() #data['filename'] = '{0}s'.format(id) # merge object: http://byatool.com/lessons/simple-property-merge-for-python-objects/ #for property in dataScene.__dict__: # if not callable(dataScene.__dict__[property]) and not hasattr(data, property): # setattr(data, property, getattr(dataScene, property)) #for k in dataScene: # if k not in data: # data[k] = dataScene[k] # delete both files #os.remove(fileWriteObject) #os.remove(fileJSONObject) #os.remove(fileWriteScene) #os.remove(fileJSONScene) shutil.move(fileWriteImage,fileWriteImageMove); shutil.move(fileMemScore,fileMemScoreMove); print "Content-Type: text/html" # HTML is following print # blank line, end of headers print json.dumps(data) else: print "Content-Type: text/html" # HTML is following print # blank line, end of headers print "

Incorrect function use

" print "

Correct usage: http://memorability.csail.mit.edu/cgi-bin/image.py?url=http://memorability.csail.mit.edu/demo/1.jpg

" print "Please click here to return to the main page."