new functions

master
Your Name 5 years ago
parent 138b75009f
commit d8bfa3108f

@ -1,7 +1,7 @@
import requests
import json
r = requests.get("http://127.0.0.1:5000/api/getcontent")
r = requests.get("http://127.0.0.1:1234/api/getcontent")
data = r.json()
def getcategory(category):
@ -25,7 +25,21 @@ def getimages(category, number):
if counter == number:
images = data[post]["images"]
for image in images:
output.append("http://127.0.0.1:5000"+image["url"])
output.append("http://127.0.0.1:1234"+image["url"])
counter+=1
return output
def getlinks(category, number):
counter = 1
output=[]
for post in data:
if data[post]["category"] == category:
if counter == number:
links = data[post]["removedLinks"]
for link in links:
item = data.get(link)
output.append(item['title'])
output.append(item['content'])
counter+=1
return output

@ -20,8 +20,12 @@ class Printer():
ESC = b'\x1B'
FORMFEED = b'\x0C'
UNDERLINEDON = b'\x1B'+b'\x2D'+b'\x31'
UNDERLINEDOFF = b'\x1B'+b'\x2D'+b'\x30'
ITALICON = b'\x1B'+b'\x34'
ITALICOFF = b'\x1B'+b'\x35'
CPITWELF = b'\x1B'+b'\x4D'
NLQ= b'\x1B'+b'\x78'+b'\x31'
NLQ2 = b'\x1B'+b'\x6B'+b'\x01'
BOLDON = b'\x1B'+b'\x45'
BOLDOFF = b'\x1B'+b'\x46'
DHON = b'\x1B'+b'\x77'+b'\x01'
@ -31,21 +35,22 @@ class Printer():
CHANGE_EMULATION = ESC+b'\x7B'+b'\x65'
LINE_FEED = b'\n'
CARIDGE_RET = b'\x0D'
CHARWIDTH = 78
CHARWIDTH = 70 #78 is actual, but -8 for safty
printedheight = 0
pages = 1
strokes = 0
debug = True
lineheight = 33
debug = False
target = "/dev/usb/lp0"
if debug:
target = "/dev/tty"
def formfeed(self):
def formfeed(self, exit=False):
with open(self.target, 'wb') as printer:
if not self.debug:
while self.checkpagebreak(printer) == False:
self.printedheight+=(44/216)
while self.checkpagebreak(printer, exit) == False:
self.printedheight+=(self.lineheight/216)
printer.write(self.LINE_FEED)
@ -62,7 +67,7 @@ class Printer():
self.strokes += 1
if(self.strokes>self.CHARWIDTH):
self.checkpagebreak(printer)
self.printedheight+=(44/216)
self.printedheight+=(self.lineheight/216)
printer.write(self.LINE_FEED)
self.strokes = 0
@ -70,47 +75,101 @@ class Printer():
strokesinline = 0
with open(self.target, 'wb') as printer:
if self.debug:
if formating == "compr":
self.CHARWIDTH = 120
else:
self.CHARWIDTH = 70
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:
for word in re.split(r'(\s+)', string):
if "&&ref" in word and "&&endref" not in word:
subwords = word.split("&&ref")
word = subwords[1]
printer.write(b"\x1B"+b"\x5B"+b"\x34"+b"\x6D")
if "&&endref" in word:
subwords = word.split("&&endref")
word = subwords[1]
printer.write(b"\x1B"+b"\x5B"+b"\x30"+b"\x6D")
strokesinline += len(word)
if "\n" in word:
strokesinline = 0
if strokesinline > self.CHARWIDTH:
printer.write(self.LINE_FEED)
strokesinline = len(word)
if not (strokesinline == 1 and word == " "):
if strokesinline > self.CHARWIDTH:
firstpart = word[:self.CHARWIDTH]
secondpart = word[self.CHARWIDTH:]
printer.write(bytes(str(firstpart), 'utf-8'))
printer.write(self.LINE_FEED)
printer.write(bytes(str(secondpart), 'utf-8'))
elif not (strokesinline == 1 and word == " "):
printer.write(bytes(str(word), 'utf-8'))
else:
printer.write(self.ESC+b"\x7B"+b"\x41")
printer.write(self.ESC + b"\x33" + bytes([44]));
printer.write(self.ESC + b"\x33" + bytes([self.lineheight]));
#printer.write(self.NLQ)
#printer.write(self.NLQ2)
self.CHARWIDTH = 70
if formating == "u":
printer.write(self.BOLDON)
if formating == "p":
printer.write(self.CPITWELF)
if formating == "i":
printer.write(self.ITALICON)
if formating == "dh":
printer.write(self.DHON)
if formating == "compr":
printer.write(self.COMPRON)
if self.printedheight > 11.69:
printer.write(bytes(str("NEW PAGE YESY"), 'utf-8'));
self.printedheight=0
self.CHARWIDTH = 120
if formating == "compru":
printer.write(self.UNDERLINEDON)
printer.write(self.COMPRON)
self.CHARWIDTH = 120
for word in re.split(r'(\s+)', string):
if "&&ref" in word:
subwords = word.split("&&ref")
word = subwords[1]
printer.write(self.COMPRON)
if "&&endref" in word:
subwords = word.split("&&endref")
word = subwords[1]
printer.write(self.COMPROFF)
if "&&uline" in word:
subwords = word.split("&&uline")
word = subwords[1]
printer.write(self.UNDERLINEDON)
if "&&enduline" in word:
subwords = word.split("&&enduline")
word = subwords[1]
printer.write(self.UNDERLINEDOFF)
strokesinline += len(word)
if "\n" in word:
strokesinline = 0
self.printedheight+=(44/216)
for _ in range(word.count("\n")):
strokesinline = 0
self.checkpagebreak(printer)
self.printedheight+=(self.lineheight/216)
if strokesinline > self.CHARWIDTH:
self.checkpagebreak(printer)
self.printedheight+=(44/216)
self.printedheight+=(self.lineheight/216)
printer.write(self.LINE_FEED)
strokesinline = len(word)
if not (strokesinline == 1 and word == " "):
printer.write(bytes(str(word), 'utf-8'))
if strokesinline > self.CHARWIDTH:
firstpart = word[:self.CHARWIDTH]
secondpart = word[self.CHARWIDTH:]
printer.write(bytes(str(firstpart), 'utf-8'))
self.checkpagebreak(printer)
self.printedheight+=(self.lineheight/216)
printer.write(self.LINE_FEED)
printer.write(bytes(str(secondpart), 'utf-8'))
elif not (strokesinline == 1 and word == " "):
printer.write(str(word).encode("ascii","ignore"))
if formating == "u":
printer.write(self.BOLDOFF)
if formating == "i":
@ -119,7 +178,10 @@ class Printer():
printer.write(self.DHOFF)
if formating == "compr":
printer.write(self.COMPROFF)
printer.write(self.ESC+b"\x25"+b"\x46"+b"\x0F"+b"\x00"+b"\x04"+b"\x08"+b"\x00")
if formating == "compru":
printer.write(self.COMPROFF)
printer.write(self.UNDERLINEDOFF)
#printer.write(self.ESC+b"\x25"+b"\x46"+b"\x0F"+b"\x00"+b"\x04"+b"\x08"+b"\x00")
try:
self.newline()
except:
@ -131,26 +193,31 @@ class Printer():
with open(self.target, 'wb') as printer:
if not self.debug:
self.checkpagebreak(printer)
printer.write(self.ESC + b"\x33" + bytes([44]));
self.printedheight+=(44/216)
printer.write(self.ESC + b"\x33" + bytes([self.lineheight]));
self.printedheight+=(self.lineheight/216)
printer.write(self.LINE_FEED)
self.strokes = 0
def checkpagebreak(self, printer):
if self.printedheight+(44/216)*4 > 11.69:
def checkpagebreak(self, printer, exit=False):
print(self.printedheight)
if self.printedheight+(self.lineheight/216)*4 > 11.69:
printer.write(self.LINE_FEED)
printer.write(self.LINE_FEED)
printer.write(bytes(str("PAGE "+str(self.pages)), 'utf-8'));
printer.write(self.ESC + b"\x33" + bytes([44]));
printer.write(self.LINE_FEED)
printer.write(self.ESC + b"\x33" + bytes([self.lineheight]));
printer.write(self.LINE_FEED)
printer.write(self.LINE_FEED)
printer.write(self.COMPRON)
printer.write(bytes(str("------------------------------------------------------ POETIC SOFTWARE PUBLICATION -----------------------------------------------------"), 'utf-8'));
printer.write(self.COMPROFF)
printer.write(self.LINE_FEED)
self.printedheight=(44/216)
self.pages+=1
if not exit:
printer.write(self.COMPRON)
printer.write(bytes(str("------------------------------------------------------ POETIC SOFTWARE PUBLICATION -----------------------------------------------------"), 'utf-8'));
printer.write(self.COMPROFF)
printer.write(self.LINE_FEED)
self.printedheight=(self.lineheight/216)
self.pages+=1
else:
self.printedheight=0
self.pages=1
return True
else:
return False
@ -163,26 +230,28 @@ class Printer():
f.write(page.content)
if self.debug:
rows, columns = os.popen('stty size', 'r').read().split()
#rows, columns = os.popen('stty size', 'r').read().split()
#subprocess.call(["catimg","-w",columns,f_name])
subprocess.call(["feh",f_name])
else:
imagelines = imageprinter.print(f_name,True)
isodd = False
if imagelines % 2 == 1:
isodd = True
imagelines+=1
if self.printedheight + (22/216)*imagelines +(44/216)*4 > 11.69:
#((imagelines*22)%self.lineheight)/11
if self.printedheight + (22/216)*imagelines +(self.lineheight/216)*4 > 11.69:
self.formfeed()
self.printedheight += (22/216)*imagelines
imageprinter.print(f_name)
if isodd:
with open('/dev/usb/lp0', 'wb') as printer:
printer.write(ESC + b"\x33" + bytes([22]));
with open('/dev/usb/lp0', 'wb') as printer:
printer.write(self.ESC + b"\x33" + bytes([11]));
for _ in range(int(((imagelines*22)%self.lineheight)/11)):
printer.write(self.LINE_FEED)
printer.write(ESC + b"\x33" + bytes([44]));
self.printedheight += (11/216)
print(imagelines)
print(((imagelines*22)%self.lineheight)/11)
printer.write(self.ESC + b"\x33" + bytes([self.lineheight]));
self.newline()
# 10 lines 220
class Terminal():
@ -251,16 +320,16 @@ class Terminal():
self.printer.printstring(out.decode("utf-8"))
def list(self):
printer.printstring("theses on POETIC SOFTWARE", "u")
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")
self.printer.newline()
self.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()
self.printer.newline()
def command(self, command):
#print("received command: "+str(command))
@ -278,7 +347,7 @@ class Terminal():
main()
elif "ff" == str(command):
printer.formfeed()
self.printer.formfeed()
elif str(command).split(" ")[0] == "exercise" or str(command).split(" ")[0] == "thesis":
part = str(command).split(" ")[0]
@ -293,17 +362,26 @@ class Terminal():
if number > len(apirequest.getcategory(part)):
self.printer.printstring("Number must be inbetween 1 and "+ str(len(apirequest.getcategory(part))))
else:
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.getimages(part, number)
for img in result:
self.printer.printimagefromurl(img)
#get and print content of thesis or exercise
result = apirequest.getcontent(part, number)
for line in result:
self.printer.printstring(line)
#check for specific things like the wifi
if apirequest.gettitle(part, number)[0] == "Wifi Poem":
self.scanwifi()
result = apirequest.getlinks(part, number)
self.printer.newline()
for i, line in enumerate(result):
if i%2 == 0:
self.printer.printstring(line, "compru")
else:
self.printer.printstring(line, "compr")
self.printer.newline()
else:
self.printer.printstring("not a number")
@ -324,12 +402,11 @@ class Terminal():
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()
self.printer.formfeed(True)
main()
else:
self.printer.printstring("~ command not found. try help for a list of available commands")
self.printer.printstring("~ command not found. type help for a list of available commands")
self.printer.newline()
#if the command is valid we want to execute the command and continue the story
@ -338,34 +415,58 @@ class Terminal():
persons = {
"Kittler":"Friedrich A. Kittler (June 12, 1943 October 18, 2011) was a literary scholar and a media theorist. His works relate to media, technology, and the military. ",
"Alex":"Alexander Roidl created Poetic Software as part of his Master's thesis.",
"Michael":"Michael Murtaugh is an independent computer programmer (automatist.org) and a member of Constant Art & Media (constantvzw.org) in Brussels where he lives.",
"Aymeric":"Aymeric Mansoux (FR) is an artist, musician and media researcher, with a background in economics, fine art, graphic design, and computer programming. ",
"Jule":"Jule Ulrych is an evironmental activist and passionate vegan food lover living in Den Haag."
}
printer = Printer()
term = Terminal(printer, persons)
now = datetime.datetime.now()
ascii = '''::::::::: :::::::: :::::::::: ::::::::::: ::::::::::: ::::::::
:+: :+: :+: :+: :+: :+: :+: :+: :+:
+:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+
+#++:++#+ +#+ +:+ +#++:++# +#+ +#+ +#+
+#+ +#+ +#+ +#+ +#+ +#+ +#+
#+# #+# #+# #+# #+# #+# #+# #+#
### ######## ########## ### ########### ########
:::::::: :::::::: :::::::::: ::::::::::: ::: ::: ::: ::::::::: ::::::::::
:+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+:
+:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+
+#++:++#++ +#+ +:+ :#::+::# +#+ +#+ +:+ +#+ +#++:++#++: +#++:++#: +#++:++#
+#+ +#+ +#+ +#+ +#+ +#+ +#+#+ +#+ +#+ +#+ +#+ +#+ +#+
#+# #+# #+# #+# #+# #+# #+#+# #+#+# #+# #+# #+# #+# #+#
######## ######## ### ### ### ### ### ### ### ### ##########
SOFTWARE & ART'''
def main():
term.waittostart()
printer.printstring(ascii, "compr")
printer.formfeed();
printer.newline()
printer.printstring("W E L C O M E !", "dh")
printer.newline()
printer.printstring(now.strftime("%Y-%m-%d %H:%M"), "compr")
printer.newline()
# printer.formfeed()
printer.printimagefromurl("https://www.sanfranciscobaycoffee.com/wp-content/uploads/2017/03/52279468.jpg")
# printer.printstring("---------------")
# printer.printstring("POETIC SOFTWARE")
# printer.printstring("---------------")
# printer.printstring("type help for help")
# printer.newline()
# 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.formfeed()
printer.printstring("---------------")
printer.printstring("POETIC SOFTWARE")
printer.printstring("---------------")
printer.printstring("type help for help")
printer.newline()
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()
# term.list()
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