all repos

anpi @ d5ee330

yaml to anki importer
2 files changed, 47 insertions(+), 17 deletions(-)
impl anki add note
Author: Oleksandr Smirnov olexsmir@gmail.com
Committed at: 2025-04-29 23:28:15 +0300
Parent: a1bddb6
M anki/anki.go
···
        33
        33
         

      
        34
        34
         	return res.Result, nil

      
        35
        35
         }

      
        
        36
        +

      
        
        37
        +type (

      
        
        38
        +	NoteID int

      
        
        39
        +	Note   struct {

      
        
        40
        +		DeckName  string            `json:"deckName"`

      
        
        41
        +		ModelName string            `json:"modelName"`

      
        
        42
        +		Fields    map[string]string `json:"fields"`

      
        
        43
        +	}

      
        
        44
        +

      
        
        45
        +	internalNote struct {

      
        
        46
        +		Note Note `json:"note"`

      
        
        47
        +	}

      
        
        48
        +)

      
        
        49
        +

      
        
        50
        +func (a *AnkiClient) AddNote(deckName, modelName string, fields map[string]string) (NoteID, error) {

      
        
        51
        +	res, err := request[NoteID]("addNote", internalNote{Note{

      
        
        52
        +		DeckName:  deckName,

      
        
        53
        +		ModelName: modelName,

      
        
        54
        +		Fields:    fields,

      
        
        55
        +	}})

      
        
        56
        +	if err != nil {

      
        
        57
        +		return 0, err

      
        
        58
        +	}

      
        
        59
        +

      
        
        60
        +	return res.Result, nil

      
        
        61
        +}

      
M main.go
···
        2
        2
         

      
        3
        3
         import (

      
        4
        4
         	"log/slog"

      
        5
        
        -	"os"

      
        6
        5
         

      
        7
        6
         	"github.com/olexsmir/anpi/anki"

      
        8
        
        -	"github.com/olexsmir/anpi/parser"

      
        9
        7
         )

      
        10
        8
         

      
        11
        9
         func main() {

      
        12
        10
         	anki := anki.NewAnkiClient()

      
        13
        11
         

      
        14
        
        -	decks, err := anki.GetDeckNames()

      
        15
        
        -	slog.Info("test deck names", "fields", decks, "err", err)

      
        16
        
        -

      
        17
        
        -	fields, err := anki.GetModelFieldNames("Basic")

      
        18
        
        -	slog.Info("test existent type", "fields", fields, "err", err)

      
        19
        
        -

      
        20
        
        -	fieldsErr, err := anki.GetModelFieldNames("chicked jokey")

      
        21
        
        -	slog.Info("test non-existent type", "fields", fieldsErr, "err", err)

      
        22
        
        -

      
        23
        
        -	f, _ := os.ReadFile("test.yml")

      
        24
        
        -	data, err := parser.Parse(f)

      
        25
        
        -	slog.Info("parsing data", "err", err)

      
        
        12
        +	nid, err := anki.AddNote("testing", "Basic", map[string]string{

      
        
        13
        +		"Front": "the thing",

      
        
        14
        +		"Back":  "asdfasfasdf",

      
        
        15
        +	})

      
        
        16
        +	slog.Info("note added", "nid", nid, "err", err)

      
        26
        17
         

      
        27
        
        -	lookup := "front"

      
        28
        
        -	ankiField := data[1].FieldLookUp(lookup)

      
        29
        
        -	slog.Info("looking up anki note field", "field", ankiField, "lookup", lookup)

      
        
        18
        +	// decks, err := anki.GetDeckNames()

      
        
        19
        +	// slog.Info("test deck names", "fields", decks, "err", err)

      
        
        20
        +	//

      
        
        21
        +	// fields, err := anki.GetModelFieldNames("Basic")

      
        
        22
        +	// slog.Info("test existent type", "fields", fields, "err", err)

      
        
        23
        +	//

      
        
        24
        +	// fieldsErr, err := anki.GetModelFieldNames("chicked jokey")

      
        
        25
        +	// slog.Info("test non-existent type", "fields", fieldsErr, "err", err)

      
        
        26
        +	//

      
        
        27
        +	// f, _ := os.ReadFile("test.yml")

      
        
        28
        +	// data, err := parser.Parse(f)

      
        
        29
        +	// slog.Info("parsing data", "err", err)

      
        
        30
        +	//

      
        
        31
        +	// lookup := "front"

      
        
        32
        +	// ankiField := data[1].FieldLookUp(lookup)

      
        
        33
        +	// slog.Info("looking up anki note field", "field", ankiField, "lookup", lookup)

      
        30
        34
         

      
        31
        35
         	// for _, deck := range data {

      
        32
        36
         	// 	fmt.Printf("\nDeck: %s\n", deck.Deck)