48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
|
import machine
|
||
|
import sdcard
|
||
|
import uos
|
||
|
import random
|
||
|
|
||
|
class Storage:
|
||
|
def __init__(self):
|
||
|
self.cs = machine.Pin(17, machine.Pin.OUT)
|
||
|
self.spi = machine.SPI(0,
|
||
|
baudrate=1000000,
|
||
|
polarity=0,
|
||
|
phase=0,
|
||
|
bits=8,
|
||
|
firstbit=machine.SPI.MSB,
|
||
|
sck=machine.Pin(18),
|
||
|
mosi=machine.Pin(19),
|
||
|
miso=machine.Pin(16))
|
||
|
self.sd = None
|
||
|
self.vfs = None
|
||
|
self.sd_path = "/sd"
|
||
|
def mount(self):
|
||
|
self.sd = sdcard.SDCard(self.spi, self.cs)
|
||
|
self.vfs = uos.VfsFat(self.sd)
|
||
|
uos.mount(self.vfs, self.sd_path)
|
||
|
def umount(self):
|
||
|
uos.umount(self.sd_path)
|
||
|
def get_root_path(self):
|
||
|
return self.sd_path
|
||
|
|
||
|
|
||
|
def load_joke(root):
|
||
|
filename = root + "/jokes.json"
|
||
|
num_lines = sum(1 for line in open(filename))
|
||
|
with open(filename, mode="r") as f:
|
||
|
joke = None
|
||
|
start_pattern = "\"joke\": \""
|
||
|
end_pattern = "\""
|
||
|
for i in range(random.randrange(num_lines)):
|
||
|
line = f.readline()
|
||
|
for i in range(10):
|
||
|
line = f.readline()
|
||
|
joke_start = line.find(start_pattern)
|
||
|
joke_end = line.rfind(end_pattern)
|
||
|
if joke_start >= 0 and joke_end >= 0:
|
||
|
joke = line[joke_start+len(start_pattern):joke_end]
|
||
|
return joke
|
||
|
return None
|