diff --git a/backend/models/episodes.go b/backend/models/episodes.go index 2ffbd79..e873b34 100644 --- a/backend/models/episodes.go +++ b/backend/models/episodes.go @@ -84,7 +84,6 @@ func FillEpisodeFromDB(eDB *episodeDB, pEpisode *polochon.ShowEpisode) { pEpisode.Title = eDB.Title pEpisode.Rating = eDB.Rating pEpisode.Plot = eDB.Plot - pEpisode.Thumb = eDB.Thumb pEpisode.Runtime = eDB.Runtime pEpisode.Aired = eDB.Aired pEpisode.Thumb = imageURL(fmt.Sprintf( diff --git a/backend/models/movies.go b/backend/models/movies.go index e6c338f..04f32ba 100644 --- a/backend/models/movies.go +++ b/backend/models/movies.go @@ -90,6 +90,7 @@ func FillMovieFromDB(mDB *movieDB, pMovie *polochon.Movie) { pMovie.SortTitle = mDB.SortTitle pMovie.Tagline = mDB.Tagline pMovie.Thumb = imageURL("movies/" + mDB.ImdbID + ".jpg") + pMovie.Fanart = imageURL("movies/" + mDB.ImdbID + "-fanart.jpg") } // updateFromMovie will update the movieDB from a Movie diff --git a/backend/models/torrent_video.go b/backend/models/torrent_video.go index 867ce28..a31b772 100644 --- a/backend/models/torrent_video.go +++ b/backend/models/torrent_video.go @@ -9,8 +9,9 @@ import ( // TorrentVideo reprensents a torrent embeding the video inforamtions type TorrentVideo struct { *polochon.Torrent - Img string `json:"img"` - Video polochon.Video `json:"video,omitempty"` + Thumb string `json:"thumb"` + Fanart string `json:"fanart"` + Video polochon.Video `json:"video,omitempty"` } // NewTorrentVideo returns a new TorrentVideo @@ -47,11 +48,13 @@ func (t *TorrentVideo) Update(detailer polochon.Detailer, db *sqlx.DB, log *logr if err := GetShow(db, v.Show); err != nil { return } - t.Img = v.Show.Poster + t.Fanart = v.Show.Fanart + t.Thumb = v.Show.Poster v.Show = nil } case *polochon.Movie: - t.Img = v.Thumb + t.Thumb = v.Thumb + t.Fanart = v.Fanart } } diff --git a/backend/movies/movies.go b/backend/movies/movies.go index b414b0d..ec5a5f4 100644 --- a/backend/movies/movies.go +++ b/backend/movies/movies.go @@ -150,7 +150,13 @@ func (m *Movie) Refresh(env *web.Env, detailers []polochon.Detailer) error { } // Download poster - err = web.Download(m.Thumb, m.imgFile(), true) + err = web.Download(m.Thumb, m.imgFile("thumb"), 300) + if err != nil { + log.Errorf("got error trying to download the poster %q", err) + } + + // Download fanart + err = web.Download(m.Fanart, m.imgFile("fanart"), 960) if err != nil { log.Errorf("got error trying to download the poster %q", err) } @@ -237,13 +243,19 @@ func (m *Movie) RefreshTorrents(env *web.Env, torrenters []polochon.Torrenter) e } // imgURL returns the default image url -func (m *Movie) imgURL() string { - return fmt.Sprintf("movies/%s.jpg", m.ImdbID) +func (m *Movie) imgURL(imgType string) string { + var location string + if imgType == "thumb" { + location = m.ImdbID + } else { + location = m.ImdbID + "-" + imgType + } + return fmt.Sprintf("movies/%s.jpg", location) } // imgFile returns the image location on disk -func (m *Movie) imgFile() string { - return filepath.Join(models.PublicDir, "img", m.imgURL()) +func (m *Movie) imgFile(imgType string) string { + return filepath.Join(models.PublicDir, "img", m.imgURL(imgType)) } // getPolochonMovies returns an array of the user's polochon movies diff --git a/backend/shows/shows.go b/backend/shows/shows.go index 1a370c0..2e350c6 100644 --- a/backend/shows/shows.go +++ b/backend/shows/shows.go @@ -170,24 +170,24 @@ func (s *Show) downloadImages(env *web.Env) { } // Download the show images for _, img := range []struct { - url string - urlType string - scale bool + url string + urlType string + maxWidth uint }{ { - url: s.Show.Banner, - urlType: "banner", - scale: false, + url: s.Show.Banner, + urlType: "banner", + maxWidth: 0, }, { - url: s.Show.Fanart, - urlType: "fanart", - scale: false, + url: s.Show.Fanart, + urlType: "fanart", + maxWidth: 960, }, { - url: s.Show.Poster, - urlType: "poster", - scale: true, + url: s.Show.Poster, + urlType: "poster", + maxWidth: 300, }, } { if img.url == "" { @@ -197,7 +197,7 @@ func (s *Show) downloadImages(env *web.Env) { if _, err := os.Stat(s.imgFile(img.urlType)); err == nil { continue } - if err := web.Download(img.url, s.imgFile(img.urlType), img.scale); err != nil { + if err := web.Download(img.url, s.imgFile(img.urlType), img.maxWidth); err != nil { env.Log.Errorf("failed to dowload %s: %s", img.urlType, err) } } @@ -214,7 +214,7 @@ func (s *Show) downloadImages(env *web.Env) { continue } - err := web.Download(e.Thumb, fileName, false) + err := web.Download(e.Thumb, fileName, 0) if err != nil { env.Log.Errorf("failed to dowload the thumb for season %d episode %d ( %s ) : %s", e.Season, e.Episode, e.Thumb, err) } diff --git a/backend/web/download.go b/backend/web/download.go index ee38cae..87aa847 100644 --- a/backend/web/download.go +++ b/backend/web/download.go @@ -13,7 +13,7 @@ import ( ) // Download used for downloading file -var Download = func(srcURL, dest string, scale bool) error { +var Download = func(srcURL, dest string, maxWidth uint) error { if err := createDirectory(dest); err != nil { return err } @@ -36,8 +36,8 @@ var Download = func(srcURL, dest string, scale bool) error { return err } - if scale { - image = resize.Resize(300, 0, image, resize.Lanczos3) + if maxWidth != 0 { + image = resize.Resize(maxWidth, 0, image, resize.Lanczos3) } // Create the file diff --git a/frontend/js/components/torrents/list/poster.js b/frontend/js/components/torrents/list/poster.js index 9d8a919..2690222 100644 --- a/frontend/js/components/torrents/list/poster.js +++ b/frontend/js/components/torrents/list/poster.js @@ -1,17 +1,27 @@ import React from "react"; import PropTypes from "prop-types"; -export const Poster = ({ url }) => { - if (!url || url === "") { +export const Poster = ({ thumb, fanart }) => { + if (thumb === "" && fanart === "") { return null; } return ( -
- +
+ {thumb !== "" && ( + + )} + {fanart !== "" && ( + + )}
); }; Poster.propTypes = { - url: PropTypes.string, + thumb: PropTypes.string, + fanart: PropTypes.string, +}; +Poster.defaultProps = { + thumb: "", + fanart: "", }; diff --git a/frontend/js/components/torrents/list/torrentGroup.js b/frontend/js/components/torrents/list/torrentGroup.js index 9e3d568..c44d95a 100644 --- a/frontend/js/components/torrents/list/torrentGroup.js +++ b/frontend/js/components/torrents/list/torrentGroup.js @@ -28,7 +28,7 @@ export const TorrentGroup = ({ torrentKey }) => { return (
- +

{title(torrents[0])}