Showing posters correctly now

This commit is contained in:
jhouse
2020-01-15 10:45:25 +09:00
parent 39a0c75824
commit 9a7b529da4
12 changed files with 65 additions and 10 deletions
@@ -21,6 +21,8 @@ public class OwnedMovie implements Comparable<OwnedMovie>, MovieMetadata {
public static final String THUMBNAIL = "thumbnail";
public static final String LANGUAGE = "language";
private final String name;
private final int year;
@@ -32,7 +34,10 @@ public class OwnedMovie implements Comparable<OwnedMovie>, MovieMetadata {
@Nullable
private String imdbId;
public OwnedMovie(String name, int year, String thumbnail, int tvdbId, @Nullable String imdbId) {
@Nullable
private String language;
public OwnedMovie(String name, int year, String thumbnail, int tvdbId, @Nullable String imdbId, String language) {
this.name = name;
this.year = year;
this.thumbnail = thumbnail;
@@ -69,8 +74,25 @@ public class OwnedMovie implements Comparable<OwnedMovie>, MovieMetadata {
return thumbnail;
}
@Nullable
public String getLanguage() {
return language;
}
@Override
public int compareTo(@NotNull OwnedMovie o) {
return getName().compareTo(o.getName());
}
@Override
public String toString() {
return "OwnedMovie{" +
"name='" + name + '\'' +
", year=" + year +
", thumbnail='" + thumbnail + '\'' +
", tvdbId=" + tvdbId +
", imdbId='" + imdbId + '\'' +
", language='" + language + '\'' +
'}';
}
}
@@ -14,7 +14,6 @@ import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
import com.jasonhhouse.gaps.Movie;
import com.jasonhhouse.gaps.OwnedMovie;
import java.io.IOException;
@@ -33,9 +32,16 @@ public class OwnedMovieDeserializer extends StdDeserializer<OwnedMovie> {
int tvdbId = (Integer) node.get(OwnedMovie.TVDB_ID).numberValue();
String imdbId = node.get(OwnedMovie.IMDB_ID).asText();
String name = node.get(OwnedMovie.NAME).asText();
String thumbnail = node.get(OwnedMovie.THUMBNAIL).asText();
String thumbnail = null;
if (node.has(OwnedMovie.THUMBNAIL)) {
thumbnail = node.get(OwnedMovie.THUMBNAIL).asText();
}
int year = (Integer) node.get(OwnedMovie.YEAR).numberValue();
String language = null;
if (node.has(OwnedMovie.LANGUAGE)) {
language = node.get(OwnedMovie.LANGUAGE).asText();
}
return new OwnedMovie(name, year, thumbnail, tvdbId, imdbId);
return new OwnedMovie(name, year, thumbnail, tvdbId, imdbId, language);
}
}
@@ -34,6 +34,7 @@ public class OwnedMovieSerializer extends StdSerializer<OwnedMovie> {
jsonGenerator.writeStringField(OwnedMovie.NAME, movie.getName());
jsonGenerator.writeNumberField(OwnedMovie.YEAR, movie.getYear());
jsonGenerator.writeStringField(OwnedMovie.THUMBNAIL, movie.getThumbnail());
jsonGenerator.writeStringField(OwnedMovie.LANGUAGE, movie.getLanguage());
jsonGenerator.writeEndObject();
}
}
@@ -427,6 +427,7 @@ public class GapsSearchService implements GapsSearch {
}
OwnedMovie ownedMovie;
String language = null;
//Movie searchMovie = new Movie.Builder(title, year).build();
/*int indexOfMovie = everyMovie.indexOf(searchMovie);
if (indexOfMovie != -1) {
@@ -434,14 +435,19 @@ public class GapsSearchService implements GapsSearch {
movie = everyMovie.get(indexOfMovie);
} else {*/
if (guid.contains("com.plexapp.agents.themoviedb")) {
//ToDo
//Find out what it looks like in TMDB
//language = ??
guid = guid.substring(guid.indexOf(ID_IDX_START) + ID_IDX_START.length(), guid.indexOf(ID_IDX_END));
ownedMovie = new OwnedMovie(title, year, thumbnail, Integer.parseInt(guid), null);
ownedMovie = new OwnedMovie(title, year, thumbnail, Integer.parseInt(guid), null, language);
} else if (guid.contains("com.plexapp.agents.imdb://")) {
language = guid.substring(guid.indexOf("?lang=") + "?lang=".length());
LOGGER.info("language:" + language);
guid = guid.substring(guid.indexOf(ID_IDX_START) + ID_IDX_START.length(), guid.indexOf(ID_IDX_END));
ownedMovie = new OwnedMovie(title, year, thumbnail, -1, guid);
ownedMovie = new OwnedMovie(title, year, thumbnail, -1, guid, language);
} else {
LOGGER.warn("Cannot handle guid value of " + guid);
ownedMovie = new OwnedMovie(title, year, thumbnail, -1, null);
ownedMovie = new OwnedMovie(title, year, thumbnail, -1, null, language);
}
/*}*/
@@ -738,7 +744,7 @@ public class GapsSearchService implements GapsSearch {
.setPosterUrl(posterUrl)
.build();
OwnedMovie ownedMovieFromCollection = new OwnedMovie(title, year, null, tvdbId, null);
OwnedMovie ownedMovieFromCollection = new OwnedMovie(title, year, null, tvdbId, null, null);
indexOfMovie = everyMovie.indexOf(new Movie.Builder(title, year).build());
if (indexOfMovie == -1) {
@@ -16,7 +16,7 @@ $(document).ready(function () {
{
data: "poster",
render: function (data, type, row) {
if (type === 'display') {
if (type === 'display' && row.poster) {
const url = `http://${plexSearch.address}:${plexSearch.port}${row.poster}/?X-Plex-Token=${plexSearch.plexToken}`;
return `<img class="thumbnail" src="${url}" alt="poster">`;
}
@@ -26,6 +26,7 @@ $(document).ready(function () {
},
{data: "title"},
{data: "year"},
{data: "language"},
{data: "link"},
{
data: "find_missing",
@@ -26,6 +26,9 @@
<a class="navbar-brand" href="/">Gaps</a>
<div class="collapse navbar-collapse" id="navbarColor01">
<ul class="navbar-nav mr-auto">
<li class="nav-item">
<a class="nav-link" href="/ownedMovies">Owned Movies</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/recommended">Recommended</a>
</li>
@@ -28,6 +28,9 @@
<a class="navbar-brand" href="/">Gaps</a>
<div class="collapse navbar-collapse" id="navbarColor01">
<ul class="navbar-nav mr-auto">
<li class="nav-item">
<a class="nav-link" href="/ownedMovies">Owned Movies</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/recommended">Recommended</a>
</li>
@@ -28,6 +28,9 @@
<a class="navbar-brand" href="/">Gaps</a>
<div class="collapse navbar-collapse" id="navbarColor01">
<ul class="navbar-nav mr-auto">
<li class="nav-item">
<a class="nav-link" href="/ownedMovies">Owned Movies</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/recommended">Recommended</a>
</li>
@@ -51,6 +51,7 @@
<th>Poster</th>
<th>Title</th>
<th>Year</th>
<th>Language</th>
<th>Link</th>
<th>Find Missing</th>
</tr>
@@ -60,6 +61,7 @@
<td th:text="${movie.thumbnail}"></td>
<td th:text="${movie.name}"></td>
<td th:text="${movie.year}"></td>
<td th:text="${movie.language}"></td>
<td><a target="_blank" th:href="${urls.get(status.index)}">Details</a></td>
<td></td>
</tr>
@@ -75,7 +77,6 @@
<script type="text/javascript" src="/js/datatables.min.js"></script>
<script type="text/javascript" src="/js/sockjs-1.4.0.min.js"></script>
<script type="text/javascript" src="/js/stomp-2.3.3.min.js"></script>
<script src="https://www.lactame.com/lib/image-js/0.21.2/image.min.js"></script>
<script type="text/javascript" src="/js/ownedMovies.js"></script>
</body>
</html>
@@ -26,6 +26,9 @@
<a class="navbar-brand" href="/">Gaps</a>
<div class="collapse navbar-collapse" id="navbarColor01">
<ul class="navbar-nav mr-auto">
<li class="nav-item">
<a class="nav-link" href="/ownedMovies">Owned Movies</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/recommended">Recommended</a>
</li>
@@ -26,6 +26,9 @@
<a class="navbar-brand" href="/">Gaps</a>
<div class="collapse navbar-collapse" id="navbarColor01">
<ul class="navbar-nav mr-auto">
<li class="nav-item">
<a class="nav-link" href="/ownedMovies">Owned Movies</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/recommended">Recommended</a>
</li>
@@ -28,6 +28,9 @@
<a class="navbar-brand" href="/">Gaps</a>
<div class="collapse navbar-collapse" id="navbarColor01">
<ul class="navbar-nav mr-auto">
<li class="nav-item">
<a class="nav-link" href="/ownedMovies">Owned Movies</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/recommended">Recommended</a>
</li>