Skip to content

Commit

Permalink
Fixed: Missing images if sd has no meta data
Browse files Browse the repository at this point in the history
  • Loading branch information
marmei committed May 28, 2020
1 parent 9034193 commit 3c41e80
Show file tree
Hide file tree
Showing 5 changed files with 77 additions and 54 deletions.
72 changes: 49 additions & 23 deletions cache.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ func (c *cache) AddSchedule(data *[]byte) {

}

func (c *cache) AddProgram(gzip *[]byte, metadataIDs *[]string, wg *sync.WaitGroup) {
func (c *cache) AddProgram(gzip *[]byte, wg *sync.WaitGroup) {

c.Lock()

Expand Down Expand Up @@ -146,10 +146,6 @@ func (c *cache) AddProgram(gzip *[]byte, metadataIDs *[]string, wg *sync.WaitGro

c.Program[sd.ProgramID] = g2gCache

if sd.HasEpisodeArtwork == true || sd.HasImageArtwork == true {
*metadataIDs = append(*metadataIDs, sd.ProgramID[0:10])
}

}

return
Expand All @@ -169,26 +165,44 @@ func (c *cache) AddMetadata(gzip *[]byte, wg *sync.WaitGroup) {
return
}

var tmp = make([]interface{}, 0)

var g2gCache G2GCache
var sdData []SDMetadata

err = json.Unmarshal(b, &sdData)
err = json.Unmarshal(b, &tmp)
if err != nil {
ShowErr(err)
return
}

for _, sd := range sdData {
for _, t := range tmp {

var sdData SDMetadata

jsonByte, _ := json.Marshal(t)
err = json.Unmarshal(jsonByte, &sdData)
if err != nil {

var sdError SDError
err = json.Unmarshal(jsonByte, &sdError)
if err == nil {
err = fmt.Errorf("%s [SD API Error Code: %d] Program ID: %s", sdError.Data.Message, sdError.Data.Code, sdError.ProgramID)
ShowErr(err)
}

} else {

g2gCache.Data = sdData.Data
c.Metadata[sdData.ProgramID] = g2gCache

g2gCache.Data = sd.Data
c.Metadata[sd.ProgramID] = g2gCache
}

}

return
}

func (c *cache) GetAllProgrammIDs() (programIDs []string) {
func (c *cache) GetAllProgramIDs() (programIDs []string) {

for _, channel := range c.Schedule {

Expand All @@ -205,9 +219,9 @@ func (c *cache) GetAllProgrammIDs() (programIDs []string) {
return
}

func (c *cache) GetRequiredProgrammIDs() (programIDs []string) {
func (c *cache) GetRequiredProgramIDs() (programIDs []string) {

var allProgramIDs = c.GetAllProgrammIDs()
var allProgramIDs = c.GetAllProgramIDs()

for _, id := range allProgramIDs {

Expand All @@ -224,6 +238,27 @@ func (c *cache) GetRequiredProgrammIDs() (programIDs []string) {
return
}

func (c *cache) GetRequiredMetaIDs() (metaIDs []string) {

for id, p := range c.Program {

if p.HasImageArtwork == true {

if len(id) > 10 {

if _, ok := c.Metadata[id[:10]]; !ok {
metaIDs = append(metaIDs, id[:10])
}

}

}

}

return
}

func (c *cache) Open() (err error) {

data, err := ioutil.ReadFile(Config.Files.Cache)
Expand Down Expand Up @@ -266,7 +301,7 @@ func (c *cache) CleanUp() {
var count int
showInfo("G2G", fmt.Sprintf("Clean up Cache [%s]", Config.Files.Cache))

var programIDs = c.GetAllProgrammIDs()
var programIDs = c.GetAllProgramIDs()

for id := range c.Program {

Expand Down Expand Up @@ -533,14 +568,5 @@ func (c *cache) GetIcon(id string) (i []Icon) {

}

/*
if len(i) > 0 {
fmt.Println(i)
os.Exit(0)
}
*/

return
}
10 changes: 5 additions & 5 deletions data.go
Original file line number Diff line number Diff line change
Expand Up @@ -145,9 +145,8 @@ func (sd *SD) GetData() {
sd.Req.Data = []byte{}

var types = []string{"programs", "metadata"}
var metadataIDs []string
var programIds = Cache.GetRequiredProgrammIDs()
var allIDs = Cache.GetAllProgrammIDs()
var programIds = Cache.GetRequiredProgramIDs()
var allIDs = Cache.GetAllProgramIDs()
var programs = make([]interface{}, 0)

showInfo("G2G", fmt.Sprintf("Download Program Informations: New: %d / Cached: %d", len(programIds), len(allIDs)-len(programIds)))
Expand All @@ -158,8 +157,9 @@ func (sd *SD) GetData() {
case "metadata":
sd.Req.URL = fmt.Sprintf("%smetadata/programs", sd.BaseURL)
sd.Req.Call = "metadata"
programIds = metadataIDs
programIds = Cache.GetRequiredMetaIDs()
limit = 500
showInfo("G2G", fmt.Sprintf("Download missing Metadata: %d ", len(programIds)))

case "programs":

Expand Down Expand Up @@ -195,7 +195,7 @@ func (sd *SD) GetData() {
go Cache.AddMetadata(&sd.Resp.Body, &wg)

case "programs":
go Cache.AddProgram(&sd.Resp.Body, &metadataIDs, &wg)
go Cache.AddProgram(&sd.Resp.Body, &wg)

}

Expand Down
2 changes: 1 addition & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (
const AppName = "guide2go"

// Version : Version
const Version = "1.1.0"
const Version = "1.1.1"

// Config : Config file (struct)
var Config config
Expand Down
8 changes: 1 addition & 7 deletions struct_cache.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,13 +86,7 @@ type G2GCache struct {
} `json:"titles"`

// Metadata
Data []struct {
Aspect string `json:"aspect"`
Height string `json:"height"`
Size string `json:"size"`
URI string `json:"uri"`
Width string `json:"width"`
} `json:"data,omitempty"`
Data []Data `json:"data,omitempty"`
}

// SDSchedule : Schedules Direct schedule data
Expand Down
39 changes: 21 additions & 18 deletions struct_sd.go
Original file line number Diff line number Diff line change
Expand Up @@ -234,27 +234,18 @@ type SDProgram struct {

//SDMetadata : Schedules Direct meta data
type SDMetadata struct {
Data []struct {
Aspect string `json:"aspect"`
Height string `json:"height"`
Size string `json:"size"`
URI string `json:"uri"`
Width string `json:"width"`

/*
Category string `json:"category"`
Primary string `json:"primary"`
Text string `json:"text"`
Caption struct {
Content string `json:"content"`
Lang string `json:"lang"`
} `json:"caption"`
*/
} `json:"data"`
Data []Data `json:"data",required`
ProgramID string `json:"programID"`
}

type Data struct {
Aspect string `json:"aspect"`
Height string `json:"height"`
Size string `json:"size"`
URI string `json:"uri"`
Width string `json:"width"`
}

// SDStation : Schedules Direct stations
type SDStation struct {
Map []struct {
Expand Down Expand Up @@ -294,3 +285,15 @@ type SDStation struct {
} `json:"stationLogo"`
} `json:"stations"`
}

// SDError : Errors from SD
type SDError struct {
Data struct {
Code int64 `json:"code"`
Datetime string `json:"datetime"`
Message string `json:"message"`
Response string `json:"response"`
ServerID string `json:"serverID"`
} `json:"data"`
ProgramID string `json:"programID"`
}

0 comments on commit 3c41e80

Please sign in to comment.