Source code for maidchan.japanese

# -*- coding: utf-8 -*-
import unicodecsv as csv
from random import randint

KANJI_FILENAMES = {
    1: "data/japanese_kanji_N1.csv",
    2: "data/japanese_kanji_N2.csv",
    3: "data/japanese_kanji_N3.csv",
    4: "data/japanese_kanji_N4.csv"
}

# TODO: Calculate total records on initialization
KANJI_TOTAL_RECORDS = {
    1: 1150,
    2: 739,
    3: 165,
    4: 80
}

VOCABULARY_FILENAME = "data/japanese_vocabulary_N1-4.csv"
VOCABULARY_TOTAL_RECORDS = 7539

KANJI_FIELDS = [
    "kanji",
    "on",
    "kun",
    "meaning"
]

VOCABULARY_FIELDS = [
    "vocabulary",
    "kanji",
    "meaning"
]


[docs]def get_kanji(level, current_pos=1): """ get_kanji returns a single record of the current_pos line position level: 1 - 4 (N1 to N4) current_pos: up to number of records """ kanji = {} with open(KANJI_FILENAMES[level], 'rb') as fobj: reader = csv.reader(fobj, delimiter=',', encoding='utf-8') num_of_lines = 0 for line in reader: num_of_lines += 1 if num_of_lines == current_pos: kanji = dict(list(zip(KANJI_FIELDS, line))) break return kanji
[docs]def get_vocabulary(current_pos=1): """ get_vocabulary returns a single record of the current_pos line position current_pos: up to number of records """ vocabulary = {} with open(VOCABULARY_FILENAME, 'rb') as fobj: reader = csv.reader(fobj, delimiter=',', encoding='utf-8') num_of_lines = 0 for line in reader: num_of_lines += 1 if num_of_lines == current_pos: vocabulary = dict(list(zip(VOCABULARY_FIELDS, line))) break return vocabulary
def get_random_kanji(level): kanji_pos = randint(1, KANJI_TOTAL_RECORDS[level]) return get_kanji(level, kanji_pos) def get_random_vocabulary(): vocab_pos = randint(1, VOCABULARY_TOTAL_RECORDS) return get_vocabulary(vocab_pos)
[docs]def get_japanese_message(kanji, vocab): message = "Welcome to Maid-chan's Daily Japanese lesson!\n\n" message += "Today Kanji is {}\nOn: {}\nKun: {}\nMeaning: {}\n\n".format( kanji["kanji"], kanji["on"], kanji["kun"], kanji["meaning"] ) message += "----------\n\n" message += "Today Vocabulary is {}\nKanji: {}\nMeaning: {}\n\n".format( vocab["vocabulary"], vocab["kanji"], vocab["meaning"] ) message += "See you tomorrow in the same section! <3" return message