From 7ad859704d6b7c72ca5e9248263aab8e770399c2 Mon Sep 17 00:00:00 2001 From: Florian Baumann Date: Thu, 14 Mar 2024 09:46:34 +0100 Subject: [PATCH] Add export to tcghome and moxfield --- src/serra/export.go | 63 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/src/serra/export.go b/src/serra/export.go index 974f853..7cfb078 100644 --- a/src/serra/export.go +++ b/src/serra/export.go @@ -1,8 +1,11 @@ package serra import ( + "encoding/csv" "encoding/json" "fmt" + "log" + "os" "github.com/spf13/cobra" ) @@ -38,6 +41,10 @@ var exportCmd = &cobra.Command{ switch format { case "tcgpowertools": exportTCGPowertools(cardList) + case "tcghome": + exportTCGHome(cardList) + case "moxfield": + exportMoxfield(cardList) case "json": exportJson(cardList) } @@ -58,6 +65,62 @@ func exportTCGPowertools(cards []Card) { } } +func exportMoxfield(cards []Card) { + + // Structure + // https://www.moxfield.com/help/importing-collection + + records := [][]string{{ + "Count", "Name", "Edition", "Condition", "Language", "Foil", "Collector Number", "Alter", "Proxy", "Purchase Price"}} + + w := csv.NewWriter(os.Stdout) + + for _, card := range cards { + records = append(records, + []string{fmt.Sprintf("%d", card.SerraCount), card.Name, card.Set, "NM", "English", "FALSE", card.CollectorNumber, "FALSE", "FALSE", ""}) + } + + for _, record := range records { + if err := w.Write(record); err != nil { + log.Fatalln("error writing record to csv:", err) + } + } + + w.Flush() + + if err := w.Error(); err != nil { + log.Fatal(err) + } +} + +func exportTCGHome(cards []Card) { + + // Strucutre + // https://app.tcg-home.com/e686ea62-7078-4f52-bd6f-515e18c7dc6a + + records := [][]string{{ + "amount", "name", "finish", "set", "collector_number", "language", "condition", "scryfall_id", "purchase_price"}} + + w := csv.NewWriter(os.Stdout) + + for _, card := range cards { + records = append(records, + []string{fmt.Sprintf("%d", card.SerraCount), card.Name, "", card.Set, card.CollectorNumber, "English", "EX", card.ID, ""}) + } + + for _, record := range records { + if err := w.Write(record); err != nil { + log.Fatalln("error writing record to csv:", err) + } + } + + w.Flush() + + if err := w.Error(); err != nil { + log.Fatal(err) + } +} + func exportJson(cards []Card) { ehj, _ := json.MarshalIndent(cards, "", " ") fmt.Println(string(ehj))