diff options
| author | David Schlachter <t480-debian-git@schlachter.ca> | 2026-01-08 11:22:29 -0500 |
|---|---|---|
| committer | David Schlachter <t480-debian-git@schlachter.ca> | 2026-01-08 11:22:29 -0500 |
| commit | c540abdd1d1465227e9b6b387570ee5a4d267bf4 (patch) | |
| tree | 4f16e9caafa0a5c1f1432d0c628358f1314a5814 | |
| parent | 63c3a174827aa431237e80bb210166dcd0e186dc (diff) | |
Make API url configurable
| -rw-r--r-- | README.md | 12 | ||||
| -rw-r--r-- | add.go | 2 | ||||
| -rw-r--r-- | main.go | 7 | ||||
| -rw-r--r-- | ui.go | 6 |
4 files changed, 14 insertions, 13 deletions
@@ -22,19 +22,21 @@ go run . -rawDictionary=raw-wiktextract-data.jsonl -deck="Français" -model="Bas ``` Usage of french-wiktionary-flashcards: + -apiURL string + Base URL to access the anki-connect plugin API. (default + "http://localhost:8765") -deck string - Name of the deck where new Anki cards will be created. + Name of the deck where new Anki cards will be created. -dictionary string - Path to the parsed dictionary data. This will be generated + Path to the parsed dictionary data. This will be generated from rawDictionary. (default "dictionary.sqlite3") -model string - Name of the card type ('model') for new Anki cards. + Name of the card type ('model') for new Anki cards. -rawDictionary string - Path to the raw wiktionary data. You can get this by + Path to the raw wiktionary data. You can get this by downloading and unzipping https://kaikki.org/frwiktionary/raw-wiktextract-data.jsonl.gz (for French). (default "raw-wiktextract-data.jsonl") - ``` # TODO @@ -41,7 +41,7 @@ type options struct { DuplicateScope string `json:"duplicateScope"` } -func addCard(c *http.Client, deckName, modelName, front, back string) tea.Cmd { +func addCard(c *http.Client, apiURL, deckName, modelName, front, back string) tea.Cmd { return func() tea.Msg { if back == "" { return errMsg(errors.New("definition is blank")) @@ -13,15 +13,12 @@ import ( _ "github.com/mattn/go-sqlite3" ) -const ( - apiURL = "http://localhost:8765" -) - func main() { rawDict := flag.String("rawDictionary", "raw-wiktextract-data.jsonl", "Path to the raw wiktionary data. You can get this by downloading and unzipping https://kaikki.org/frwiktionary/raw-wiktextract-data.jsonl.gz (for French).") dict := flag.String("dictionary", "dictionary.sqlite3", "Path to the parsed dictionary data. This will be generated from rawDictionary.") deckName := flag.String("deck", "", "Name of the deck where new Anki cards will be created.") modelName := flag.String("model", "", "Name of the card type ('model') for new Anki cards.") + apiURL := flag.String("apiURL", "http://localhost:8765", "Base URL to access the anki-connect plugin API.") flag.Parse() @@ -52,7 +49,7 @@ func main() { c := http.DefaultClient c.Timeout = 5 * time.Second - p := tea.NewProgram(initialModel(c, db, *deckName, *modelName)) + p := tea.NewProgram(initialModel(c, db, *apiURL, *deckName, *modelName)) if _, err := p.Run(); err != nil { log.Fatalf("Unexpected error encountered while running program: %s", err) } @@ -27,6 +27,7 @@ type model struct { vp viewport.Model ankiDeck string ankiModel string + apiURL string } type ( @@ -35,7 +36,7 @@ type ( wordAddedMsg string ) -func initialModel(c *http.Client, db *sql.DB, ankiDeck, ankiModel string) model { +func initialModel(c *http.Client, db *sql.DB, apiURL, ankiDeck, ankiModel string) model { ti := textinput.New() ti.Placeholder = "" ti.Focus() @@ -53,6 +54,7 @@ func initialModel(c *http.Client, db *sql.DB, ankiDeck, ankiModel string) model vp: vp, ankiDeck: ankiDeck, ankiModel: ankiModel, + apiURL: apiURL, } } @@ -109,7 +111,7 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { m.wordInput.SetValue("") m.vp.SetContent("") case tea.KeyEnter: - return m, addCard(m.c, m.ankiDeck, m.ankiModel, m.currentWord, m.currentDefinition) + return m, addCard(m.c, m.apiURL, m.ankiDeck, m.ankiModel, m.currentWord, m.currentDefinition) } case errMsg: |
