Skip to content

Commit 471730e

Browse files
Migrate to github.com/RedSkiesReaperr/howlongtobeat package
* Migrate to RedSkiesReaperr/howlongtobeat package * Updated hltb to v0.1.1 & Added chromium
1 parent 51239fa commit 471730e

File tree

10 files changed

+61
-173
lines changed

10 files changed

+61
-173
lines changed

Dockerfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ RUN make docker
1212
# Release stage
1313
FROM alpine:3.18
1414

15+
RUN apk update && apk add --no-cache chromium
16+
1517
WORKDIR /bin
1618
COPY --from=build /usr/local/bin/igdb-app /bin/igdb-app
1719
RUN touch .env

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ Thanks to all the authors who created and maintains the following packages:
142142
- [google/uuid](https://github.com/google/uuid)
143143
- [jomei/notionapi](https://github.com/jomei/notionapi)
144144
- [spf13/viper](https://github.com/spf13/viper)
145+
- [RedSkiesReaperr/howlongtobeat](https://github.com/RedSkiesReaperr/howlongtobeat)
145146

146147
## Contributing
147148
If you wish to contribute to this project, please follow these steps:

core/core.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ import (
44
"fmt"
55
"log"
66
"notion-igdb-autocomplete/config"
7-
"notion-igdb-autocomplete/howlongtobeat"
87
"notion-igdb-autocomplete/igdb"
98
"notion-igdb-autocomplete/notion"
109
"time"
1110

11+
"github.com/RedSkiesReaperr/howlongtobeat"
1212
"github.com/jomei/notionapi"
1313
)
1414

core/initialize.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@ package core
33
import (
44
"fmt"
55
"log"
6-
"notion-igdb-autocomplete/howlongtobeat"
6+
77
"notion-igdb-autocomplete/igdb"
88
"notion-igdb-autocomplete/notion"
9+
10+
"github.com/RedSkiesReaperr/howlongtobeat"
911
)
1012

1113
func (c *Core) initializeNotion() error {
@@ -41,8 +43,12 @@ func (c *Core) initializeIGDB() error {
4143
func (c *Core) initializeHLTB() error {
4244
log.Println("Initializing HowLongToBeat client")
4345
log.Println(".... Creating")
44-
client := howlongtobeat.NewClient()
45-
c.hltb = &client
46+
client, err := howlongtobeat.New()
47+
if err != nil {
48+
return fmt.Errorf("create failed: %v", err)
49+
}
50+
51+
c.hltb = client
4652

4753
log.Println(".... Success!")
4854
return nil

core/task.go

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,13 @@ import (
44
"fmt"
55
"log"
66
"notion-igdb-autocomplete/choose"
7-
"notion-igdb-autocomplete/howlongtobeat"
7+
hltb "notion-igdb-autocomplete/howlongtobeat"
88
"notion-igdb-autocomplete/igdb"
99
"notion-igdb-autocomplete/notion"
1010
"strings"
1111
"time"
1212

13+
"github.com/RedSkiesReaperr/howlongtobeat"
1314
"github.com/google/uuid"
1415
)
1516

@@ -139,19 +140,25 @@ func (t *Task) runGameInfos(notionClient *notion.Client, igdbClient *igdb.Client
139140
}
140141

141142
func (t *Task) runTimeToBeat(notionClient *notion.Client, hltbClient *howlongtobeat.Client) error {
143+
req, err := howlongtobeat.NewSearchRequest(t.Query)
144+
if err != nil {
145+
return err
146+
}
147+
142148
// Fetch
143-
games, err := hltbClient.SearchGame(t.Query)
149+
response, err := hltbClient.Search(req)
144150
if err != nil {
145151
return err
146152
}
147153

148154
foundGame := &howlongtobeat.Game{Name: fmt.Sprintf("Not found (%s)", t.Query), CompletionMain: 0, CompletionPlus: 0, CompletionFull: 0}
149-
if len(games) > 0 {
150-
foundGame = &games[0]
155+
if len(response.Data) > 0 {
156+
foundGame = &response.Data[0]
151157
}
152158

153159
// Update
154-
_, err = notionClient.Page(t.NotionId).Update(foundGame)
160+
wrappedGame := hltb.GameWrapper{Game: foundGame}
161+
_, err = notionClient.Page(t.NotionId).Update(wrappedGame)
155162
if err != nil {
156163
return err
157164
}

go.mod

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ module notion-igdb-autocomplete
33
go 1.21.1
44

55
require (
6+
github.com/RedSkiesReaperr/howlongtobeat v0.1.1
67
github.com/agnivade/levenshtein v1.1.1
78
github.com/charmbracelet/bubbles v0.17.1
89
github.com/charmbracelet/bubbletea v0.25.0
910
github.com/charmbracelet/lipgloss v0.9.1
10-
github.com/corpix/uarand v0.2.0
1111
github.com/fsnotify/fsnotify v1.7.0
1212
github.com/google/uuid v1.6.0
1313
github.com/jomei/notionapi v1.12.9
@@ -18,6 +18,8 @@ require (
1818
github.com/atotto/clipboard v0.1.4 // indirect
1919
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
2020
github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 // indirect
21+
github.com/corpix/uarand v0.2.0 // indirect
22+
github.com/go-rod/rod v0.116.2 // indirect
2123
github.com/hashicorp/hcl v1.0.0 // indirect
2224
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
2325
github.com/magiconair/properties v1.8.7 // indirect
@@ -38,6 +40,11 @@ require (
3840
github.com/spf13/cast v1.6.0 // indirect
3941
github.com/spf13/pflag v1.0.5 // indirect
4042
github.com/subosito/gotenv v1.6.0 // indirect
43+
github.com/ysmood/fetchup v0.2.3 // indirect
44+
github.com/ysmood/goob v0.4.0 // indirect
45+
github.com/ysmood/got v0.40.0 // indirect
46+
github.com/ysmood/gson v0.7.3 // indirect
47+
github.com/ysmood/leakless v0.9.0 // indirect
4148
go.uber.org/atomic v1.9.0 // indirect
4249
go.uber.org/multierr v1.9.0 // indirect
4350
golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect

go.sum

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
github.com/RedSkiesReaperr/howlongtobeat v0.1.0 h1:HlNtiaXWkIxDNCQBustbsNDxjVSxedI58StGQ7VrwM4=
2+
github.com/RedSkiesReaperr/howlongtobeat v0.1.0/go.mod h1:urJQvzpSQSp3FsHOloXM+GxCt3yKFAmhsBeDmSM09eA=
3+
github.com/RedSkiesReaperr/howlongtobeat v0.1.1 h1:EyWu74Nnz+AE3w3bu0ma4IqCmM+63grRS4miIugG6+I=
4+
github.com/RedSkiesReaperr/howlongtobeat v0.1.1/go.mod h1:urJQvzpSQSp3FsHOloXM+GxCt3yKFAmhsBeDmSM09eA=
15
github.com/agnivade/levenshtein v1.1.1 h1:QY8M92nrzkmr798gCo3kmMyqXFzdQVpxLlGPRBij0P8=
26
github.com/agnivade/levenshtein v1.1.1/go.mod h1:veldBMzWxcCG2ZvUTKD2kJNRdCk5hVbJomOvKkmgYbo=
37
github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 h1:jfIu9sQUG6Ig+0+Ap1h4unLjW6YQJpKZVmUzxsD4E/Q=
@@ -26,6 +30,8 @@ github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHk
2630
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
2731
github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
2832
github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
33+
github.com/go-rod/rod v0.116.2 h1:A5t2Ky2A+5eD/ZJQr1EfsQSe5rms5Xof/qj296e+ZqA=
34+
github.com/go-rod/rod v0.116.2/go.mod h1:H+CMO9SCNc2TJ2WfrG+pKhITz57uGNYU43qYHh438Mg=
2935
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
3036
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
3137
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
@@ -95,6 +101,20 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT
95101
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
96102
github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
97103
github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
104+
github.com/ysmood/fetchup v0.2.3 h1:ulX+SonA0Vma5zUFXtv52Kzip/xe7aj4vqT5AJwQ+ZQ=
105+
github.com/ysmood/fetchup v0.2.3/go.mod h1:xhibcRKziSvol0H1/pj33dnKrYyI2ebIvz5cOOkYGns=
106+
github.com/ysmood/goob v0.4.0 h1:HsxXhyLBeGzWXnqVKtmT9qM7EuVs/XOgkX7T6r1o1AQ=
107+
github.com/ysmood/goob v0.4.0/go.mod h1:u6yx7ZhS4Exf2MwciFr6nIM8knHQIE22lFpWHnfql18=
108+
github.com/ysmood/gop v0.2.0 h1:+tFrG0TWPxT6p9ZaZs+VY+opCvHU8/3Fk6BaNv6kqKg=
109+
github.com/ysmood/gop v0.2.0/go.mod h1:rr5z2z27oGEbyB787hpEcx4ab8cCiPnKxn0SUHt6xzk=
110+
github.com/ysmood/got v0.40.0 h1:ZQk1B55zIvS7zflRrkGfPDrPG3d7+JOza1ZkNxcc74Q=
111+
github.com/ysmood/got v0.40.0/go.mod h1:W7DdpuX6skL3NszLmAsC5hT7JAhuLZhByVzHTq874Qg=
112+
github.com/ysmood/gotrace v0.6.0 h1:SyI1d4jclswLhg7SWTL6os3L1WOKeNn/ZtzVQF8QmdY=
113+
github.com/ysmood/gotrace v0.6.0/go.mod h1:TzhIG7nHDry5//eYZDYcTzuJLYQIkykJzCRIo4/dzQM=
114+
github.com/ysmood/gson v0.7.3 h1:QFkWbTH8MxyUTKPkVWAENJhxqdBa4lYTQWqZCiLG6kE=
115+
github.com/ysmood/gson v0.7.3/go.mod h1:3Kzs5zDl21g5F/BlLTNcuAGAYLKt2lV5G8D1zF3RNmg=
116+
github.com/ysmood/leakless v0.9.0 h1:qxCG5VirSBvmi3uynXFkcnLMzkphdh3xx5FtrORwDCU=
117+
github.com/ysmood/leakless v0.9.0/go.mod h1:R8iAXPRaG97QJwqxs74RdwzcRHT1SWCGTNqY8q0JvMQ=
98118
go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE=
99119
go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
100120
go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI=

howlongtobeat/client.go

Lines changed: 0 additions & 62 deletions
This file was deleted.

howlongtobeat/game.go

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,15 @@ import (
55
"math"
66
"time"
77

8+
"github.com/RedSkiesReaperr/howlongtobeat"
89
"github.com/jomei/notionapi"
910
)
1011

11-
type Result struct {
12-
Count int `json:"count,required"`
13-
Data Games `json:"data,required"`
12+
type GameWrapper struct {
13+
Game *howlongtobeat.Game
1414
}
1515

16-
type Game struct {
17-
Name string `json:"game_name,required"`
18-
CompletionMain int `json:"comp_main,required"`
19-
CompletionPlus int `json:"comp_plus,required"`
20-
CompletionFull int `json:"comp_100,required"`
21-
}
22-
23-
type Games []Game
24-
25-
func (g Game) ReadableCompletion(rawCompletion int) string {
16+
func (ug GameWrapper) readableCompletion(rawCompletion int) string {
2617
duration := time.Duration(rawCompletion * int(time.Second))
2718
hours := int(math.Round(duration.Hours()))
2819

@@ -34,15 +25,15 @@ func (g Game) ReadableCompletion(rawCompletion int) string {
3425
}
3526

3627
// Implements notion.PageUpdateRequester interface
37-
func (g Game) UpdateRequest() notionapi.PageUpdateRequest {
28+
func (ug GameWrapper) UpdateRequest() notionapi.PageUpdateRequest {
3829
return notionapi.PageUpdateRequest{
3930
Properties: notionapi.Properties{
4031
"Time to complete (Main Story)": notionapi.RichTextProperty{
4132
Type: notionapi.PropertyTypeRichText,
4233
RichText: []notionapi.RichText{
4334
{
4435
Text: &notionapi.Text{
45-
Content: g.ReadableCompletion(g.CompletionMain),
36+
Content: ug.readableCompletion(ug.Game.CompletionMain),
4637
},
4738
},
4839
},
@@ -52,7 +43,7 @@ func (g Game) UpdateRequest() notionapi.PageUpdateRequest {
5243
RichText: []notionapi.RichText{
5344
{
5445
Text: &notionapi.Text{
55-
Content: g.ReadableCompletion(g.CompletionPlus),
46+
Content: ug.readableCompletion(ug.Game.CompletionPlus),
5647
},
5748
},
5849
},
@@ -62,7 +53,7 @@ func (g Game) UpdateRequest() notionapi.PageUpdateRequest {
6253
RichText: []notionapi.RichText{
6354
{
6455
Text: &notionapi.Text{
65-
Content: g.ReadableCompletion(g.CompletionFull),
56+
Content: ug.readableCompletion(ug.Game.CompletionFull),
6657
},
6758
},
6859
},

howlongtobeat/request.go

Lines changed: 0 additions & 84 deletions
This file was deleted.

0 commit comments

Comments
 (0)