From bf0e171755d5eb1d713292dc5c5991e84577a986 Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 3 Jun 2019 16:43:50 +0200 Subject: [PATCH] changes --- __pycache__/apirequest.cpython-37.pyc | Bin 765 -> 1528 bytes __pycache__/imageprinter.cpython-37.pyc | Bin 2551 -> 2539 bytes apirequest.py | 32 +++++ imageprinter.py | 2 +- print.py | 157 +++++++++++++++++------- 5 files changed, 146 insertions(+), 45 deletions(-) diff --git a/__pycache__/apirequest.cpython-37.pyc b/__pycache__/apirequest.cpython-37.pyc index 1c3ec9e8ccf9d7bfcdc2616ce6df404c9d4e8345..ce0d2b1d42efcf6a0bb220ccf98d6573e7c10d85 100644 GIT binary patch literal 1528 zcmc(f&u`N(6vu7HN!?%5G}zECXcAm1q@_dJCQZ|XfCC3qCV>D|fRxo<*U=`K<4E0< zoZt`H#EE|?S5CWg;>3GS>9(r7?1CddJI}xJ{rJ5+Z#HWL$`A4T(;JtNU-8hJ$DSroK+&(D#^%KrWZ1HPA5L_UrB+(e>{FPvZLgW(S&vVP zI&zqNNCj3UOJE4)@YLucU7`&ps9?GY-X0!`1t(&)pbnt}pcsI1#vd)H{hR|7eiKxN zDBe%}04sOL4>K3AuH;?@mn?baNq3bzuozEv0UwhTP%?|sDbe8_mEyg@DCn!?Y&nV`^b=*zmpq!L<&P0zv|Uf@;JtU+rrcnX28hYPW7xyE{kitTsNY?T(TJNV2K+ z1a%>U>-T6?EraiWsJaK|-ceNzGq}9!P1t3=t`*$BT8K&JCtZG=M4`RJg6c9$FvV>U mYowrY$+c9l;bHSZ?2aOt4%Ht1uu~#8X2P|*D_0U zM6uxznMv# zp$6GhF_78`jD;%UFk1v5CQXiEH|6EgPf0D)FD*{e&nYmNJd0hIQGD_V_Oi(?9LpJv zCcoj3V`Q4l%PG$2GFg?=O41JKp(tk8kccRzVE-ZqAg{;~MA%QR;4}cLS;^@K01>!8 Ag#Z8m delta 291 zcmaDY{9TyWiI0OfLk+U2;vlsX7z=g6VYUcBOqv|RZpz7_pORXpUs6&zc^bPeqr~JR>}71X zSc)_9%O_iLELSoCd4-XSiG@W3NOCX=F-kECF>x_U0Wk=2FivLV6lZjuEXiplX%AEz e#q1gq5ycejU*rhn6*++jhsimd20%4)IsE`rctEWH diff --git a/apirequest.py b/apirequest.py index ae99ae7..b426fea 100644 --- a/apirequest.py +++ b/apirequest.py @@ -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 diff --git a/imageprinter.py b/imageprinter.py index b31255b..c081e7e 100644 --- a/imageprinter.py +++ b/imageprinter.py @@ -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 diff --git a/print.py b/print.py index 46ccb0e..749b6ec 100644 --- a/print.py +++ b/print.py @@ -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 ":"see the exercise with the specified", + "thesis ":"see the thesis with the 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+" ") + 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+" ") + 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 and for thesis type: thesis ") printer.newline() term.waitforinput()