#!/usr/bin/env python import yaml try: from yaml import CLoader as Loader from yaml import CDumper as Dumper except ImportError: from yaml import Loader, Dumper import time import Image from StringIO import StringIO import httplib2 import urllib import os settings = 'vCam.cfg' def getSettings(): f = open(settings, 'r') cfg = yaml.load(f,Loader=Loader) f.close() return cfg def getRequest(cam): thiscfg = cfg[cam] try: http = httplib2.Http(".cache") http.add_credentials(thiscfg['usr'], thiscfg['pwd']) response, content = http.request(thiscfg['url'], 'GET') except: print "err" print sys.exc_info() return content def writeRawImage(cam, stream): path = "store/%s/%s" % (cfg[cam]['store'], 'raw.jpg') f = open(path, 'w') f.write(stream) f.close() def writeHistory(cam, stream): file = "%s.jpg" % time.time() path = "store/%s/%s" % (cfg[cam]['history'], file) f = open(path, 'w') f.write(stream) f.close() def writeResize(cam, version, stream): pathTo = "store/%s/%s" % (cfg[cam]['store'], '%s.jpg' % version) i = Image.open(StringIO(stream)) i = i.resize((cfg[cam]['%s_x' % version], cfg[cam]['%s_y' % version ] ), Image.NEAREST) i.save(pathTo) #def getOpts(): # parser = OptionParser() # parser.add_option("-c", "--cam", dest="cam", help="Camera, data is obtained from vCam.cfg") # (options, args) = parser.parse_args() # return options def getLow(cam): path = "store/%s/lo.jpg" % (cfg[cam]['store']) f = open( "%s" % ( path ) , 'rb') img = f.read() f.close() return img def getHigh(cam): path = "store/%s/" % (cfg[cam]['history']) files = os.listdir(path) files.sort(key=lambda s: os.path.getmtime(os.path.join(path, s))) f = open( "%s/%s" % ( path, files[-1] ) , 'rb') img = f.read() f.close() return img def getWwwCam(): cfg={} q = os.environ['QUERY_STRING'].split('&') for line in q: try: k,v = line.split('=') cfg[k] = v except: continue try: return cfg['cam'] except: return False def isWwwLow(): q = os.environ['QUERY_STRING'].split('&') for line in q: try: k,v = line.split('=') cfg[k] = v except: continue try: return cfg['res'] except: return False def getCams(): cams={} for cam in sorted([cam for cam in cfg.keys() if(cfg[cam].has_key('url'))]): cams[cam]=cfg[cam]['name'] return cams cfg = getSettings()