this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat: continue migrating data

+1 -76
data/lang/en/characters.meaning.tsv data/lang/en/hints/meanings.characters.tsv
data/lang/en/characters.reading.tsv data/lang/en/hints/characters.reading.tsv
data/lang/en/vocabulary.meaning.tsv data/lang/en/hints/meanings.vocabulary.tsv
data/lang/en/vocabulary.reading.tsv data/lang/en/hints/vocabulary.reading.tsv
data/lang/es/characters.meaning.tsv data/lang/es/hints/characters.meaning.tsv
data/lang/es/characters.reading.tsv data/lang/es/hints/characters.reading.tsv
data/lang/es/vocabulary.meaning.tsv data/lang/es/hints/vocabulary.meaning.tsv
data/lang/es/vocabulary.reading.tsv data/lang/es/hints/vocabulary.reading.tsv
data/lang/ja/meanings.characters.tsv data/lang/en/meanings/characters.ja.tsv
+1 -1
data/lang/ja/meanings.vocabulary.tsv data/lang/en/meanings/vocabulary.ja.tsv
··· 11 11 v-00010 March 12 12 v-00011 entrance;entry;gate;approach;mouth 13 13 v-00012 exit;gateway;way out 14 - v-00015 input;(data) entry 14 + v-00015 input;data entry 15 15 v-00016 garden which contains an artificial hill and a pond 16 16 v-00017 workman;craftsman;laborer;labourer;artisan 17 17 v-00018 taking up a lot of space
-75
data/scripts/rename_audio.ts
··· 1 - /** 2 - * Script to rename existing audio files from old numeric-id format to new string-id format. 3 - * 4 - * Old format: 00001_zh-CN_zh-CN-XiaoxiaoNeural.mp3 (v2 numeric id, zero-padded to 5 digits) 5 - * New format: c-00001_zh-CN_zh-CN-XiaoxiaoNeural.mp3 (new string id) 6 - * 7 - * Run from repo root: deno run -A data/scripts/6_rename_audio.ts 8 - */ 9 - import { join } from '@std/path' 10 - import { readDict } from './utils/fs.ts' 11 - 12 - const AUDIO_ROOT = 'www/static/gen/audio' 13 - const LOCALES = ['zh_CN', 'zh_HK', 'zh_TW'] 14 - 15 - // Build a map from old v2 numeric id → new string id, covering both characters and vocabulary 16 - const v2ToNewId = new Map<number, string>() 17 - 18 - for (const path of ['lang/characters.tsv', 'lang/vocabulary.tsv']) { 19 - for (const { id, v2 } of readDict(path)) { 20 - if (v2 != null) v2ToNewId.set(v2, id) 21 - } 22 - } 23 - 24 - let renamed = 0 25 - let skipped = 0 26 - 27 - for (const locale of LOCALES) { 28 - const dir = join(AUDIO_ROOT, locale) 29 - 30 - let entries: Deno.DirEntry[] 31 - try { 32 - entries = Array.from(Deno.readDirSync(dir)) 33 - } catch { 34 - console.warn(`Skipping ${dir} (not found)`) 35 - continue 36 - } 37 - 38 - for (const entry of entries) { 39 - if (!entry.name.endsWith('.mp3')) continue 40 - 41 - // Old format: "00001_zh-CN_zh-CN-XiaoxiaoNeural.mp3" 42 - // New format already: "c-00001_zh-CN_..." — skip if already renamed 43 - if (/^[cv]-\d{5}_/.test(entry.name)) { 44 - skipped++ 45 - continue 46 - } 47 - 48 - // Parse the old numeric id from the filename 49 - const oldNumStr = entry.name.split('_')[0] 50 - const oldNum = parseInt(oldNumStr, 10) 51 - if (isNaN(oldNum)) { 52 - console.warn(`Unrecognized filename, skipping: ${entry.name}`) 53 - skipped++ 54 - continue 55 - } 56 - 57 - const newId = v2ToNewId.get(oldNum) 58 - if (!newId) { 59 - console.warn(`No mapping found for v2=${oldNum} (${entry.name}), skipping`) 60 - skipped++ 61 - continue 62 - } 63 - 64 - // Replace just the leading numeric prefix with the new string id 65 - const newName = entry.name.replace(oldNumStr, newId) 66 - const oldPath = join(dir, entry.name) 67 - const newPath = join(dir, newName) 68 - 69 - Deno.renameSync(oldPath, newPath) 70 - console.log(` ${entry.name} → ${newName}`) 71 - renamed++ 72 - } 73 - } 74 - 75 - console.log(`\nDone. Renamed: ${renamed}, Skipped: ${skipped}`)