Initial commit

This commit is contained in:
Midgard 2020-10-16 15:41:22 +02:00
commit 3091d4759b
Signed by: midgard
GPG Key ID: 511C112F1331BBB4
8 changed files with 4881 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
venv/

4
download_html.sh Executable file
View File

@ -0,0 +1,4 @@
#!/usr/bin/env sh
wget https://www.lekkervanbijons.be/groenten/seizoenskalender-groenten -O seizoenskalender-groenten.html
wget https://www.lekkervanbijons.be/fruit/seizoenskalender-fruit -O seizoenskalender-fruit.html

16
fruit.json Normal file
View File

@ -0,0 +1,16 @@
{
"Aardbei": [1, 1, 2, 3, 3, 3, 3, 3, 3, 2, 2, 1],
"Appel": [3, 3, 3, 3, 3, 3, 2, 2, 3, 3, 3, 3],
"Blauwe bes": [0, 0, 0, 1, 2, 3, 3, 2, 2, 2, 0, 0],
"Braambes": [0, 0, 0, 1, 2, 3, 3, 3, 2, 2, 2, 1],
"Cassisbes": [0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0],
"Framboos": [0, 0, 0, 1, 2, 3, 3, 3, 2, 2, 1, 0],
"Kers": [0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0],
"Kiwibes": [0, 0, 0, 0, 0, 0, 0, 1, 3, 2, 0, 0],
"Kweepeer": [2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2],
"Peer": [3, 3, 3, 2, 2, 2, 1, 1, 3, 3, 3, 3],
"Pruim": [0, 0, 0, 0, 0, 0, 3, 3, 2, 1, 0, 0],
"Rode bes": [0, 0, 0, 0, 0, 2, 3, 3, 2, 1, 1, 0],
"Stekelbes": [0, 0, 0, 0, 1, 1, 3, 3, 1, 0, 0, 0],
"Veenbes": [0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2]
}

59
groenten.json Normal file
View File

