Add search to the party
This commit is contained in:
parent
828c34830e
commit
15e2e6b546
@ -24,6 +24,7 @@ type Config struct {
|
|||||||
TmdbAPIKey string `yaml:"tmdb_api_key"`
|
TmdbAPIKey string `yaml:"tmdb_api_key"`
|
||||||
MovieDetailers []polochon.Detailer
|
MovieDetailers []polochon.Detailer
|
||||||
MovieTorrenters []polochon.Torrenter
|
MovieTorrenters []polochon.Torrenter
|
||||||
|
MovieSearchers []polochon.Searcher
|
||||||
ShowDetailers []polochon.Detailer
|
ShowDetailers []polochon.Detailer
|
||||||
ShowTorrenters []polochon.Torrenter
|
ShowTorrenters []polochon.Torrenter
|
||||||
}
|
}
|
||||||
@ -71,6 +72,14 @@ func Load(path string) (*Config, error) {
|
|||||||
}
|
}
|
||||||
cf.MovieTorrenters = append(cf.MovieTorrenters, d)
|
cf.MovieTorrenters = append(cf.MovieTorrenters, d)
|
||||||
|
|
||||||
|
// Default searchers
|
||||||
|
cf.MovieSearchers = []polochon.Searcher{}
|
||||||
|
s, err := yts.NewSearcher()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
cf.MovieSearchers = append(cf.MovieSearchers, s)
|
||||||
|
|
||||||
// Default detailers
|
// Default detailers
|
||||||
cf.ShowDetailers = []polochon.Detailer{}
|
cf.ShowDetailers = []polochon.Detailer{}
|
||||||
showDetailer, err := tvdb.NewDetailer()
|
showDetailer, err := tvdb.NewDetailer()
|
||||||
|
@ -78,7 +78,6 @@ func GetMediaIDs(env *web.Env, mediaType string, source string, category string,
|
|||||||
IDs: ids,
|
IDs: ids,
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Debugf("Inserting int to DB %+v", media)
|
|
||||||
err = media.Upsert(env.Database)
|
err = media.Upsert(env.Database)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package movies
|
package movies
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
@ -109,3 +110,41 @@ func GetDetailsHandler(env *web.Env, w http.ResponseWriter, r *http.Request) err
|
|||||||
|
|
||||||
return env.RenderJSON(w, m)
|
return env.RenderJSON(w, m)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SearchMovie will search movie
|
||||||
|
func SearchMovie(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 movies []*polochon.Movie
|
||||||
|
searchers := env.Config.MovieSearchers
|
||||||
|
for _, searcher := range searchers {
|
||||||
|
result, err := searcher.SearchMovie(key, env.Log)
|
||||||
|
if err != nil {
|
||||||
|
env.Log.Errorf("error while searching movie : %s", err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
movies = append(movies, result...)
|
||||||
|
}
|
||||||
|
|
||||||
|
env.Log.Debugf("got %d movies doing search %q", len(movies), key)
|
||||||
|
movieList := []*Movie{}
|
||||||
|
for _, m := range movies {
|
||||||
|
movie := New(m.ImdbID)
|
||||||
|
err := movie.GetDetails(env, false)
|
||||||
|
if err != nil {
|
||||||
|
env.Log.Errorf("error while getting movie details : %s", err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
err = movie.GetTorrents(env, false)
|
||||||
|
if err != nil {
|
||||||
|
env.Log.Errorf("error while getting movie torrents : %s", err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
movieList = append(movieList, movie)
|
||||||
|
}
|
||||||
|
|
||||||
|
return env.RenderJSON(w, movieList)
|
||||||
|
}
|
||||||
|
@ -80,6 +80,7 @@ func main() {
|
|||||||
env.Handle("/movies/{id:tt[0-9]+}/get_details", movies.GetDetailsHandler).WithRole(users.UserRole)
|
env.Handle("/movies/{id:tt[0-9]+}/get_details", movies.GetDetailsHandler).WithRole(users.UserRole)
|
||||||
env.Handle("/movies/explore", extmedias.Explore)
|
env.Handle("/movies/explore", extmedias.Explore)
|
||||||
env.Handle("/movies/refresh", extmedias.Refresh)
|
env.Handle("/movies/refresh", extmedias.Refresh)
|
||||||
|
env.Handle("/movies/search", movies.SearchMovie)
|
||||||
|
|
||||||
// env.Handle("/shows/polochon", shows.FromPolochon).WithRole(users.UserRole)
|
// env.Handle("/shows/polochon", shows.FromPolochon).WithRole(users.UserRole)
|
||||||
env.Handle("/shows/{id:tt[0-9]+}", shows.GetDetailsHandler)
|
env.Handle("/shows/{id:tt[0-9]+}", shows.GetDetailsHandler)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user