|
Nokia Internet Tablet N8XX http://n8xx.com/index.html Battery status log visualizer http://n8xx.com/message-1300.html |
| dik @ 31-05-2008 14:33:15 |
Код:#!/usr/bin/env python
# via http://lost-theory.org/python/dynamicimg.html
import Image,ImageDraw
import re
import os
filename = "/media/mmc1/battery.log"
imagename = "/media/mmc1/graph.png"
log = file(r"%s" % filename)
line = len(log.readlines())
X = line+60
Y = 130 #image width and height
log.close()
def graph(filename):
img = Image.new("RGB", (X,Y), "#FFFFFF")
draw = ImageDraw.Draw(img)
#draw some axes and markers
#for i in range(X/6):
#if i % 5 == 0:
#draw.text((i*10+15, Y-15), `i*10`, fill="#000")
for j in range(1,Y/10-2):
draw.text((0,Y-15-j*10), `j*10`, fill="#000")
draw.line((20,Y-19,X,Y-19), fill="#000")
draw.line((19,20,19,Y-18), fill="#000")
#read in file and graph it
ots4et=0
log = file(r"%s" % filename)
for (i, value) in enumerate(log):
proc = value[22:26]
chas = value[15:17]
min = value[18:20]
data = value[1:13]
if i==1:
draw.text((i+25, Y-120), data, fill="#000")
if re.search("Charging", value):
if ots4et == 0:
#draw.line((i+20, Y-15, i+20, 20), fill="#DDD")
draw.line((i+20,Y-20,i+20,Y-30), fill="#33CC33")
else:
hours,minutes = divmod(ots4et, 60)
worktime="%s:%s" % (hours, minutes)
draw.line((i+20,Y-20,i+20,Y-30), fill="#33CC33")
draw.text((i+15, Y-15), worktime, fill="#000")
ots4et = 0
else:
if re.search("---", value):
draw.line((i+20, Y-15, i+20, 20), fill="#000")
else:
chas = int(chas)
min = int(min)
ots4et=ots4et+10
proc = eval(proc)
if min == 0:
draw.line((i+20, Y-15, i+20, 20), fill="#DDD")
draw.line((i+20,Y-20,i+20,Y-10-proc), fill="#fff")
#if chas % 2 == 0:
#draw.text((i+15, Y-15), `ots4et`, fill="#000")
else:
draw.line((i+20,Y-20,i+20,Y-10-proc), fill="#55d")
if i==line-1:
hours,minutes = divmod(ots4et, 60)
worktime="%s:%s" % (hours, minutes)
draw.text((i+15, Y-15), worktime, fill="#000")
img.save(imagename)
log.close()
graph(filename)
image="/usr/bin/browser --url file://%s" % (imagename)
os.system(image)Пример запуска : |
| Wall @ 31-05-2008 23:32:38 |
А можно еще и лог куда-нибудь выложить? |
| dik @ 01-06-2008 04:34:54 |
Выложил в файлы. - http://n8xx.com/uploads.php?file=battery.log |
| Wall @ 01-06-2008 13:16:49 |
Посмотрел на код. К сожалению в вашем посте скорее всего выравнивание 'поехало', так что понять что там происходит трудно. Код:#!/usr/bin/env python
import sys
import os
import re
import Image, ImageDraw
DEF_FNAME = "/media/mmc1/battery.log"
DEF_IMGNAME = "/media/mmc1/graph.png"
def graph(filename, x, y):
....
return img
if __name__ == "__main__":
if len(sys.argv) == 2:
filename = sys.argv[1]
imagename = os.path.splitext(filename)[0] + '.png'
else:
filename = DEF_FNAME
imagename = DEF_IMGNAME
log = file(filename)
lines = len(log.readlines())
x = lines + 60
y = 130 #image width and height
log.close()
image = graph(filename, x, y)
image.save(imagename)
sys.exit(os.system("/usr/bin/browser --url file://%s" % imagename))Почитать о питоновом стиле можно здесь: http://www.python.org/dev/peps/pep-0008/ |
| dik @ 01-06-2008 13:36:15 |
Спасибо. |