Add showSearcher to the party

This commit is contained in:
Lucas BEE 2017-01-06 12:26:03 +00:00
parent 243a7c524e
commit 7c1d571734
3 changed files with 52 additions and 7 deletions

View File

@ -27,6 +27,7 @@ type Config struct {
MovieSearchers []polochon.Searcher
ShowDetailers []polochon.Detailer
ShowTorrenters []polochon.Torrenter
ShowSearchers []polochon.Searcher
}
type AuthorizerConfig struct {
@ -54,7 +55,7 @@ func Load(path string) (*Config, error) {
return nil, err
}
// Default detailers
// Default movie detailers
cf.MovieDetailers = []polochon.Detailer{}
if cf.TmdbAPIKey != "" {
d, err := tmdb.New(&tmdb.Params{cf.TmdbAPIKey})
@ -64,7 +65,7 @@ func Load(path string) (*Config, error) {
cf.MovieDetailers = append(cf.MovieDetailers, d)
}
// Default torrenters
// Default movie torrenters
cf.MovieTorrenters = []polochon.Torrenter{}
d, err := yts.New()
if err != nil {
@ -72,15 +73,23 @@ func Load(path string) (*Config, error) {
}
cf.MovieTorrenters = append(cf.MovieTorrenters, d)
// Default searchers
// Default movie searchers
cf.MovieSearchers = []polochon.Searcher{}
s, err := yts.NewSearcher()
movieSearcher, err := yts.NewSearcher()
if err != nil {
return nil, err
}
cf.MovieSearchers = append(cf.MovieSearchers, s)
cf.MovieSearchers = append(cf.MovieSearchers, movieSearcher)
// Default detailers
// Default show searchers
cf.ShowSearchers = []polochon.Searcher{}
showSearcher, err := eztv.NewSearcher()
if err != nil {
return nil, err
}
cf.ShowSearchers = append(cf.ShowSearchers, showSearcher)
// Default show detailers
cf.ShowDetailers = []polochon.Detailer{}
showDetailer, err := tvdb.NewDetailer()
if err != nil {
@ -88,7 +97,7 @@ func Load(path string) (*Config, error) {
}
cf.ShowDetailers = append(cf.ShowDetailers, showDetailer)
// Default torrenters
// Default show torrenters
cf.ShowTorrenters = []polochon.Torrenter{}
showTorrenter, err := eztv.New()
if err != nil {

View File

@ -1,9 +1,11 @@
package shows
import (
"errors"
"net/http"
"github.com/gorilla/mux"
polochon "github.com/odwrtw/polochon/lib"
"gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/web"
)
@ -22,3 +24,36 @@ func GetDetailsHandler(env *web.Env, w http.ResponseWriter, r *http.Request) err
return env.RenderJSON(w, s)
}
// SearchShow will search a show
func SearchShow(env *web.Env, w http.ResponseWriter, r *http.Request) error {
key := r.FormValue("key")
if key == "" {
return env.RenderError(w, errors.New("no given key"))
}
var shows []*polochon.Show
searchers := env.Config.ShowSearchers
for _, searcher := range searchers {
result, err := searcher.SearchShow(key, env.Log)
if err != nil {
env.Log.Errorf("error while searching show : %s", err)
continue
}
shows = append(shows, result...)
}
env.Log.Debugf("got %d shows doing search %q", len(shows), key)
showList := []*Show{}
for _, s := range shows {
show := New(s.ImdbID)
err := show.GetDetails(env, false)
if err != nil {
env.Log.Errorf("error while getting show details : %s", err)
continue
}
showList = append(showList, show)
}
return env.RenderJSON(w, showList)
}

View File

@ -86,6 +86,7 @@ func main() {
env.Handle("/shows/{id:tt[0-9]+}", shows.GetDetailsHandler)
env.Handle("/shows/refresh", extmedias.RefreshShows)
env.Handle("/shows/explore", extmedias.ExploreShows)
env.Handle("/shows/search", shows.SearchShow)
n := negroni.Classic()
n.Use(authMiddleware)