diff --git a/cmd/transform.go b/cmd/transform.go index 3fbbf07..07cb6c3 100644 --- a/cmd/transform.go +++ b/cmd/transform.go @@ -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") } diff --git a/go.mod b/go.mod index cdf720a..c0764e1 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,5 @@ module xmltv-exporter go 1.16 + +require github.com/go-co-op/gocron v1.0.0 diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..7875f5e --- /dev/null +++ b/go.sum @@ -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= diff --git a/main.go b/main.go index 50d4226..7373cff 100644 --- a/main.go +++ b/main.go @@ -1,7 +1,9 @@ package main import ( + "github.com/go-co-op/gocron" "os" + "time" "xmltv-exporter/cmd" "xmltv-exporter/xmltv" ) @@ -9,7 +11,12 @@ import ( 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")) }