mirror of
https://github.com/JasonHHouse/gaps.git
synced 2026-02-05 01:59:35 -06:00
Adding collection id to owned movies
This commit is contained in:
@@ -25,6 +25,8 @@ public class OwnedMovie implements Comparable<OwnedMovie>, MovieMetadata {
|
||||
|
||||
public static final String LANGUAGE = "language";
|
||||
|
||||
public static final String COLLECTION = "collection";
|
||||
|
||||
private final String name;
|
||||
|
||||
private final int year;
|
||||
@@ -39,13 +41,16 @@ public class OwnedMovie implements Comparable<OwnedMovie>, MovieMetadata {
|
||||
@Nullable
|
||||
private String language;
|
||||
|
||||
public OwnedMovie(String name, int year, String thumbnail, int tvdbId, @Nullable String imdbId, String language) {
|
||||
private int collection;
|
||||
|
||||
public OwnedMovie(String name, int year, String thumbnail, int tvdbId, @Nullable String imdbId, @Nullable String language, int collection) {
|
||||
this.name = name;
|
||||
this.year = year;
|
||||
this.thumbnail = thumbnail;
|
||||
this.tvdbId = tvdbId;
|
||||
this.imdbId = imdbId;
|
||||
this.language = language;
|
||||
this.collection = collection;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -82,6 +87,14 @@ public class OwnedMovie implements Comparable<OwnedMovie>, MovieMetadata {
|
||||
return language;
|
||||
}
|
||||
|
||||
public int getCollection() {
|
||||
return collection;
|
||||
}
|
||||
|
||||
public void setCollection(int collection) {
|
||||
this.collection = collection;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(@NotNull OwnedMovie o) {
|
||||
return getName().compareTo(o.getName());
|
||||
@@ -127,6 +140,7 @@ public class OwnedMovie implements Comparable<OwnedMovie>, MovieMetadata {
|
||||
", tvdbId=" + tvdbId +
|
||||
", imdbId='" + imdbId + '\'' +
|
||||
", language='" + language + '\'' +
|
||||
", collection='" + collection + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,16 +32,23 @@ 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();
|
||||
int year = (Integer) node.get(OwnedMovie.YEAR).numberValue();
|
||||
|
||||
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, language);
|
||||
int collection = -1;
|
||||
if (node.has(OwnedMovie.COLLECTION)) {
|
||||
collection = node.get(OwnedMovie.COLLECTION).asInt();
|
||||
}
|
||||
|
||||
return new OwnedMovie(name, year, thumbnail, tvdbId, imdbId, language, collection);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,6 +34,7 @@ public class OwnedMovieSerializer extends StdSerializer<OwnedMovie> {
|
||||
jsonGenerator.writeNumberField(OwnedMovie.YEAR, movie.getYear());
|
||||
jsonGenerator.writeStringField(OwnedMovie.THUMBNAIL, movie.getThumbnail());
|
||||
jsonGenerator.writeStringField(OwnedMovie.LANGUAGE, movie.getLanguage());
|
||||
jsonGenerator.writeNumberField(OwnedMovie.COLLECTION, movie.getCollection());
|
||||
jsonGenerator.writeEndObject();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ public class OwnedMovieSerializerTest {
|
||||
OwnedMovieSerializer movieSerializer = new OwnedMovieSerializer();
|
||||
OwnedMovieDeserializer movieDeserializer = new OwnedMovieDeserializer();
|
||||
|
||||
OwnedMovie ownedMovie = new OwnedMovie("Alien", 1979, "THUMBNAIL", 1235, "TVDB_ID", "ENGLISH");
|
||||
OwnedMovie ownedMovie = new OwnedMovie("Alien", 1979, "THUMBNAIL", 1235, "TVDB_ID", "ENGLISH", 1234);
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
Writer jsonWriter = new StringWriter();
|
||||
@@ -44,7 +44,7 @@ public class OwnedMovieSerializerTest {
|
||||
OwnedMovieSerializer movieSerializer = new OwnedMovieSerializer();
|
||||
OwnedMovieDeserializer movieDeserializer = new OwnedMovieDeserializer();
|
||||
|
||||
OwnedMovie ownedMovie = new OwnedMovie("Alien", 1979, null, 1235, "TVDB_ID", "ENGLISH");
|
||||
OwnedMovie ownedMovie = new OwnedMovie("Alien", 1979, null, 1235, "TVDB_ID", "ENGLISH", 134);
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
Writer jsonWriter = new StringWriter();
|
||||
@@ -68,7 +68,7 @@ public class OwnedMovieSerializerTest {
|
||||
OwnedMovieSerializer movieSerializer = new OwnedMovieSerializer();
|
||||
OwnedMovieDeserializer movieDeserializer = new OwnedMovieDeserializer();
|
||||
|
||||
OwnedMovie ownedMovie = new OwnedMovie("Alien", 1979, "THUMBNAIL", 1235, "TVDB_ID", null);
|
||||
OwnedMovie ownedMovie = new OwnedMovie("Alien", 1979, "THUMBNAIL", 1235, "TVDB_ID", null, -1);
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
Writer jsonWriter = new StringWriter();
|
||||
|
||||
@@ -433,15 +433,15 @@ public class GapsSearchService implements GapsSearch {
|
||||
//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, language);
|
||||
ownedMovie = new OwnedMovie(title, year, thumbnail, Integer.parseInt(guid), null, language, -1);
|
||||
} else if (guid.contains("com.plexapp.agents.imdb://")) {
|
||||
language = guid.substring(guid.indexOf("?lang=") + "?lang=".length());
|
||||
language = new Locale(language, "").getDisplayLanguage();
|
||||
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, language);
|
||||
ownedMovie = new OwnedMovie(title, year, thumbnail, -1, guid, language, -1);
|
||||
} else {
|
||||
LOGGER.warn("Cannot handle guid value of " + guid);
|
||||
ownedMovie = new OwnedMovie(title, year, thumbnail, -1, null, language);
|
||||
ownedMovie = new OwnedMovie(title, year, thumbnail, -1, null, language, -1);
|
||||
}
|
||||
|
||||
ownedMovies.add(ownedMovie);
|
||||
@@ -515,12 +515,12 @@ public class GapsSearchService implements GapsSearch {
|
||||
if (movie.getTvdbId() != -1 && movie.getCollectionId() != -1) {
|
||||
LOGGER.debug("Used Collection ID to get " + movie.getName());
|
||||
tempTvdbCounter.incrementAndGet();
|
||||
handleCollection(movie, client, languageCode);
|
||||
handleCollection(movie, ownedMovie, client, languageCode);
|
||||
continue;
|
||||
} else if (movie.getTvdbId() != -1) {
|
||||
LOGGER.debug("Used TVDB ID to get " + movie.getName());
|
||||
tempTvdbCounter.incrementAndGet();
|
||||
searchMovieDetails(movie, client, languageCode);
|
||||
searchMovieDetails(movie, ownedMovie, client, languageCode);
|
||||
continue;
|
||||
} else if (StringUtils.isNotBlank(movie.getImdbId())) {
|
||||
LOGGER.debug("Used 'find' to search for " + movie.getName());
|
||||
@@ -585,7 +585,7 @@ public class GapsSearchService implements GapsSearch {
|
||||
everyMovie.add(newMovie);
|
||||
}
|
||||
|
||||
searchMovieDetails(movie, client, languageCode);
|
||||
searchMovieDetails(movie, ownedMovie, client, languageCode);
|
||||
} catch (JsonProcessingException e) {
|
||||
LOGGER.error("Error parsing movie " + movie + ". " + e.getMessage());
|
||||
LOGGER.error("URL: " + searchMovieUrl);
|
||||
@@ -618,7 +618,7 @@ public class GapsSearchService implements GapsSearch {
|
||||
}
|
||||
}
|
||||
|
||||
private void searchMovieDetails(Movie movie, OkHttpClient client, String languageCode) {
|
||||
private void searchMovieDetails(Movie movie, OwnedMovie ownedMovie, OkHttpClient client, String languageCode) {
|
||||
HttpUrl movieDetailUrl = urlGenerator.generateMovieDetailUrl(gapsService.getPlexSearch().getMovieDbApiKey(), String.valueOf(movie.getImdbId()), languageCode);
|
||||
|
||||
Request request = new Request.Builder()
|
||||
@@ -663,14 +663,14 @@ public class GapsSearchService implements GapsSearch {
|
||||
everyMovie.add(newMovie);
|
||||
}
|
||||
|
||||
handleCollection(movie, client, languageCode);
|
||||
handleCollection(movie, ownedMovie, client, languageCode);
|
||||
|
||||
} catch (IOException e) {
|
||||
LOGGER.error("Error getting movie details " + movie, e);
|
||||
}
|
||||
}
|
||||
|
||||
private void handleCollection(Movie movie, OkHttpClient client, String languageCode) {
|
||||
private void handleCollection(Movie movie, OwnedMovie ownedMovie, OkHttpClient client, String languageCode) {
|
||||
HttpUrl collectionUrl = urlGenerator.generateCollectionUrl(gapsService.getPlexSearch().getMovieDbApiKey(), String.valueOf(movie.getCollectionId()), languageCode);
|
||||
|
||||
Request request = new Request.Builder()
|
||||
@@ -694,17 +694,26 @@ public class GapsSearchService implements GapsSearch {
|
||||
return;
|
||||
} else if (indexOfMovie != -1) {
|
||||
int id = collection.get("id").asInt();
|
||||
everyMovie.get(indexOfMovie).setCollectionId(id);
|
||||
String name = collection.get("name").asText();
|
||||
everyMovie.get(indexOfMovie).setCollectionId(id);
|
||||
everyMovie.get(indexOfMovie).setCollection(name);
|
||||
movie.setCollection(name);
|
||||
movie.setCollectionId(id);
|
||||
ownedMovie.setCollection(id);
|
||||
} else {
|
||||
int id = collection.get("id").asInt();
|
||||
String name = collection.get("name").asText();
|
||||
Movie newMovie = new Movie.Builder(movie.getName(), movie.getYear())
|
||||
.setTvdbId(movie.getTvdbId())
|
||||
.setImdbId(movie.getImdbId())
|
||||
.setCollection(collection.get("name").asText())
|
||||
.setCollectionId(collection.get("id").asInt())
|
||||
.setCollection(name)
|
||||
.setCollectionId(id)
|
||||
.build();
|
||||
everyMovie.add(newMovie);
|
||||
|
||||
movie.setCollection(name);
|
||||
movie.setCollectionId(id);
|
||||
ownedMovie.setCollection(id);
|
||||
}
|
||||
|
||||
ArrayNode parts = (ArrayNode) collection.get("parts");
|
||||
@@ -741,7 +750,7 @@ public class GapsSearchService implements GapsSearch {
|
||||
.setPosterUrl(posterUrl)
|
||||
.build();
|
||||
|
||||
OwnedMovie ownedMovieFromCollection = new OwnedMovie(title, year, null, tvdbId, null, null);
|
||||
OwnedMovie ownedMovieFromCollection = new OwnedMovie(title, year, null, tvdbId, null, null, -1);
|
||||
|
||||
indexOfMovie = everyMovie.indexOf(new Movie.Builder(title, year).build());
|
||||
if (indexOfMovie == -1) {
|
||||
|
||||
Reference in New Issue
Block a user