From 0659f3d4d9e71da01bf178cc38bfb80c550ee2b6 Mon Sep 17 00:00:00 2001 From: Alexander Ng Date: Fri, 4 Apr 2025 11:47:09 -0700 Subject: [PATCH] l10, l11, l12 --- L10.json | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ L11.json | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ L12.json | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++ groups.ts | 5 +++ index.ts | 34 +++++++++----------- 5 files changed, 297 insertions(+), 19 deletions(-) create mode 100644 L10.json create mode 100644 L11.json create mode 100644 L12.json create mode 100644 groups.ts diff --git a/L10.json b/L10.json new file mode 100644 index 0000000..ae245b4 --- /dev/null +++ b/L10.json @@ -0,0 +1,93 @@ +[ + { + "group_name": "Nouns", + "words": [ + {"hiragana": "きせつ", "jp": "季節", "en": "season"}, + {"hiragana": "はる", "jp": "春", "en": "spring"}, + {"hiragana": "あき", "jp": "秋", "en": "fall"}, + {"hiragana": "ぎゅうにゅう", "jp": "牛乳", "en": "milk"}, + {"hiragana": "ケーキ", "jp": "", "en": "cake"}, + {"hiragana": "すし", "jp": "", "en": "sushi"}, + {"hiragana": "てんぷら", "jp": "天ぷら", "en": "tempura"}, + {"hiragana": "りんご", "jp": "", "en": "apple"}, + {"hiragana": "りょうり", "jp": "料理", "en": "cuisine"}, + {"hiragana": "サッカー", "jp": "", "en": "soccer"}, + {"hiragana": "やきゅう", "jp": "野球", "en": "baseball"}, + {"hiragana": "いしゃ", "jp": "医者", "en": "doctor"}, + {"hiragana": "おかねもち", "jp": "お金持ち", "en": "rich person"}, + {"hiragana": "ゆうめいじん", "jp": "有名人", "en": "celebrity"}, + {"hiragana": "かお", "jp": "顔", "en": "face"}, + {"hiragana": "としうえ", "jp": "年上", "en": "someone older"}, + {"hiragana": "えき", "jp": "駅", "en": "station"}, + {"hiragana": "しんかんせん", "jp": "新幹線", "en": "Shinkansen; “Bullet Train”"}, + {"hiragana": "ちかてつ", "jp": "地下鉄", "en": "subway"}, + {"hiragana": "ふね", "jp": "船", "en": "ship; boat"}, + {"hiragana": "ひこうき", "jp": "飛行機", "en": "airplane"}, + {"hiragana": "よやく", "jp": "予約", "en": "reservation"}, + {"hiragana": "ツアー", "jp": "", "en": "tour"}, + {"hiragana": "どうぶつえん", "jp": "動物園", "en": "zoo"}, + {"hiragana": "じかん", "jp": "時間", "en": "time"}, + {"hiragana": "せかい", "jp": "世界", "en": "world"}, + {"hiragana": "びよういん", "jp": "美容院", "en": "beauty parlor"}, + {"hiragana": "てぶくろ", "jp": "手袋", "en": "gloves"}, + {"hiragana": "せいかつ", "jp": "生活", "en": "life; living"}, + {"hiragana": "ことし", "jp": "今年", "en": "this year"} + ] + }, + { + "group_name": "い-Adjectives", + "words": [ + {"hiragana": "あたたかい", "jp": "暖かい", "en": "warm"}, + {"hiragana": "すずしい", "jp": "涼しい", "en": "cool (weather—not used for things)"}, + {"hiragana": "つめたい", "jp": "冷たい", "en": "cold (things/people)"}, + {"hiragana": "おそい", "jp": "遅い", "en": "slow; late"}, + {"hiragana": "ねむい", "jp": "眠い", "en": "sleepy"} + ] + }, + { + "group_name": "な-Adjective", + "words": [ + {"hiragana": "かんたん(な)", "jp": "簡単", "en": "easy; simple"} + ] + }, + { + "group_name": "U-Verbs", + "words": [ + {"hiragana": "かかる", "jp": "", "en": "to take (amount of time/money)"}, + {"hiragana": "とまる", "jp": "泊まる", "en": "to stay (at a hotel, etc.)"}, + {"hiragana": "なる", "jp": "", "en": "to become"} + ] + }, + { + "group_name": "Ru-Verbs", + "words": [ + {"hiragana": "きめる", "jp": "決める", "en": "to decide"} + ] + }, + { + "group_name": "Irregular-Verbs", + "words": [ + {"hiragana": "ごろごろする", "jp": "", "en": "to chill out at home; to stay home and do nothing"}, + {"hiragana": "りょこうする", "jp": "旅行する", "en": "to travel"}, + {"hiragana": "れんしゅうする", "jp": "練習する", "en": "to practice"} + ] + }, + { + "group_name": "Adverbs_and_Other_Expressions", + "words": [ + {"hiragana": "いちばん", "jp": "一番", "en": "best"}, + {"hiragana": "どっち/どちら", "jp": "", "en": "which"}, + {"hiragana": "はやく", "jp": "早く/速く", "en": "(do something) early; fast"}, + {"hiragana": "あるいて", "jp": "歩いて", "en": "on foot"}, + {"hiragana": "〜で", "jp": "", "en": "by (means of transportation); with (a tool)"}, + {"hiragana": "どうやって", "jp": "", "en": "how; by what means"}, + {"hiragana": "どのぐらい", "jp": "", "en": "how much; how long"}, + {"hiragana": "〜しゅうかん", "jp": "〜週間", "en": "for . . . weeks"}, + {"hiragana": "〜かげつ", "jp": "〜か月", "en": "for . . . months"}, + {"hiragana": "〜ねん", "jp": "〜年", "en": ". . . years"}, + {"hiragana": "このごろ", "jp": "", "en": "these days"}, + {"hiragana": "〜ご", "jp": "〜後", "en": "in . . . time; after . . ."}, + {"hiragana": "〜か〜", "jp": "", "en": "or"} + ] + } +] diff --git a/L11.json b/L11.json new file mode 100644 index 0000000..da4d892 --- /dev/null +++ b/L11.json @@ -0,0 +1,94 @@ +[ + { + "group_name": "Nouns", + "words": [ + { "hiragana": "がいこく", "jp": "外国", "en": "foreign country" }, + { "hiragana": "オーストラリア", "jp": "", "en": "Australia" }, + { "hiragana": "かわ", "jp": "川", "en": "river" }, + { "hiragana": "おんせん", "jp": "温泉", "en": "spa; hot spring" }, + { "hiragana": "つり", "jp": "", "en": "fishing" }, + { "hiragana": "みずうみ", "jp": "湖", "en": "lake" }, + { "hiragana": "やま", "jp": "山", "en": "mountain" }, + { "hiragana": "キャンプ", "jp": "", "en": "camp" }, + { "hiragana": "ドライブ", "jp": "", "en": "drive" }, + { "hiragana": "じんじゃ", "jp": "神社", "en": "shrine" }, + { "hiragana": "びじゅつかん", "jp": "美術館", "en": "art museum" }, + { "hiragana": "しゃちょう", "jp": "社長", "en": "president of a company" }, + { "hiragana": "かしゅ", "jp": "歌手", "en": "singer" }, + { "hiragana": "ルームメイト", "jp": "", "en": "roommate" }, + { "hiragana": "ホストファミリー", "jp": "", "en": "host family" }, + { "hiragana": "しょうらい", "jp": "将来", "en": "future" }, + { "hiragana": "ゆめ", "jp": "夢", "en": "dream" }, + { "hiragana": "おまつり", "jp": "お祭り", "en": "festival" }, + { "hiragana": "おしょうがつ", "jp": "お正月", "en": "New Year's" }, + { "hiragana": "おかし", "jp": "お菓子", "en": "snack; sweets" }, + { "hiragana": "ビール", "jp": "", "en": "beer" }, + { "hiragana": "おもちゃ", "jp": "", "en": "toy" }, + { "hiragana": "こんがっき", "jp": "今学期", "en": "this semester" }, + { "hiragana": "らいがっき", "jp": "来学期", "en": "next semester" }, + { "hiragana": "じゅぎょう", "jp": "授業", "en": "class" }, + { "hiragana": "こちら", "jp": "", "en": "this person (polite)" } + ] + }, + { + "group_name": "U-Verbs", + "words": [ + { "hiragana": "うそをつく", "jp": "", "en": "to tell a lie" }, + { "hiragana": "おなかがすく", "jp": "", "en": "to become hungry" }, + { "hiragana": "かう", "jp": "飼う", "en": "to own (a pet)(~を)" }, + { "hiragana": "サボる", "jp": "", "en": "to cut (classes)(~を)" }, + { "hiragana": "とる", "jp": "取る", "en": "to take (a class); to get (a grade)(~を)" }, + { "hiragana": "ならう", "jp": "習う", "en": "to learn(~を)" }, + { "hiragana": "のぼる", "jp": "登る", "en": "to climb(place に)" }, + { "hiragana": "はしる", "jp": "走る", "en": "to run" } + ] + }, + { + "group_name": "Ru-Verbs", + "words": [ + { "hiragana": "つかれる", "jp": "疲れる", "en": "to get tired" }, + { "hiragana": "やめる", "jp": "", "en": "to quit(~を)" } + ] + }, + { + "group_name": "Irregular-Verbs", + "words": [ + { "hiragana": "けんかする", "jp": "", "en": "to have a fight; to quarrel" }, + { "hiragana": "しょうかいする", "jp": "紹介する", "en": "to introduce(person に person を)" }, + { "hiragana": "ダイエットする", "jp": "", "en": "to go on a diet" }, + { "hiragana": "ちこくする", "jp": "遅刻する", "en": "to be late (for an appointment)(~に)" }, + { "hiragana": "りゅうがくする", "jp": "留学する", "en": "to study abroad(place に)" } + ] + }, + { + "group_name": "Adverbs_and_Other_Expressions", + "words": [ + { "hiragana": "しゅっしん", "jp": "出身", "en": "coming from(place の)" }, + { "hiragana": "ひさしぶり", "jp": "久しぶり", "en": "it has been a long time" }, + { "hiragana": "まあまあ", "jp": "", "en": "okay; so-so" }, + { "hiragana": "もっと", "jp": "", "en": "more" }, + { "hiragana": "あと", "jp": "後", "en": "after (an event)(event の)" }, + { "hiragana": "そして", "jp": "", "en": "and then" }, + { "hiragana": "~だけ", "jp": "", "en": "just . . . ; only . . ." }, + { "hiragana": "~てん", "jp": "~点", "en": ". . . points" } + ] + }, + { + "group_name": "Occupations", + "words": [ + { "hiragana": "さっか", "jp": "作家", "en": "writer" }, + { "hiragana": "ジャーナリスト", "jp": "", "en": "journalist" }, + { "hiragana": "けいさつかん", "jp": "警察官", "en": "police officer" }, + { "hiragana": "しょうぼうし", "jp": "消防士", "en": "firefighter" }, + { "hiragana": "きょうし", "jp": "教師", "en": "schoolteacher" }, + { "hiragana": "けんきゅうしゃ", "jp": "研究者", "en": "researcher" }, + { "hiragana": "うちゅうひこうし", "jp": "宇宙飛行士", "en": "astronaut" }, + { "hiragana": "スポーツせんしゅ", "jp": "スポーツ選手", "en": "athlete" }, + { "hiragana": "だいとうりょう", "jp": "大統領", "en": "president of a country" }, + { "hiragana": "はいゆう", "jp": "俳優", "en": "actor; actress" }, + { "hiragana": "かんごし", "jp": "看護師", "en": "nurse" }, + { "hiragana": "シェフ", "jp": "", "en": "chef" }, + { "hiragana": "まんがか", "jp": "漫画家", "en": "cartoonist" } + ] + } +] diff --git a/L12.json b/L12.json new file mode 100644 index 0000000..d0ef04e --- /dev/null +++ b/L12.json @@ -0,0 +1,90 @@ +[ + { + "group_name": "Nouns", + "words": [ + { "hiragana": "おなか", "jp": "", "en": "stomach" }, + { "hiragana": "あし", "jp": "足", "en": "leg; foot" }, + { "hiragana": "のど", "jp": "", "en": "throat" }, + { "hiragana": "は", "jp": "歯", "en": "tooth" }, + { "hiragana": "インフルエンザ", "jp": "", "en": "influenza" }, + { "hiragana": "かぜ", "jp": "風邪", "en": "cold" }, + { "hiragana": "せき", "jp": "", "en": "cough" }, + { "hiragana": "ふつかよい", "jp": "二日酔い", "en": "hangover" }, + { "hiragana": "ホームシック", "jp": "", "en": "homesickness" }, + { "hiragana": "アレルギー", "jp": "", "en": "allergy" }, + { "hiragana": "ジュース", "jp": "", "en": "juice" }, + { "hiragana": "たまご", "jp": "卵", "en": "egg" }, + { "hiragana": "ふく", "jp": "服", "en": "clothes" }, + { "hiragana": "もの", "jp": "物", "en": "thing (concrete object)" }, + { "hiragana": "プレゼント", "jp": "", "en": "present" }, + { "hiragana": "きっぷ", "jp": "切符", "en": "train ticket" }, + { "hiragana": "〜だい", "jp": "〜代", "en": "charge; fee" }, + { "hiragana": "ようじ", "jp": "用事", "en": "business to take care of" }, + { "hiragana": "おてあらい", "jp": "お手洗い", "en": "restroom" }, + { "hiragana": "しあい", "jp": "試合", "en": "match; game" }, + { "hiragana": "せいじ", "jp": "政治", "en": "politics" }, + { "hiragana": "せいせき", "jp": "成績", "en": "grade (on a test, etc.)" }, + { "hiragana": "かのじょ", "jp": "彼女", "en": "she; girlfriend" }, + { "hiragana": "かれ", "jp": "彼", "en": "he; boyfriend" }, + { "hiragana": "かれし", "jp": "彼氏", "en": "boyfriend" }, + { "hiragana": "いみ", "jp": "意味", "en": "meaning" } + ] + }, + { + "group_name": "い-Adjectives", + "words": [ + { "hiragana": "せまい", "jp": "狭い", "en": "narrow; not spacious" }, + { "hiragana": "ひろい", "jp": "広い", "en": "wide; spacious" }, + { "hiragana": "わるい", "jp": "悪い", "en": "bad" }, + { "hiragana": "いたい", "jp": "痛い", "en": "hurt; painful" }, + { "hiragana": "あまい", "jp": "甘い", "en": "sweet" }, + { "hiragana": "おおい", "jp": "多い", "en": "there are many..." } + ] + }, + { + "group_name": "な-Adjective", + "words": [ + { "hiragana": "すてき(な)", "jp": "素敵", "en": "nice" } + ] + }, + { + "group_name": "U-Verbs", + "words": [ + { "hiragana": "あるく", "jp": "歩く", "en": "to walk" }, + { "hiragana": "かぜをひく", "jp": "風邪をひく", "en": "to catch a cold" }, + { "hiragana": "ねつがある", "jp": "熱がある", "en": "to have a fever" }, + { "hiragana": "のどがかわく", "jp": "のどが渇く", "en": "to become thirsty" }, + { "hiragana": "はらう", "jp": "払う", "en": "to pay(~を)" }, + { "hiragana": "なくす", "jp": "", "en": "to lose(~を)" }, + { "hiragana": "きょうみがある", "jp": "興味がある", "en": "to be interested (in . . .)(topic に)" } + ] + }, + { + "group_name": "Ru-Verbs", + "words": [ + { "hiragana": "せきがでる", "jp": "せきが出る", "en": "to cough" }, + { "hiragana": "わかれる", "jp": "別れる", "en": "to break up; to separate(person と)" } + ] + }, + { + "group_name": "Irregular-Verbs", + "words": [ + { "hiragana": "きんちょうする", "jp": "緊張する", "en": "to get nervous" }, + { "hiragana": "しんぱいする", "jp": "心配する", "en": "to worry" } + ] + }, + { + "group_name": "Adverbs_and_Other_Expressions", + "words": [ + { "hiragana": "おだいじに", "jp": "お大事に", "en": "Get well soon." }, + { "hiragana": "げんきがない", "jp": "元気がない", "en": "don’t look well" }, + { "hiragana": "できるだけ", "jp": "", "en": "as much as possible" }, + { "hiragana": "たぶん", "jp": "多分", "en": "probably; maybe" }, + { "hiragana": "もうすぐ", "jp": "", "en": "very soon; in a few moments/days" }, + { "hiragana": "はじめて", "jp": "初めて", "en": "for the first time" }, + { "hiragana": "にさんにち", "jp": "二三日", "en": "for two to three days" }, + { "hiragana": "それに", "jp": "", "en": "moreover, . . ." }, + { "hiragana": "おなじ", "jp": "同じ", "en": "same" } + ] + } +] diff --git a/groups.ts b/groups.ts new file mode 100644 index 0000000..455c3ba --- /dev/null +++ b/groups.ts @@ -0,0 +1,5 @@ +import data from "./L10.json"; + +for (const group of data) { + console.log(group.group_name); +} diff --git a/index.ts b/index.ts index 6435f30..50d451d 100644 --- a/index.ts +++ b/index.ts @@ -1,4 +1,4 @@ -import fs from 'fs'; +import vocabList from './L11.json'; import axios from 'axios'; interface VocabEntry { @@ -7,17 +7,13 @@ interface VocabEntry { en: string; } -interface Group { - group_name: string; - words: VocabEntry[]; -} - -const DECK_NAME = 'Japanese::Lesson 10'; -const MODEL_NAME = 'Basic'; // Update this to match your Anki note type -const FIELDS = ['Hiragana', 'Kanji', 'English']; // Update to match your note type fields +const DECK_NAME = 'JAPN 110'; +const MODEL_NAME = 'Basic'; // Make sure this matches your Anki note type +const FIELDS = ['Front', 'Back'] as const; async function addNote(entry: VocabEntry, tags: string[]) { try { + const front = entry.jp.trim() || entry.hiragana.trim(); const result = await axios.post('http://localhost:8765', { action: 'addNote', version: 6, @@ -26,9 +22,8 @@ async function addNote(entry: VocabEntry, tags: string[]) { deckName: DECK_NAME, modelName: MODEL_NAME, fields: { - [FIELDS[0]]: entry.hiragana, - [FIELDS[1]]: entry.jp, - [FIELDS[2]]: entry.en, + [FIELDS[0]]: front, + [FIELDS[1]]: `${entry.hiragana}\n${entry.en}`, }, options: { allowDuplicate: false, @@ -37,20 +32,21 @@ async function addNote(entry: VocabEntry, tags: string[]) { } } }); - console.log(`Added: ${entry.hiragana} - ${entry.en}`, result.data); + if (result?.data?.result === null){ + console.error(`Failed to add: ${front} - ${entry.en}`, result.data.error); + } else { + console.log(`Added: ${front} - ${entry.en}`); + } } catch (error) { - console.error(`Failed to add: ${entry.hiragana} - ${entry.en}`, error); + console.error(`Failed to add: ${entry.jp} - ${entry.en}`, error); } } async function main() { - const raw = fs.readFileSync('./lesson10.json', 'utf-8'); - const vocabList: Group[] = JSON.parse(raw); - for (const group of vocabList) { - const tag = group.group_name.replace(/\s+/g, '_').toLowerCase(); // e.g. "na-adjective" -> "na_adjective" + const tag = "Vocabulary::" + group.group_name; for (const word of group.words) { - await addNote(word, [tag]); + await addNote(word, [tag, "Vocabulary::L11"]); } } }