#!/usr/bin/env python3

# SPDX-License-Identifier: WTFPL

import random

# disable: 0, enable: 1, random: random.randint(0, 1)
use_kind = 1
use_nr = random.randint(0, 1)
use_spec = 1
use_rmks = 1

verbose = 1
sep = "｜"

vkind = "[#種類]" if verbose else ""
kind_len = 2

vchar = "[#字数]" if verbose else "" # ※本文の文字数とは無関係
min_char = 10
max_char = 999
chars = random.randint(min_char, max_char)

vnr = "[#番号]" if verbose else ""
min_nr = 0
max_nr = 9999

vsrc = "[#発信局]" if verbose else ""
vdest = "[#名あて]" if verbose else ""
min_name = 8
max_name = 24

vtime = "[#受付時刻]" if verbose else ""
ampm = "コ" if random.randint(0, 1) else "セ"
hour = random.randint(0, 11)
minute = random.randint(0, 59)

vspec = "[#特別取扱]" if verbose else ""
spec_len = 2

vrmks = "[#局内心得]" if verbose else ""
rmks_len = 2

kana_str = ("アイウエオカキクケコサシスセソタチツテトナニヌネノ"
            "ハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン")
kana_str2 = "ガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポー"
num_str = "０１２３４５６７８９」"

kana_all = kana_str + kana_str2
kana_num = kana_all + num_str


def random_string(table, length):
    out = ""
    for i in range(0, length):
        if i and not (i % 5):
            out += sep
        out += random.choice(table)

    return out


def val2zenkaku(val):
    out = ""
    for i in str(val):
        out += num_str[int(i)]
    return out


def main():
    kind = f"{vkind}{random_string(kana_str, kind_len)}{sep}" if use_kind else ""
    char = f"{vchar}{val2zenkaku(chars)}{sep}"
    
    if use_nr:
        nr = (f"{vsrc}ハツ{val2zenkaku(random.randint(min_nr, max_nr))}{sep}"
              f"{vnr}タナ{val2zenkaku(random.randint(min_nr, max_nr))}")
    else:
        nr = (f"{vsrc}{random_string(kana_all, random.randint(min_name, max_name))}"
              f"{vnr}{sep}{val2zenkaku(random.randint(min_nr, max_nr))}")

    hrmin = f"<イロ>{vtime}{{{ampm}{val2zenkaku(hour)}<イロ>{val2zenkaku(minute)}}}"
    spec = f"<ホホ>{vspec}{random_string(kana_str, spec_len)}" if use_spec else ""
    rmks = f"<ウウ>{vrmks}{random_string(kana_str, rmks_len)}" if use_rmks else ""
    dest = f"<イロ>{vdest}{random_string(kana_num, random.randint(min_name, max_name))}"

    print(f"hr hr <イロ>{kind}{char}{nr}{hrmin}{spec}{rmks}{dest}<ホレ>")


if __name__ == "__main__":
    main()