@ -0,0 +1,59 @@
{
"Aardpeer": [2, 2, 1, 1, 0, 0, 0, 0, 0, 1, 2, 3],
"Ajuin": [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
"Andijvie": [0, 0, 1, 2, 2, 2, 2, 2, 3, 3, 2, 1],
"Artisjok": [0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0],
"Asperge (groen)": [0, 0, 0, 2, 3, 2, 1, 0, 0, 0, 0, 0],
"Asperge (wit)": [0, 1, 2, 2, 3, 2, 1, 0, 0, 0, 0, 0],
"Aubergine": [0, 1, 1, 2, 3, 3, 3, 2, 2, 1, 1, 0],
"Augurk": [0, 0, 0, 1, 2, 2, 3, 3, 3, 2, 0, 0],
"Bloemkool": [1, 1, 1, 1, 2, 3, 2, 2, 3, 2, 1, 1],
"Boerenkool": [3, 3, 2, 0, 0, 0, 0, 0, 1, 2, 2, 2],
"Boontjes": [0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0],
"Broccoli": [0, 0, 0, 0, 1, 2, 2, 2, 3, 2, 1, 1],
"Broccolini": [0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0],
"Champignon": [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3],
"Chinese kool": [2, 2, 2, 1, 2, 1, 1, 1, 2, 2, 2, 2],
"Courgette": [0, 0, 1, 1, 2, 3, 3, 3, 3, 2, 1, 0],
"Erwtjes": [0, 0, 0, 0, 1, 3, 2, 1, 0, 0, 0, 0],
"Friseline": [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
"Groene boontjes": [0, 0, 1, 1, 2, 2, 3, 3, 2, 1, 0, 0],
"Knolselder": [3, 3, 3, 3, 3, 3, 2, 1, 2, 2, 3, 3],
"Komkommer": [1, 1, 2, 3, 3, 3, 3, 3, 2, 1, 1, 1],
"Koolrabi": [0, 0, 0, 0, 1, 2, 2, 2, 3, 3, 3, 1],
"Krulandijvie": [0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2],
"Lente-uitjes": [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
"Oesterzwam": [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3],
"Paksoi": [1, 1, 2, 2, 3, 3, 3, 3, 3, 3, 2, 2],
"Paprika": [0, 0, 1, 2, 2, 3, 3, 3, 2, 1, 0, 0],
"Pastinaak": [3, 3, 3, 2, 1, 0, 0, 1, 1, 2, 3, 3],
"Peterselie": [1, 1, 1, 1, 2, 3, 3, 3, 3, 3, 2, 2],
"Pompoen": [1, 1, 1, 2, 2, 2, 1, 1, 3, 3, 3, 2],
"Postelein": [0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0],
"Prei": [3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3],
"Raap": [3, 3, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3],
"Rabarber": [0, 1, 1, 2, 3, 3, 3, 2, 1, 1, 0, 0],
"Radicchio Rosso": [0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0],
"Radijsjes": [1, 1, 2, 2, 3, 3, 2, 2, 2, 2, 2, 2],
"Rammenas": [3, 2, 2, 1, 1, 1, 1, 0, 1, 3, 3, 3],
"Rode biet": [3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 3],
"Rode kool": [3, 3, 3, 3, 1, 1, 1, 1, 2, 3, 3, 3],
"Savooikool": [3, 3, 2, 1, 1, 1, 1, 2, 3, 3, 3, 3],
"Schorseneren": [3, 3, 2, 1, 0, 0, 0, 0, 2, 3, 3, 3],
"Selder": [1, 0, 0, 1, 2, 3, 3, 3, 3, 3, 2, 1],
"Shii-take": [2, 2, 2, 2, 2, 1, 1, 1, 2, 3, 3, 3],
"Sjalot": [2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2],
"Sla": [2, 2, 3, 3, 3, 2, 2, 2, 2, 2, 3, 3],
"Spinazie": [1, 1, 1, 2, 3, 3, 2, 2, 3, 3, 2, 1],
"Spitskool": [1, 1, 0, 0, 2, 2, 1, 1, 2, 2, 1, 1],
"Spruitjes": [3, 3, 2, 1, 0, 0, 0, 1, 2, 3, 3, 3],
"Tomaat": [1, 1, 2, 2, 3, 3, 3, 3, 3, 3, 1, 1],
"Tuinkers": [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
"Venkel": [0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 1, 0],
"Warmoes / snijbiet": [0, 0, 0, 0, 1, 2, 2, 2, 2, 1, 0, 0],
"Waterkers": [3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3],
"Witloof": [3, 3, 3, 2, 2, 1, 1, 1, 2, 3, 3, 3],
"Witte kool": [3, 3, 2, 2, 1, 2, 1, 1, 3, 3, 3, 3],
"Wortelen": [1, 1, 0, 1, 2, 3, 3, 3, 3, 3, 2, 1],
"Zoete aardappel": [3, 3, 3, 2, 0, 0, 0, 0, 0, 1, 2, 3]
}

55
html_to_json.py Executable file
View File

@ -0,0 +1,55 @@
#!/usr/bin/env python3
from bs4 import BeautifulSoup
import json
LEVELS = ["", "light", "normal", "dark"]
def level_from_classes(classes):
for class_ in classes:
try:
return LEVELS.index(class_)
except ValueError:
pass
# Site likes to mess with us: class="active normal" is the same as class="active"
if "active" in classes:
return LEVELS.index("normal")
return 0
def from_tr(tr):
name = tr.find(class_="productcalendar__product").a.text
month_tds = tr.find_all("td")[2:]
months = [level_from_classes(td.get("class", "")) for td in month_tds]
assert len(months) == 12
return name, months
def calendar_from_soup(soup):
return {
name: months
for name, months
in map(from_tr, soup.find(class_="productcalendar")("tr"))
}
def html_to_json(fname_in, fname_out):
with open(fname_in) as f_in:
soup = BeautifulSoup(f_in, "html.parser")
with open(fname_out, "w") as f_out:
json.dump(calendar_from_soup(soup), f_out)
def main():
html_to_json("./seizoenskalender-groenten.html", "./groenten.json")
html_to_json("./seizoenskalender-fruit.html", "./fruit.json")
if __name__ == '__main__':
main()

1
requirements.txt Normal file
View File

@ -0,0 +1 @@
beautifulsoup4==4.9.3

1356
seizoenskalender-fruit.html Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long