#!/usr/bin/python
#
# Purge print jobs that are not-complete and older than 1 days.
# borrowed from https://www.mnxsolutions.com/linux/cups-purging-not-completed-print-jobs-older-than
from datetime import date, timedelta, datetime
import time
import os

howmanyhoursago=3
now=datetime.today()
timeago=now-timedelta(hours=howmanyhoursago)
epoch_now=time.mktime(now.timetuple())
epoch_timeago=time.mktime(timeago.timetuple())

date_difference=epoch_now-epoch_timeago


for line in os.popen('/usr/bin/lpstat -o').readlines():
    data = line.strip().split()
    job=data[0].split('-')
    date_time=data[4] + " " + data[5] + " " + data[6] + " " + data[7]

    pattern = '%d %b %Y %H:%M:%S'
    epoch_job = int(time.mktime(time.strptime(date_time, pattern)))
    difference=epoch_now - epoch_job

    if difference > date_difference:
        #print "Canceling pending job: "+str(job[-1])
        os.popen('/usr/bin/cancel '+str(job[-1]))
