Teletekst 101 – scripts

teletekstdownload.sh

#!/bin/bash
wget "https://teletekst-data.nos.nl/webplus?p=101" -O /home/pi/teletekst/teletekst.download

teletekstextractie.sh

#!/bin/bash
start_tag="span class=\"cyan \""
end_tag="/span"
awk -F'[<>]' -v taga="$start_tag" -v tagb="$end_tag" '{ i=1; while (i<=NF) { if ($(i)==taga && $(i+2)==tagb) { print $(i+1) }; i++} }'

Vergeet niet om de twee bash-scripts  uitvoerbaar te maken met chmod +x

teletekst2epaper.py

#!/usr/bin/python
# Dit is voor Python 2

# Open het bestand met read-only
f = open('teletekst.txt', "r")

# De variabele "lines" is een lijst met alle regels in het bestand
lines = f.readlines()
# Sluit het bestand weer
f.close()

# Voorbereidingen om de regels in het e-paper scherm te zetten
import epd2in13
import time
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont

epd = epd2in13.EPD()
epd.init(epd.lut_full_update)

image = Image.new('1', (epd2in13.EPD_HEIGHT, epd2in13.EPD_WIDTH), 255) 
draw = ImageDraw.Draw(image)
font = ImageFont.truetype('/usr/share/fonts/truetype/freefont/FreeSans.ttf', 12)

#Plaats de regels vanuit de lijst op het scherm
draw.text((50, 0), 'Bron: TELETEKST', font = font, fill = 0)
draw.text((12, 12), (lines [0]), font = font, fill = 0)
draw.text((12, 24), (lines [1]), font = font, fill = 0)
draw.text((12, 36), (lines [2]), font = font, fill = 0)
draw.text((12, 48), (lines [3]), font = font, fill = 0)
draw.text((12, 60), (lines [4]), font = font, fill = 0)
draw.text((12, 72), (lines [5]), font = font, fill = 0)
draw.text((12, 84), (lines [6]), font = font, fill = 0)
draw.text((12, 96), (lines [7]), font = font, fill = 0)
draw.text((12, 108), (lines [8]), font = font, fill = 0)

epd.clear_frame_memory(0xFF)
epd.set_frame_memory(image.transpose(Image.ROTATE_90), 0, 0)
epd.display_frame()

Als alles goed werkt, zetten we de commando’s om de drie scripts na elkaar te starten in een extra bash-script.
We noemen het
teletekststart.sh

#!/bin/bash
cd /home/pi/teletekst/
./teletekstdownload.sh 
# 10 seconden pauze om de download tijd te gunnen
sleep 10
./teletekstextractie.sh < teletekst.download > teletekst.txt
# 5 seconden pauze
sleep 5
python teletekst2epaper.py
cd /

Vergeet niet om dit script net als de andere bash-scripts uitvoerbaar te maken met

sudo chmod +x teletekststart.sh

Om het hele proces elk half uur van 07:00 u tot 23:00 u uit te voeren (met log)  kun je onderstaande regels onderin crontab toevoegen via crontab -e.

0 7-23 * * * /home/pi/teletekst/teletekststart.sh > /home/pi/teletekst/teletekst.log 2>&1
30 7-22 * * * /home/pi/teletekst/teletekststart.sh > /home/pi/teletekst/teletekst.log 2>&1