Skip to content

Commit

Permalink
periodically refresh cache
Browse files Browse the repository at this point in the history
  • Loading branch information
sjurtf committed Mar 15, 2021
1 parent 45373a5 commit fd2dee0
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 10 deletions.
24 changes: 16 additions & 8 deletions cmd/transform.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,27 @@ import (
"xmltv-exporter/xmltv"
)

func MapEgp() {
today := time.Now()
futureOneWeek := time.Now().Add(time.Hour * 24 * 3)
func RefreshWeek() {
days := 7
tomorrow := time.Now().Add(time.Hour * 24)
refresh(tomorrow, days)
log.Printf("Refreshed epg cache for next %d days", days)
}

var t = today
for t.Before(futureOneWeek) {
channels := tv2.FetchEpg(t)
func RefreshToday() {
refresh(time.Now(), 1)
log.Println("Refreshed epg cache for today")
}

func refresh(start time.Time, days int) {
var t = start
end := time.Now().Add(time.Hour * time.Duration(24*days))

for t.Before(end) {
channels := tv2.FetchEpg(t)
for _, channel := range channels {
xmltv.BuildCache(t, channel)
}

t = t.Add(time.Hour * 24)
}
log.Println("Refreshed epg cache")
}
2 changes: 2 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
module xmltv-exporter

go 1.16

require github.com/go-co-op/gocron v1.0.0
16 changes: 16 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/go-co-op/gocron v1.0.0 h1:ALryRuOUIOTFOIqq8ToKS/1nFm6JAjd3rz1o6GXLK8Q=
github.com/go-co-op/gocron v1.0.0/go.mod h1:9rZ2ZJCai6lz7JG5b+AdRsNnxjirM/Vc+gss/FJW8eU=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a h1:DcqTD9SDLc+1P/r1EmRBwnVsrOwW+kk2vWf9n+1sGhs=
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
11 changes: 9 additions & 2 deletions main.go
Original file line number Diff line number Diff line change
@@ -1,15 +1,22 @@
package main

import (
"github.com/go-co-op/gocron"
"os"
"time"
"xmltv-exporter/cmd"
"xmltv-exporter/xmltv"
)

func main() {
xmltv.Init(os.Getenv("XMLTV_DOMAIN"))

cmd.MapEgp()
cmd.ServeEpg(os.Getenv("XMLTV_PORT"))
s := gocron.NewScheduler(time.UTC)
_, _ = s.Every("1d").Do(cmd.RefreshToday)
_, _ = s.Every("3d").Do(cmd.RefreshWeek)
s.StartAsync()
cmd.RefreshToday()
cmd.RefreshWeek()

cmd.ServeEpg(os.Getenv("XMLTV_PORT"))
}

0 comments on commit fd2dee0

Please sign in to comment.