master
Your Name 5 years ago
parent 710bfdcd2b
commit bf0e171755

@ -17,6 +17,18 @@ def getcategory(category):
return output
def getimages(category, number):
counter = 1
output=[]
for post in data:
if data[post]["category"] == category:
if counter == number:
images = data[post]["images"]
for image in images:
output.append("http://127.0.0.1:5000"+image["url"])
counter+=1
return output
def get(category, number):
counter = 1
output = []
@ -28,6 +40,26 @@ def get(category, number):
counter+=1
return output
def gettitle(category, number):
counter = 1
output = []
for post in data:
if data[post]["category"] == category:
if counter == number:
output.append(data[post]["title"])
counter+=1
return output
def getcontent(category, number):
counter = 1
output = []
for post in data:
if data[post]["category"] == category:
if counter == number:
output.append(data[post]["content"])
counter+=1
return output
#getcategory("thesis")
#get("thesis", 2) #thesis, exercise or term

@ -83,7 +83,7 @@ def print(filename):
height_pixels, width_pixels = im.size
with open('/dev/tty', 'wb') as fp:
with open('/dev/usb/lp0', 'wb') as fp:
fp.write(ESC+b"@")
fp.write(ESC+b"\x7B"+b"\x41")
fp.write(ESC + b"3" + six.int2byte(22)); # Adjust line-feed size

