Author: Adam <git@apiote.tk>
add item cache from TV series
libamuse/account.go | 1 libamuse/serie.go | 10 +------- tmdb/serie.go | 53 +++++++++++++++++++++++++++++++++++++---------
diff --git a/libamuse/account.go b/libamuse/account.go index 69859524345dad6568ee7f27a515645af973ca76..e70673687b53af0ca5b2053b26bd902257e4624d 100644 --- a/libamuse/account.go +++ b/libamuse/account.go @@ -73,7 +73,6 @@ case datastructure.ItemTypeTvserie: arg, err = gott. NewResult(gott.Tuple(args)). Bind(getTvSerie). - Bind(getSeasons). Finish() args = arg.(gott.Tuple) } diff --git a/libamuse/serie.go b/libamuse/serie.go index 4953bd655f2f8bc8475dbbb8cac02a43d93d19ee..5c5ca3aaec9fb9bde0baaa8f4ea07ac4de9775ea 100644 --- a/libamuse/serie.go +++ b/libamuse/serie.go @@ -15,17 +15,16 @@ func getTvSerie(args ...interface{}) (interface{}, error) { data := args[0].(*RequestData) result := args[1].(*Result) languages := result.languages - tvSerie, err := tmdb.GetSerie(data.id, languages[0].String(), data.connection) + tvSerie, err := tmdb.GetSerie(data.id, languages[0].String()) result.result = tvSerie return gott.Tuple(args), err } func getSeasons(args ...interface{}) (interface{}, error) { - data := args[0].(*RequestData) result := args[1].(*Result) tvSerie := result.result.(*tmdb.TvSerie) languages := result.languages - seasons, err := tmdb.GetSeasons(tvSerie, languages[0].String(), data.connection) + seasons, err := tmdb.GetSeasons(tvSerie, languages[0].String()) tvSerie.Seasons = seasons return gott.Tuple(args), err } @@ -165,7 +164,6 @@ auth.Necessary = false request := &RequestData{id: id, language: language, mimetype: mimetype, auth: auth} r, err := gott. NewResult(gott.Tuple{request, &Result{}}). - Bind(createDbConnection). Bind(parseLanguage). Bind(verifyToken). Bind(getTvSerie). @@ -180,10 +178,6 @@ Bind(getEpisodesExperiences). Bind(createRenderer). Map(renderSerie). Finish() - - if request.connection != nil { - request.connection.Close() - } if err != nil { return "", err diff --git a/tmdb/serie.go b/tmdb/serie.go index 50fc503df76f273677547631fd13d813921ea2ad..56bf0057bb7378fda661a33ff38a3a45883db5ac 100644 --- a/tmdb/serie.go +++ b/tmdb/serie.go @@ -7,11 +7,11 @@ "notabug.org/apiote/amuse/network" "notabug.org/apiote/amuse/utils" "notabug.org/apiote/amuse/wikidata" - "database/sql" "encoding/json" "fmt" "net/http" "strconv" + "strings" "time" "notabug.org/apiote/gott" @@ -53,6 +53,7 @@ Episode_run_time []int `json:"episode_run_time"` First_air_date_str string `json:"first_air_date"` First_air_date time.Time Genres []struct { + Id int Name string } Last_air_date_str string `json:"last_air_date"` @@ -78,6 +79,36 @@ WatchedEpisodes int AllEpisodes int } +func (s *TvSerie) GetItemInfo() datastructure.ItemInfo { + genres := "" + for _, genre := range s.Genres { + genres += fmt.Sprintf("%d", genre.Id) + "," + } + + years := strings.Split(s.GetYears(), "–") + var ( + yearStart int64 = 0 + yearEnd int64 = 0 + ) + + yearStart, _ = strconv.ParseInt(years[0], 10, 32) + if len(years) > 1 { + yearEnd, _ = strconv.ParseInt(years[1], 10, 32) + } + + itemInfo := datastructure.ItemInfo{ + Cover: s.Poster_path, + Status: s.Status, + Title: s.Original_name, + YearStart: int(yearStart), + YearEnd: int(yearEnd), + Genres: genres, + // BasedOn + } + + return itemInfo +} + func (s *TvSerie) AddBasedOn(book wikidata.Book) { s.BasedOn = book } @@ -178,17 +209,17 @@ } return gott.Tuple(args), err } -func GetSerie(id, language string, connection *sql.DB) (*TvSerie, error) { +func GetSerie(id, language string) (*TvSerie, error) { serie, err := gott. - NewResult(gott.Tuple{&network.Request{Id: id, Language: language, Connection: connection}, &network.Result{}}). + NewResult(gott.Tuple{&network.Request{Id: id, Language: language}, &network.Result{}}). Bind(createSerieRequest). - //Bind(getCacheEntry). + Bind(getCacheEntry). Map(network.AddHeaders). Bind(network.DoRequest). Bind(network.HandleRequestError). Bind(network.ReadResponse). - //Bind(cleanCache). - //Bind(saveCacheEntry). + Tee(cleanCache). + Tee(saveCacheEntry). Bind(unmarshalSerie). Bind(convertSerieDates). Finish() @@ -200,21 +231,21 @@ return serie.(gott.Tuple)[1].(*network.Result).Result.(*TvSerie), nil } } -func GetSeasons(serie *TvSerie, language string, connection *sql.DB) ([]Season, error) { +func GetSeasons(serie *TvSerie, language string) ([]Season, error) { var err error var seasons []Season for _, season := range serie.Seasons { seasonNumber := strconv.FormatInt(int64(season.Season_number), 10) s, err2 := gott. - NewResult(gott.Tuple{&network.Request{Id: serie.Id, Language: language, Subid: seasonNumber, Connection: connection}, &network.Result{}}). + NewResult(gott.Tuple{&network.Request{Id: serie.Id, Language: language, Subid: seasonNumber}, &network.Result{}}). Bind(createSeasonRequest). - //Bind(getCacheEntry). + Bind(getCacheEntry). Map(network.AddHeaders). Bind(network.DoRequest). Bind(network.HandleRequestError). Bind(network.ReadResponse). - //Bind(cleanCache). - //Bind(saveCacheEntry). + Tee(cleanCache). + Tee(saveCacheEntry). Bind(unmarshalSeason). Bind(convertSeasonDates). Finish()