Add the polochon URL in every movie

This commit is contained in:
Grégoire Delattre 2017-01-09 13:24:21 +01:00
parent f34813f3a5
commit e1a11e5ff9
2 changed files with 68 additions and 4 deletions

View File

@ -5,8 +5,10 @@ import (
"fmt" "fmt"
"net/http" "net/http"
"gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/auth"
"gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/movies" "gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/movies"
"gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/shows" "gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/shows"
"gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/users"
"gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/web" "gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/web"
@ -89,12 +91,19 @@ func GetMediaIDs(env *web.Env, mediaType string, source string, category string,
} }
// GetMovies get some movies // GetMovies get some movies
func GetMovies(env *web.Env, source string, category string, force bool) ([]*movies.Movie, error) { func GetMovies(env *web.Env, user *users.User, source string, category string, force bool) ([]*movies.Movie, error) {
movieIds, err := GetMediaIDs(env, "movie", source, category, force) movieIds, err := GetMediaIDs(env, "movie", source, category, force)
if err != nil { if err != nil {
return nil, err return nil, err
} }
// Get the URLs from polochon, we don't really care if it fails for now
var urls map[string]string
urls, err = movies.GetPolochonMoviesURLs(user)
if err != nil {
env.Log.Errorf("error while getting polochon movies url: %s", err)
}
movieList := []*movies.Movie{} movieList := []*movies.Movie{}
for _, id := range movieIds { for _, id := range movieIds {
movie := movies.New(id) movie := movies.New(id)
@ -108,6 +117,13 @@ func GetMovies(env *web.Env, source string, category string, force bool) ([]*mov
env.Log.Errorf("error while getting movie torrents : %s", err) env.Log.Errorf("error while getting movie torrents : %s", err)
continue continue
} }
if urls != nil {
if url, ok := urls[id]; ok {
movie.PolochonURL = url
}
}
movieList = append(movieList, movie) movieList = append(movieList, movie)
} }
return movieList, nil return movieList, nil
@ -157,8 +173,14 @@ func Explore(env *web.Env, w http.ResponseWriter, r *http.Request) error {
category = "popular" category = "popular"
} }
v := auth.GetCurrentUser(r, env.Log)
user, ok := v.(*users.User)
if !ok {
return fmt.Errorf("invalid user type")
}
// Get the medias without trying to refresh them // Get the medias without trying to refresh them
movies, err := GetMovies(env, source, category, false) movies, err := GetMovies(env, user, source, category, false)
if err != nil { if err != nil {
return err return err
} }
@ -218,11 +240,17 @@ func Refresh(env *web.Env, w http.ResponseWriter, r *http.Request) error {
category = "popular" category = "popular"
} }
v := auth.GetCurrentUser(r, env.Log)
user, ok := v.(*users.User)
if !ok {
return fmt.Errorf("invalid user type")
}
// We'll refresh the medias for each sources // We'll refresh the medias for each sources
for _, source := range MediaSources { for _, source := range MediaSources {
env.Log.Debugf("refreshing %s", source) env.Log.Debugf("refreshing %s", source)
// GetMedias and refresh them // GetMedias and refresh them
_, err := GetMovies(env, source, category, true) _, err := GetMovies(env, user, source, category, true)
if err != nil { if err != nil {
return err return err
} }

View File

@ -64,6 +64,21 @@ func getPolochonMovies(user *users.User) ([]*Movie, error) {
return movies, nil return movies, nil
} }
// GetPolochonMoviesURLs returns the polochon urls associated with an imdb id
func GetPolochonMoviesURLs(user *users.User) (map[string]string, error) {
movies, err := getPolochonMovies(user)
if err != nil {
return nil, err
}
urls := make(map[string]string, len(movies))
for _, movie := range movies {
urls[movie.ImdbID] = movie.PolochonURL
}
return urls, nil
}
// FromPolochon will returns movies from Polochon // FromPolochon will returns movies from Polochon
func FromPolochon(env *web.Env, w http.ResponseWriter, r *http.Request) error { func FromPolochon(env *web.Env, w http.ResponseWriter, r *http.Request) error {
v := auth.GetCurrentUser(r, env.Log) v := auth.GetCurrentUser(r, env.Log)
@ -117,7 +132,8 @@ func SearchMovie(env *web.Env, w http.ResponseWriter, r *http.Request) error {
var data struct { var data struct {
Key string `json:"key"` Key string `json:"key"`
} }
if err := json.NewDecoder(r.Body).Decode(&data); err != nil { err := json.NewDecoder(r.Body).Decode(&data)
if err != nil {
return err return err
} }
@ -125,6 +141,12 @@ func SearchMovie(env *web.Env, w http.ResponseWriter, r *http.Request) error {
return env.RenderError(w, errors.New("no given key")) return env.RenderError(w, errors.New("no given key"))
} }
v := auth.GetCurrentUser(r, env.Log)
user, ok := v.(*users.User)
if !ok {
return fmt.Errorf("invalid user type")
}
var movies []*polochon.Movie var movies []*polochon.Movie
searchers := env.Config.MovieSearchers searchers := env.Config.MovieSearchers
for _, searcher := range searchers { for _, searcher := range searchers {
@ -136,6 +158,13 @@ func SearchMovie(env *web.Env, w http.ResponseWriter, r *http.Request) error {
movies = append(movies, result...) movies = append(movies, result...)
} }
// Get the URLs from polochon, we don't really care if it fails for now
var urls map[string]string
urls, err = GetPolochonMoviesURLs(user)
if err != nil {
env.Log.Errorf("error while getting polochon movies url: %s", err)
}
env.Log.Debugf("got %d movies doing search %q", len(movies), data.Key) env.Log.Debugf("got %d movies doing search %q", len(movies), data.Key)
movieList := []*Movie{} movieList := []*Movie{}
for _, m := range movies { for _, m := range movies {
@ -150,6 +179,13 @@ func SearchMovie(env *web.Env, w http.ResponseWriter, r *http.Request) error {
env.Log.Errorf("error while getting movie torrents : %s", err) env.Log.Errorf("error while getting movie torrents : %s", err)
continue continue
} }
if urls != nil {
if url, ok := urls[m.ImdbID]; ok {
movie.PolochonURL = url
}
}
movieList = append(movieList, movie) movieList = append(movieList, movie)
} }