@ -10,6 +10,11 @@ import sys, termios, tty, os, time
import apirequest
import imageprinter
import requests
import subprocess
from subprocess import check_output
import datetime
import time
class Printer():
ESC = b'\x1B'
@ -18,7 +23,7 @@ class Printer():
CARIDGE_RET = b'\x0D'
CHARWIDTH = 78
strokes = 0
debug = True
debug = False
target = "/dev/usb/lp0"
if debug:
target = "/dev/tty"
@ -37,16 +42,26 @@ class Printer():
printer.write(self.LINE_FEED)
self.strokes = 0
def printstring(self,string):
def printstring(self,string, formating="p"):
with open(self.target, 'wb') as printer:
if self.debug:
printer.write(bytes(str(string), 'utf-8'))
if formating == "u":
printer.write(b"\x1B"+b"\x5B"+b"\x34"+b"\x6D")
printer.write(bytes(str(string), 'utf-8'))
printer.write(b"\x1B"+b"\x5B"+b"\x30"+b"\x6D")
else:
printer.write(bytes(str(string), 'utf-8'))
else:
printer.write(self.ESC+b"\x7B"+b"\x41")
printer.write(bytes(str(string), 'utf-8'))
printer.write(self.ESC+b"\x25"+b"\x46"+b"\x0F"+b"\x00"+b"\x04"+b"\x08"+b"\x00")
try:
self.newline()
except:
time.sleep(1)
self.newline()
def newline(self):
global strokes
@ -55,12 +70,35 @@ class Printer():
self.strokes = 0
def printimagefromurl(self, url):
page = requests.get(url)
f_ext = os.path.splitext(url)[-1]
f_name = 'img{}'.format(f_ext)
with open(f_name, 'wb') as f:
f.write(page.content)
if printer.debug:
rows, columns = os.popen('stty size', 'r').read().split()
subprocess.call(["catimg","-w",columns,f_name])
else:
imageprinter.print(f_name)
class Terminal():
lineinput = ""
commandMode = True
writeloop = True
commands = {
"help":"get help on the commands",
"start":"start publication",
"list":"list theses and exercises",
"exercise <number>":"see the exercise with the <number> specified",
"thesis <number>":"see the thesis with the <number> specified",
"exit":"finish the publication",
}
def __init__(self,printer, persons):
self.printer = printer
self.persons = persons
@ -73,8 +111,9 @@ class Terminal():
self.lineinput = ""
continue
def waitforinput(self):
def waitforinput(self, nocommand=False):
self.writeloop = True
self.printer.printchar("> ")
while self.writeloop:
char = self.getch()
if (ord(char) == 27):
@ -82,8 +121,14 @@ class Terminal():
exit(0)
if (ord(char) == 13):
self.printer.newline()
self.command(self.lineinput)
self.lineinput = ""
if not nocommand:
if not self.lineinput == "":
self.command(self.lineinput)
self.lineinput = ""
self.printer.printchar("> ")
else:
self.writeloop = False
else:
self.lineinput+=char
self.printer.printchar(char)
@ -99,33 +144,65 @@ class Terminal():
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
return ch
def scanwifi(self):
self.printer.newline()
out = check_output(["nmcli", "dev", "wif"])
self.printer.printstring(out.decode("utf-8"))
def list(self):
printer.printstring("theses on POETIC SOFTWARE", "u")
result = apirequest.getcategory("thesis")
for i, line in enumerate(result):
printer.printstring(str(i+1)+" "+line)
printer.newline()
printer.printstring("exercises in POETIC SOFTWARE","u")
result = apirequest.getcategory("exercise")
for i, line in enumerate(result):
printer.printstring(str(i+1)+" "+line)
printer.newline()
def command(self, command):
#print("received command: "+str(command))
if "help" == str(command):
self.printer.printstring("type commands to print the publication")
self.printer.printstring("help:")
self.printer.printstring(" get help on the commands")
self.printer.printstring("The user in this publication is an active agent. The publication can be assembled according to your own wishes using commands. The following commands can be used.")
for key, help in self.commands.items():
self.printer.printstring(key+":")
self.printer.printstring(" "+help)
#self.writeloop = False
elif "list" == str(command):
self.list()
elif "start" == str(command) or "restart" == str(command):
main()
elif str(command).split(" ")[0] == "exercise" or str(command).split(" ")[0] == "thesis":
part = str(command).split(" ")[0]
try:
arguments = str(command.strip()).split(" ")
arguments.pop(0)
arguments = str(command.strip()).split(" ")
arguments.pop(0)
if len(arguments) < 1:
self.printer.printstring("no argument given. Usage: "+part+" <number>")
else:
for i,arg in enumerate(arguments):
if arg.isdigit():
number = int(arg)
if number > len(apirequest.getcategory(part)):
self.printer.printstring("Number must be inbetween 1 and "+ str(len(apirequest.getcategory(part))))
else:
result = apirequest.get(part, number)
result = apirequest.getimages(part, number)
for img in result:
printer.printimagefromurl(img)
result = apirequest.gettitle(part, number)
for line in result:
self.printer.printstring(line, "u")
result = apirequest.getcontent(part, number)
for line in result:
self.printer.printstring(line)
if apirequest.gettitle(part, number)[0] == "Wifi Poem":
self.scanwifi()
self.printer.newline()
else:
raise Exeption("not a number")
except:
self.printer.printstring("ERROR: no argument given. Usage: "+part+" <number>")
self.printer.printstring("not a number")
elif str(command).split(" ")[0] == "whois":
if str(command).split(" ")[1] in self.persons:
@ -134,10 +211,15 @@ class Terminal():
self.printer.printstring("Sorry not found, try " + random.choice(list(self.persons)))
elif "exit" == str(command):
self.printer.printstring("Imprint")
result = apirequest.get("imprint", 1)
for line in result:
self.printer.printstring(line)
self.printer.printstring("Imprint", "u")
self.printer.newline()
self.printer.printstring("2019, Piet Zwart Institute, Rotterdam")
self.printer.printstring("Published by Alexander Roidl")
self.printer.printstring("and (enter your name)")
self.printer.newline()
self.waitforinput(nocommand=True)
self.printer.newline()
self.printer.printstring("Special thanks to Aymeric Mansoux, Marloes de Valk, Michael Murtaugh, André Castro, Clara Balaguer, Amy Suo Wu, Leslie Robbins, Angeliki, Alice, Tash, Zalan, Joca, Jule")
self.printer.newline()
main()
@ -155,41 +237,28 @@ persons = {
}
printer = Printer()
term = Terminal(printer, persons)
def printimagefromurl(url):
page = requests.get(url)
f_ext = os.path.splitext(url)[-1]
f_name = 'img{}'.format(f_ext)
with open(f_name, 'wb') as f:
f.write(page.content)
imageprinter.print(f_name)
now = datetime.datetime.now()
def main():
term.waittostart()
printer.printstring("W E L C O M E !")
printimagefromurl('https://apod.nasa.gov/apod/image/1701/potw1636aN159_HST_2048.jpg')
printer.newline()
#printimagefromurl('https://apod.nasa.gov/apod/image/1701/potw1636aN159_HST_2048.jpg')
printer.printstring(now.strftime("%Y-%m-%d %H:%M"))
printer.newline()
printer.printstring("---------------")
printer.printstring("POETIC SOFTWARE")
printer.printstring("---------------")
printer.printstring("type help for help")
printer.newline()
result = apirequest.get("introduction", 1)
result = apirequest.gettitle("introduction", 1)
for line in result:
printer.printstring(line, "u")
result = apirequest.getcontent("introduction", 1)
for line in result:
printer.printstring(line)
printer.newline()
printer.printstring("theses on POETIC SOFTWARE")
result = apirequest.getcategory("thesis")
for i, line in enumerate(result):
printer.printstring(str(i+1)+" "+line)
printer.newline()
printer.printstring("exercises in POETIC SOFTWARE")
result = apirequest.getcategory("exercise")
for i, line in enumerate(result):
printer.printstring(str(i+1)+" "+line)
printer.newline()
term.list()
printer.printstring("SELECT which one to see, for exercise type: exercise <number> and for thesis type: thesis <number>")
printer.newline()
term.waitforinput()

Loading…
Cancel
Save