#!/usr/bin/env python3 import os import sys import time from urllib.parse import parse_qs boundary = 'cutHere' def send_part(data): sys.stdout.write('Content-Type: image/png\r\n\r\n') sys.stdout.flush() sys.stdout.buffer.write(data) sys.stdout.write('\r\n--{}\r\n'.format(boundary)) sys.stdout.flush() query = parse_qs(os.environ.get('QUERY_STRING', ''), keep_blank_values=True) interval = query.get('interval', [None])[0] loop = query.get('loop', [None])[0] wait = query.get('wait', [None])[0] i = 1 images = [] while True: img = query.get('img{}'.format(i), [None])[0] if img is None: break with open(os.path.join(os.path.dirname(__file__), img), 'rb') as file: images.append(file.read()) i += 1 if interval is not None: interval = float(interval) else: interval = 1 sys.stdout.write( 'Content-Type: multipart/x-mixed-replace; boundary={boundary}\r\n\r\n' '--{boundary}\r\n'.format(boundary=boundary) ) sys.stdout.flush() while True: for k in range(1, i): send_part(images[k - 1]) time.sleep(interval) if loop is None: break if wait is not None: time.sleep(float(wait))