import StringIO
import SimpleHTTPServer
from VideoCapture import Device
import sys
BaseClass = SimpleHTTPServer.SimpleHTTPRequestHandler
CounterTemplate = """
Server
Statistics
This server has been accessed
%d times. """
count = 0
class MyRequestHandler(BaseClass):
def do_GET(self):
global count
count = count + 1
BaseClass.do_GET(self)
def send_head(self):
if self.path == "/counter.html":
return self.send_counter()
elif self.path == "/camera.jpg":
return self.send_camera()
elif self.path == "/end.html":
return self.send_end()
else:
return BaseClass.send_head(self)
def send_counter(self):
self.send_response(200)
self.send_header("Content-type","text/html")
self.end_headers()
text = CounterTemplate % count
return StringIO.StringIO(text)
def send_camera(self):
self.send_response(200)
self.send_header("Content-type","image/jpeg")
self.end_headers()
cam = Device()
cam.saveSnapshot('C:\\Python21\\Tom\\camera.jpg')
del cam
return open('C:\\Python21\\Tom\\camera.jpg')
def send_end(self):
del self
def test():
SimpleHTTPServer.test(MyRequestHandler)
test()
#import urllib
def geturl(url):
"Return contents and Mime type of a URL"
f = urllib.urlopen(url)
data = f.read()
headers = f.info()
f.close()
if headers.has_key("content-type"):
mimetype = headers["content-type"]
else:
# No content-type header -- guess type based on extension
if url[-5:] == ".html":
mimetype = "text/html"
else:
# Don't know -- worst-case assumption
mimetype = "application/octet-stream"
return (data, mimetype)
#from sgmllib import SGMLParser
#import string
class LinkExtractor(SGMLParser):
def __init__(self):
self.links = []
SGMLParser.__init__ (self)
def do_a(self, attributes):
for (name, value) in attributes:
if name == "href":
value = cleanlink(value)
if value:
self.links.append(value)
def getlinks(self):
return self.links
def cleanlink(link):
i = string.find(link, '#')
if i >= 0:
link = link[:i] # Remove #fragment
words = string.split(link) # Split in whitespace delimited words return
string.join(words, "") # Join words without whitespace
def getlinks(url):
(data, mimetype) = geturl(url)
if mimetype == "text/html":
parser = LinkExtractor()
parser.feed(data)
parser.close()
links = parser.getlinks()
else:
links = [] # Non-HTML data has no links
return links
#import urlparse
def getfulllinks(url):
links = getlinks(url)
fulllinks = []
for link in links:
full = urlparse.urljoin(url, link)
fulllinks.append(full)
return fulllinks
def webchecker(root):
todo = [root]
done = []
refs = {root: [""]}
while todo:
url = todo[0]
done.append(url)
del todo[0]
print "Checking", url
try:
newlinks = getfulllinks(url)
except IOError, msg:
print "*** Error for", url, "***", msg
print "*** Referenced from:"
for ref in refs[url]:
print "\t" + ref
continue
for link in newlinks:
if not refs.has_key(link):
refs[link] = [url]
else:
refs[link].append(url)
if (link[:len(root)] == root and
link not in done and link not in todo):
todo.append(link)
#del urllib.FancyURLopener.http_error_default
#import sys
#webchecker(sys.argv[1])