summaryrefslogtreecommitdiff
path: root/aslclass.py
blob: 3307d7c17f920c83947400d92171e7da692bf2f0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#!/git/aslclass.py
# Copyright 2013 Aditya Naik
# Licensed under the Apache License, Version 2.0
# http://www.apache.org/licenses/LICENSE-2.0


import sys
import os
import msvcrt
from timeit import timeit as time
from time import clock as clock
from paths import listpaths
import re

class ASLreport:
	def __init__(self):
		self.shotcount=0
		self.pauseinterval=[]
		self.shotlist=[]
		self.totaltime=0
	
	def metadata(self):
		load=input("Do you want to start a new state? (y/n +enter) (n=load state)\n")
		if load=='y': pass
		elif load=='n': self.loader()
		self.name=input("\nEnter movie name:\n")
		print("press enter to start")
		keystroke=str(msvcrt.getch())[-2]
		if keystroke=="r":
			print("counter begins")
			self.key()
		else: print("Unknown keystroke ")

	def loader(self):
		pathlist=os.listdir(".")
		print(pathlist)
		serial=input("Enter the serial number of the savefile (starts from 0)\n")
		if listpaths('.')[int(serial)][-9:len(listpaths('.')[int(serial)])]!="savestate": 
			print("unknown filetype")
			sys.exit(1)
		loader=open(listpaths('.')[int(serial)], mode="r").read()
		data=re.search(r"(?P<MovieName>.+)\n(?P<TotalTime>.+)\n(?P<ShotCount>\d+)",loader)
		try:
			self.name=data.group('MovieName')
			self.totaltime=float(data.group('TotalTime'))
			self.shotcount=int(data.group('ShotCount'))
		except AttributeError: 
			print("unknown filetype")
			sys.exit(0)
		print("press enter to start loaded state")
		if str(msvcrt.getch())[-2]=="r":
			print("loaded state")
			self.key()
		else: print("Unknown keystroke ")
		
	
	def key(self):
		clock()
		tottime=0
		keystroke=str(msvcrt.getch())[-2]
		if keystroke=="s":
			timestamp=clock()
			self.shotcount=self.shotcount+1
			if self.pauseinterval!=[]:
				for pausetime in self.pauseinterval: tottime=tottime+pausetime
				actualtime=float(timestamp)-float(tottime)
				# self.shotlist.append((self.shotcount,actualtime ))
				print("Shot #%d at %fs "%(self.shotcount,actualtime))
			else:
				self.shotlist.append((self.shotcount,timestamp ))
				print("Shot #%d at %fs "%(self.shotcount,timestamp))
			self.key() 
		elif keystroke=="p": self.pause()
		elif keystroke=="e" : self.reset()
		else: print("Unkown keystroke")
	
	def pause(self):
		print("paused")
		self.startpause=clock()
		startagain=str(msvcrt.getch())[-2]
		if startagain=="p": 
			self.endpause=clock()
			print("restarted")
			self.pauseinterval.append(self.endpause-self.startpause)
			self.key()
		elif startagain=="e": self.reset()
		else: print("Unknown keystroke")
	
	def reset(self):
		print('\n==ASLreport for "%s"=='%self.name)
		self.totaltime=clock()
		for pausetime in self.pauseinterval: 
			self.totaltime=self.totaltime-pausetime
		print(self.totaltime)
		try:  self.totaltime/self.shotcount
		except ZeroDivisionError: sys.exit("no shots recorded")
		self.ASL=self.totaltime/self.shotcount
		print("number of shots=%d"%self.shotcount)	
		print("ASL =%fseconds"%self.ASL)
		self.report=input("\nDo you want to generate report file?(y/n)\n")
		if self.report=="y": self.reportgenerator()
		elif self.report=="n": sys.exit(0)
		
	def reportgenerator(self):
		fileopen=open(r"%s.ASLreport"%self.name,mode="w")
		fileopen.write(
		"ASL report for %s \n\n Record Time=%f\n Recorded Shots=%d\n ASL=%f\nShot Timestamps:\n%s"%(self.name,self.totaltime,self.shotcount,self.ASL,str(self.shotlist)))
	
	def savestate(self):
		saver=open("%s.savestate"%self.name, mode="w")
		saver.write("%s %f %f"%(self.name,self.totaltime,self.shotcount))
	
	

if __name__=="__main__":
	ASLreport().metadata()