woju
/
rcb
1
0
Fork 0
rcb/templates_koronawirus.py

120 lines
3.0 KiB
Python

#!/usr/bin/env python3
# this is stolen from https://koronawirus.lol
import csv
import pathlib
import random
from .tlib import b, c, d, sh
DATAPATH = (pathlib.Path(__file__).parent
/ 'thirdparty/koronawirus.lol/src/generation-logic/data.tsv')
def load_data():
with open(DATAPATH) as file:
return [[cell for cell in line if cell]
for line in csv.reader(file, delimiter='\t')]
_data = load_data()
TEMPLATE_QUARANTINE = [
'wszystkie osoby przybywające do Polski z ', c(*_data[4]), ' ',
c(*_data[5]),
'',
b(0.25,
'zwolnione z kwarantanny',
[
'zobowiązane do odbycia kwarantanny przez ',
(lambda: str(random.randrange(7, 15))),
' dni',
]),
'.',
]
TEMPLATE_KINDERGARTENS = [
'żłobki i przedszkola są ', c(*_data[25]), '.'
]
TEMPLATE_HOURS = [
'w godzinach ', c(*_data[29]),
' zakupy mogą robić tylko osoby ', c(*_data[30]), '.'
]
TEMPLATE_HOTELS = [
'hotele dostępne są tylko dla ',
c(*_data[0]), ', ',
c(*_data[1]), ', ',
c(*_data[2]), ' oraz ',
c(*_data[3]), '.',
]
TEMPLATE_ORG = [
'obowiązuje zakaz organizacji ',
c(*_data[10]),
' oraz ',
c(*_data[11]),
'.'
]
TEMPLATE_AREA = [
'w ',
c(*_data[26]),
' i ',
c(*_data[27]),
' może przebywać maksymalnie jedna osoba na ',
c(*_data[28]),
' m² pomieszczenia.'
]
TEMPLATE_SCHOOLS = [
'nauka zdalna w klasach ', c(*_data[20]), ' szkół podstawowych, ',
c(*_data[21]), ', oraz ', c(*_data[22]),
', za wyjątkiem ', c(*_data[23]), ' (chyba, że ', c(*_data[24]), ').'
]
TEMPLATE_CLOSED = [
'zamknięte są ', c(*_data[12]), ', ', c(*_data[13]), ' i ', c(*_data[14]),
'. Otwarte zostaną ', c(*_data[15]), ' oraz ', c(*_data[16]),
', ale wyłącznie w ', c(*_data[17]), '.'
]
def TEMPLATE_RESTAURANTS():
yield 'restauracje i bary są '
opened = random.choice(_data[18])
yield opened
if 'zamknięte' not in opened:
yield ', pod warunkiem '
yield c(*_data[19])
yield '.'
def TEMPLATE_MEETINGS():
n = int(random.choice(_data[7]))
v1, v2 = ('mogą', 'osoby') if 2 <= n % 10 <= 4 else ('może', 'osób')
yield from [
'w zgromadzeniach ', v1, ' uczestniczyć maksymalnie ', str(n), ' ', v2,
' (nie dotyczy ', c(*_data[8]), ' oraz ', c(*_data[9]), ').']
def TEMPLATE_BUS_SEATS():
p = int(random.choice(_data[31]))
n = int(60 * p / 100)
yield from [
'w autobusach może być zajęte max. ', str(n),
' miejsc siedzących (lub ', str(p), '% wszystkich miejsc).']
TEMPLATE = [
'Kancelaria Prezesa Rady Ministrów informuje, że od ', d('%e.%m.%Y'), ' r. ',
c(
TEMPLATE_HOTELS,
TEMPLATE_MEETINGS,
TEMPLATE_ORG,
TEMPLATE_AREA,
TEMPLATE_SCHOOLS,
TEMPLATE_CLOSED,
TEMPLATE_QUARANTINE,
TEMPLATE_RESTAURANTS,
TEMPLATE_KINDERGARTENS,
TEMPLATE_HOURS,
TEMPLATE_BUS_SEATS,
),
]