You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

107 lines
2.7 KiB
Python

import glob
import math
import mimetypes
import os
import subprocess
import urllib
import yaml
from random import choice
3 years ago
import kode256
from base64 import b64encode
from PIL import Image
from bureau import Bureau, add_command, add_api
class Soup(Bureau):
"""
This bureau cooks few texts with xpub's python function recipes .
"""
name = "Canteen of the Screenless Office"
prefix = "SB"
version = 0
3 years ago
input_queue = []
def __init__(self):
Bureau.__init__(self)
@add_command("1sentence", "1 Sentence Game Ideas")
def print_game(self):
"""
Prints one entry from the one sentence game ideas.
"""
onesentencegames = os.path.join(self.mdir, 'onesentenceg.yml')
with open(onesentencegames, 'r') as f:
games = yaml.load(f)
game = choice(games['games'])
self.print_small(game)
@add_command("ptrn", 'Set Pattern')
def print_pattern(self, data):
"""
Prints a pattern composed with A and B characters.
"""
3 years ago
pattern, _ = data.split(".")
self.print_small(pattern)
@add_command('list', 'Return a list of contents')
def list_contents(self):
prn = self._get_small_printer()
3 years ago
contents = []
3 years ago
files = glob.glob(os.path.join(self.mdir, 'contents', '*.txt'))
3 years ago
for file in files:
3 years ago
filename, ext = os.path.basename(file).split('.')
3 years ago
svg = kode256.svg("SBaq." + filename)
encoded_svg = b64encode(svg.encode()).decode()
encoded_data = "data:image/svg+xml;charset=utf-8;base64," + encoded_svg
with open(os.path.join(self.mdir, 'contents', filename + '.txt'), 'r') as f:
text = f.read()
contents.append({
"title": filename,
"barcode": encoded_data,
"content": text
})
self.print_full('files.html', contents=contents)
@add_command('tp', 'Print a short excerpt of a text')
def print_preview(self, data):
filename, _ = data.split(".")
with open(os.path.join(self.mdir, 'contents', filename + '.txt'), 'r') as f:
text = f.read()
self.print_small(filename + '\n' + text[:200] + '...')
3 years ago
3 years ago
@add_command('aq', 'Add a text to the queue')
def add_to_queue(self, data):
filename, _ = data.split(".")
self.input_queue.append(filename)
@add_command('cq', 'clear inputs in the queue')
def clear_q(self):
self.input_queue = []
self.print_small("queue cleared!")
# @add_command('fx', 'execute the chosen function')
# def ex_function
def main():
sb = Soup()
sb.run()
if __name__ == "__main__":
main()