sets
This commit is contained in:
parent
ed96740799
commit
c93cde3c7c
6
serra.go
6
serra.go
@ -13,7 +13,7 @@ func main() {
|
|||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
serra add <card>...
|
serra add <card>...
|
||||||
serra list
|
serra cards
|
||||||
serra sets
|
serra sets
|
||||||
serra update
|
serra update
|
||||||
|
|
||||||
@ -28,8 +28,8 @@ Options:
|
|||||||
serra.Add(args["<card>"].([]string))
|
serra.Add(args["<card>"].([]string))
|
||||||
}
|
}
|
||||||
|
|
||||||
if args["list"].(bool) {
|
if args["cards"].(bool) {
|
||||||
serra.List()
|
serra.Cards()
|
||||||
}
|
}
|
||||||
|
|
||||||
if args["sets"].(bool) {
|
if args["sets"].(bool) {
|
||||||
|
|||||||
@ -9,9 +9,16 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Card struct {
|
type Card struct {
|
||||||
|
// Added by Serra
|
||||||
|
SerraCount int64 `bson:"serra_count"`
|
||||||
|
SerraPrices []PriceEntry `bson:"serra_prices"`
|
||||||
|
SerraUpdated string `bson:"serra_updated"`
|
||||||
|
|
||||||
Artist string `json:"artist"`
|
Artist string `json:"artist"`
|
||||||
ArtistIds []string `json:"artist_ids"`
|
ArtistIds []string `json:"artist_ids"`
|
||||||
Booster bool `json:"booster"`
|
Booster bool `json:"booster"`
|
||||||
@ -109,19 +116,14 @@ type Card struct {
|
|||||||
TypeLine string `json:"type_line"`
|
TypeLine string `json:"type_line"`
|
||||||
URI string `json:"uri"`
|
URI string `json:"uri"`
|
||||||
Variation bool `json:"variation"`
|
Variation bool `json:"variation"`
|
||||||
|
|
||||||
// Added by Serra
|
|
||||||
_count int64 `bson:"_count"`
|
|
||||||
_prices []PriceEntry `bson:"_prices"`
|
|
||||||
_updated string `bson:"_updated"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type PriceEntry struct {
|
type PriceEntry struct {
|
||||||
date string `bson:"date"`
|
Date primitive.DateTime `bson:"date"`
|
||||||
value float64 `bson:"value"`
|
Value float64 `bson:"value"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func fetch(path string) (*Card, error) {
|
func fetch_card(path string) (*Card, error) {
|
||||||
|
|
||||||
// TODO better URL Building...
|
// TODO better URL Building...
|
||||||
resp, err := http.Get(fmt.Sprintf("https://api.scryfall.com/cards/%s/", path))
|
resp, err := http.Get(fmt.Sprintf("https://api.scryfall.com/cards/%s/", path))
|
||||||
@ -148,10 +150,10 @@ func fetch(path string) (*Card, error) {
|
|||||||
err = decoder.Decode(val)
|
err = decoder.Decode(val)
|
||||||
|
|
||||||
// Increase counter
|
// Increase counter
|
||||||
val._count = val._count + 1
|
val.SerraCount = val.SerraCount + 1
|
||||||
|
|
||||||
// Increase Price
|
// Increase Price
|
||||||
val._prices = append(val._prices, PriceEntry{time.Now().Format("2006-01-02 15:04:05"), val.Prices.Eur})
|
val.SerraPrices = append(val.SerraPrices, PriceEntry{primitive.NewDateTimeFromTime(time.Now()), val.Prices.Eur})
|
||||||
|
|
||||||
return val, nil
|
return val, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,7 +21,7 @@ func Add(cards []string) {
|
|||||||
for _, card := range cards {
|
for _, card := range cards {
|
||||||
|
|
||||||
// Fetch card from scryfall
|
// Fetch card from scryfall
|
||||||
c, err := fetch(card)
|
c, err := fetch_card(card)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
LogMessage(fmt.Sprintf("%v", err), "red")
|
LogMessage(fmt.Sprintf("%v", err), "red")
|
||||||
continue
|
continue
|
||||||
@ -36,10 +36,11 @@ func Add(cards []string) {
|
|||||||
|
|
||||||
LogMessage(fmt.Sprintf("\"%s\" (%.2f Eur) added to Collection.", c.Name, c.Prices.Eur), "purple")
|
LogMessage(fmt.Sprintf("\"%s\" (%.2f Eur) added to Collection.", c.Name, c.Prices.Eur), "purple")
|
||||||
}
|
}
|
||||||
|
storage_disconnect(client)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func List() {
|
func Cards() {
|
||||||
LogMessage(fmt.Sprintf("Serra %v\n", version), "green")
|
LogMessage(fmt.Sprintf("Serra %v\n", version), "green")
|
||||||
|
|
||||||
client := storage_connect()
|
client := storage_connect()
|
||||||
@ -48,6 +49,7 @@ func List() {
|
|||||||
for _, card := range cards {
|
for _, card := range cards {
|
||||||
fmt.Printf("%s (%s) %.2f\n", card.Name, card.Set, card.Prices.Eur)
|
fmt.Printf("%s (%s) %.2f\n", card.Name, card.Set, card.Prices.Eur)
|
||||||
}
|
}
|
||||||
|
storage_disconnect(client)
|
||||||
}
|
}
|
||||||
|
|
||||||
func Sets() {
|
func Sets() {
|
||||||
@ -69,5 +71,6 @@ func Sets() {
|
|||||||
for _, set := range sets {
|
for _, set := range sets {
|
||||||
fmt.Printf("* %s (%.2f Eur)\n", set["_id"], set["sum"])
|
fmt.Printf("* %s (%.2f Eur)\n", set["_id"], set["sum"])
|
||||||
}
|
}
|
||||||
|
storage_disconnect(client)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
62
src/serra/sets.go
Normal file
62
src/serra/sets.go
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
package serra
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"log"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Set struct {
|
||||||
|
ArenaCode string `json:"arena_code"`
|
||||||
|
Block string `json:"block"`
|
||||||
|
BlockCode string `json:"block_code"`
|
||||||
|
CardCount int64 `json:"card_count"`
|
||||||
|
Code string `json:"code"`
|
||||||
|
Digital bool `json:"digital"`
|
||||||
|
FoilOnly bool `json:"foil_only"`
|
||||||
|
IconSvgURI string `json:"icon_svg_uri"`
|
||||||
|
ID string `json:"id"`
|
||||||
|
MtgoCode string `json:"mtgo_code"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
NonfoilOnly bool `json:"nonfoil_only"`
|
||||||
|
Object string `json:"object"`
|
||||||
|
PrintedSize int64 `json:"printed_size"`
|
||||||
|
ReleasedAt string `json:"released_at"`
|
||||||
|
ScryfallURI string `json:"scryfall_uri"`
|
||||||
|
SearchURI string `json:"search_uri"`
|
||||||
|
SetType string `json:"set_type"`
|
||||||
|
TcgplayerID int64 `json:"tcgplayer_id"`
|
||||||
|
URI string `json:"uri"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func fetch_set(path string) (*Set, error) {
|
||||||
|
// TODO better URL Building...
|
||||||
|
resp, err := http.Get(fmt.Sprintf("https://api.scryfall.com/sets/%s/", path))
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalln(err)
|
||||||
|
return &Set{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if resp.StatusCode != 200 {
|
||||||
|
err := errors.New(fmt.Sprintf("set: %s not found", path))
|
||||||
|
return &Set{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
//We Read the response body on the line below.
|
||||||
|
body, err := ioutil.ReadAll(resp.Body)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalln(err)
|
||||||
|
return &Set{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
r := bytes.NewReader(body)
|
||||||
|
decoder := json.NewDecoder(r)
|
||||||
|
val := &Set{}
|
||||||
|
err = decoder.Decode(val)
|
||||||
|
|
||||||
|
return val, nil
|
||||||
|
}
|
||||||
@ -24,12 +24,6 @@ func storage_connect() *mongo.Client {
|
|||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// defer func() {
|
|
||||||
// if err := client.Disconnect(context.TODO()); err != nil {
|
|
||||||
// panic(err)
|
|
||||||
// }
|
|
||||||
// }()
|
|
||||||
|
|
||||||
return client
|
return client
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -51,8 +45,6 @@ func storage_find(coll *mongo.Collection) ([]Card, error) {
|
|||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get a list of all returned documents and print them out.
|
|
||||||
// See the mongo.Cursor documentation for more examples of using cursors.
|
|
||||||
var results []Card
|
var results []Card
|
||||||
if err = cursor.All(context.TODO(), &results); err != nil {
|
if err = cursor.All(context.TODO(), &results); err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@ -83,3 +75,10 @@ func storage_aggregate(coll *mongo.Collection, groupstage bson.D) ([]primitive.M
|
|||||||
return results, nil
|
return results, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func storage_disconnect(client *mongo.Client) error {
|
||||||
|
if err := client.Disconnect(context.TODO()); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user