Merge branch 'polochonGreg' into 'master'
Polochon download URL Rebased from origin/polochon made by @nicolas See merge request !16
This commit is contained in:
commit
7735da4ba9
@ -5,8 +5,12 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
"sort"
|
||||||
|
"strconv"
|
||||||
|
|
||||||
"github.com/odwrtw/papi"
|
"github.com/odwrtw/papi"
|
||||||
|
polochon "github.com/odwrtw/polochon/lib"
|
||||||
|
"github.com/odwrtw/polochon/modules/pam"
|
||||||
"github.com/odwrtw/trakttv"
|
"github.com/odwrtw/trakttv"
|
||||||
|
|
||||||
"gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/auth"
|
"gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/auth"
|
||||||
@ -17,6 +21,12 @@ import (
|
|||||||
|
|
||||||
var ErrPolochonUnavailable = fmt.Errorf("Invalid polochon address")
|
var ErrPolochonUnavailable = fmt.Errorf("Invalid polochon address")
|
||||||
|
|
||||||
|
type SortByTitle []*Movie
|
||||||
|
|
||||||
|
func (a SortByTitle) Len() int { return len(a) }
|
||||||
|
func (a SortByTitle) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
|
||||||
|
func (a SortByTitle) Less(i, j int) bool { return a[i].Title < a[j].Title }
|
||||||
|
|
||||||
func getPolochonMovies(user *users.User) ([]*Movie, error) {
|
func getPolochonMovies(user *users.User) ([]*Movie, error) {
|
||||||
movies := []*Movie{}
|
movies := []*Movie{}
|
||||||
|
|
||||||
@ -49,13 +59,56 @@ func getPolochonMovies(user *users.User) ([]*Movie, error) {
|
|||||||
return movies, err
|
return movies, err
|
||||||
}
|
}
|
||||||
for _, pmovie := range pmovies {
|
for _, pmovie := range pmovies {
|
||||||
movies = append(movies, New(pmovie.ImdbID))
|
movie := New(pmovie.ImdbID)
|
||||||
|
movie.PolochonURL, err = client.DownloadURL(&papi.Movie{ImdbID: movie.ImdbID})
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
movies = append(movies, movie)
|
||||||
}
|
}
|
||||||
return movies, nil
|
return movies, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
||||||
|
params := struct {
|
||||||
|
Sort string
|
||||||
|
Order string
|
||||||
|
Start int
|
||||||
|
Limit int
|
||||||
|
}{
|
||||||
|
Sort: "title",
|
||||||
|
Order: "asc",
|
||||||
|
Start: 0,
|
||||||
|
Limit: 50,
|
||||||
|
}
|
||||||
|
|
||||||
|
err := r.ParseForm()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if sort := r.FormValue("sort"); sort != "" {
|
||||||
|
params.Sort = sort
|
||||||
|
}
|
||||||
|
|
||||||
|
if order := r.FormValue("order"); order != "" {
|
||||||
|
params.Order = order
|
||||||
|
}
|
||||||
|
if start := r.FormValue("start"); start != "" {
|
||||||
|
n, err := strconv.Atoi(start)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
params.Start = n
|
||||||
|
}
|
||||||
|
if limit := r.FormValue("limit"); limit != "" {
|
||||||
|
n, err := strconv.Atoi(limit)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
params.Limit = n
|
||||||
|
}
|
||||||
|
|
||||||
user, ok := v.(*users.User)
|
user, ok := v.(*users.User)
|
||||||
if !ok {
|
if !ok {
|
||||||
@ -75,16 +128,46 @@ func FromPolochon(env *web.Env, w http.ResponseWriter, r *http.Request) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var polochonConfig config.UserPolochon
|
||||||
|
err = user.GetConfig("polochon", &polochonConfig)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
detailer, err := pam.New(&pam.Params{
|
||||||
|
Endpoint: polochonConfig.URL,
|
||||||
|
Token: polochonConfig.Token,
|
||||||
|
})
|
||||||
|
|
||||||
for _, m := range movies {
|
for _, m := range movies {
|
||||||
|
m.Detailers = []polochon.Detailer{detailer}
|
||||||
err := m.GetDetails(env, false)
|
err := m.GetDetails(env, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
env.Log.Error(err)
|
env.Log.Error(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
env.Log.Info(movies)
|
var smovies sort.Interface
|
||||||
|
|
||||||
web.SetData(r, "movies", movies)
|
switch params.Sort {
|
||||||
|
case "title":
|
||||||
|
smovies = SortByTitle(movies)
|
||||||
|
default:
|
||||||
|
return fmt.Errorf("invalid sort param")
|
||||||
|
}
|
||||||
|
|
||||||
|
switch params.Order {
|
||||||
|
case "asc":
|
||||||
|
break
|
||||||
|
case "desc":
|
||||||
|
smovies = sort.Reverse(smovies)
|
||||||
|
default:
|
||||||
|
return fmt.Errorf("invalid order param")
|
||||||
|
}
|
||||||
|
|
||||||
|
sort.Sort(smovies)
|
||||||
|
|
||||||
|
web.SetData(r, "movies", movies[params.Start:params.Start+params.Limit])
|
||||||
return env.Rends(w, r, "movies/library")
|
return env.Rends(w, r, "movies/library")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,6 +50,7 @@ var (
|
|||||||
type Movie struct {
|
type Movie struct {
|
||||||
sqly.BaseModel
|
sqly.BaseModel
|
||||||
polochon.Movie
|
polochon.Movie
|
||||||
|
PolochonURL string
|
||||||
}
|
}
|
||||||
|
|
||||||
func New(imdbID string) *Movie {
|
func New(imdbID string) *Movie {
|
||||||
|
@ -43,7 +43,12 @@
|
|||||||
<p class="movie-plot">{{ .Plot }}</p>
|
<p class="movie-plot">{{ .Plot }}</p>
|
||||||
|
|
||||||
<div class="movie-details-buttons">
|
<div class="movie-details-buttons">
|
||||||
<a id="imdb-link" type="button" class="btn btn-warning" href="http://www.imdb.com/title/{{ .ImdbID }}">
|
{{ if .PolochonURL }}
|
||||||
|
<a type="button" class="btn btn-success btn-sm" href="{{ .PolochonURL }}">
|
||||||
|
<i class="fa fa-download"></i> Download
|
||||||
|
</a>
|
||||||
|
{{ end }}
|
||||||
|
<a id="imdb-link" type="button" class="btn btn-sm btn-warning" href="http://www.imdb.com/title/{{ .ImdbID }}">
|
||||||
<i class="fa fa-external-link"></i> IMDB
|
<i class="fa fa-external-link"></i> IMDB
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
<ul class="nav navbar-nav">
|
<ul class="nav navbar-nav">
|
||||||
<li><p class="navbar-text">Library: </p></li>
|
<li><p class="navbar-text">Library: </p></li>
|
||||||
<li {{ if eq $.Route "movies.polochon" }}class="active"{{ end }}>
|
<li {{ if eq $.Route "movies.polochon" }}class="active"{{ end }}>
|
||||||
<a href="{{ URL "movies.polochon" }}">Movies{{ if eq $.Route "movies.polochon" }}<span class="sr-only">(current)</span>{{ end }}</a>
|
<a href="{{ URL "movies.polochon" }}?limit=10">Movies{{ if eq $.Route "movies.polochon" }}<span class="sr-only">(current)</span>{{ end }}</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li><a href="#">TV Shows</a></li>
|
<li><a href="#">TV Shows</a></li>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user