diff --git a/README.md b/README.md
index 87ba474..35bfd0c 100644
--- a/README.md
+++ b/README.md
@@ -1,15 +1,26 @@
# Rating Reader
-Rating Reader is a program that reads movie and TV show scores from [IMDb](https://www.imdb.com) and conveniently displays them in a spoiler-free way. Needs an internet connection to work correctly.
+Rating Reader is an application that reads media scores from [IMDb](https://www.imdb.com) and conveniently displays them in a spoiler-free way.
+Needs an internet connection to work.
By Sam Salek
## How to download
-The most up-to-date version of RatingReader.exe is located under builds/_current. Simply select the file and press the "Download" button to start downloading.
+The most up-to-date version of RatingReader.exe is located under "builds/_current", a .jar version of the application also exists in the same place for those inclined.
+Simply select the file and press the "Download" button to start downloading (a warning may pop up before/during the download. This is perfectly normal, however the application itself is not harmful to your computer in any way. The source code is always available if skeptical).
+Older builds also exist beside the "_current" folder, these are however not recommended as they can be unstable and/or buggy.
+
## Update Log
-#### 0.6.0:
+#### 0.6.3 (27/12/20):
+* Added support for video games.
+* Made the application version and name always stay consistent.
+* Fixed a bug which caused the text for seasons 10 and above to be cutoff.
+* Fixed movies showing "Other" as media type.
+* Fixed a crash that could sometimes occur.
+
+#### 0.6.0 (22/12/20):
* Episodes without a rating is now also displayed (with rating "NA").
* Episodes now correctly displays their respective episode name.
* Added functionality for Miniseries' and media that necessarily isn't a series or movie.
@@ -17,5 +28,5 @@ The most up-to-date version of RatingReader.exe is located under builds/_current
* Minor UI changes and optimizations.
* Few bug fixes.
-#### 0.5.0:
+#### 0.5.0 (14/11/20):
* Initial version release.
diff --git a/builds/_current/RatingReader-0.6.0.exe b/builds/0.6.3/RatingReader_0.6.3.exe
similarity index 95%
rename from builds/_current/RatingReader-0.6.0.exe
rename to builds/0.6.3/RatingReader_0.6.3.exe
index 469d718..cb5e39b 100644
Binary files a/builds/_current/RatingReader-0.6.0.exe and b/builds/0.6.3/RatingReader_0.6.3.exe differ
diff --git a/builds/_current/ratingreader-0.6.0.jar b/builds/0.6.3/ratingreader-0.6.3.jar
similarity index 95%
rename from builds/_current/ratingreader-0.6.0.jar
rename to builds/0.6.3/ratingreader-0.6.3.jar
index 346b0d3..632d787 100644
Binary files a/builds/_current/ratingreader-0.6.0.jar and b/builds/0.6.3/ratingreader-0.6.3.jar differ
diff --git a/builds/_current/RatingReader_0.6.3.exe b/builds/_current/RatingReader_0.6.3.exe
new file mode 100644
index 0000000..cb5e39b
Binary files /dev/null and b/builds/_current/RatingReader_0.6.3.exe differ
diff --git a/builds/_current/ratingreader-0.6.3.jar b/builds/_current/ratingreader-0.6.3.jar
new file mode 100644
index 0000000..632d787
Binary files /dev/null and b/builds/_current/ratingreader-0.6.3.jar differ
diff --git a/pom.xml b/pom.xml
index 0b1bffe..1e252d1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,9 +6,10 @@
com.zemahzalekratingreader
- 0.6.0
+ ${dev.version}jar
- RatingReader
+
+ ${dev.name}UTF-8
@@ -73,7 +74,7 @@
javafx-maven-plugin0.0.3
- com.zemahzalek.ratingreader.RatingReader
+ com.zemahzalek.ratingreader.view.RatingReader
@@ -129,7 +130,7 @@
gui
- target/RatingReader-${project.version}.exe
+ target/${dev.executable.name}_${project.version}.exetarget/${project.artifactId}-${project.version}.jarfalse
@@ -149,6 +150,26 @@
+
+
+ org.codehaus.mojo
+ properties-maven-plugin
+ 1.0.0
+
+
+ initialize
+
+ read-project-properties
+
+
+
+ src/main/resources/dev.properties
+
+
+
+
+
+
diff --git a/src/main/java/com/zemahzalek/ratingreader/Main.java b/src/main/java/com/zemahzalek/ratingreader/Main.java
index 623aa0e..24ac1ff 100644
--- a/src/main/java/com/zemahzalek/ratingreader/Main.java
+++ b/src/main/java/com/zemahzalek/ratingreader/Main.java
@@ -1,5 +1,7 @@
package com.zemahzalek.ratingreader;
+import com.zemahzalek.ratingreader.view.RatingReader;
+
public class Main {
public static void main(String[] args) {
diff --git a/src/main/java/com/zemahzalek/ratingreader/MediaType.java b/src/main/java/com/zemahzalek/ratingreader/MediaType.java
deleted file mode 100644
index 379d5a7..0000000
--- a/src/main/java/com/zemahzalek/ratingreader/MediaType.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.zemahzalek.ratingreader;
-
-public enum MediaType {
- MOVIE, SERIES, MINISERIES, OTHER;
-
- // Converts to string with first letter uppercase and rest lowercase
- @Override
- public String toString() {
- return name().charAt(0) + name().substring(1).toLowerCase();
- }
-}
diff --git a/src/main/java/com/zemahzalek/ratingreader/Controller.java b/src/main/java/com/zemahzalek/ratingreader/controller/Controller.java
similarity index 97%
rename from src/main/java/com/zemahzalek/ratingreader/Controller.java
rename to src/main/java/com/zemahzalek/ratingreader/controller/Controller.java
index ae270d9..2241da1 100644
--- a/src/main/java/com/zemahzalek/ratingreader/Controller.java
+++ b/src/main/java/com/zemahzalek/ratingreader/controller/Controller.java
@@ -1,5 +1,7 @@
-package com.zemahzalek.ratingreader;
+package com.zemahzalek.ratingreader.controller;
+import com.zemahzalek.ratingreader.view.EpisodeItem;
+import com.zemahzalek.ratingreader.model.Media;
import javafx.application.Platform;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
@@ -117,7 +119,7 @@ public void run() {
@Override
public void run() {
resultNameLabel.setText(media.getName() + " (" + media.getReleaseYear() + ")");
- resultTypeLabel.setText(media.getType().toString());
+ resultTypeLabel.setText(media.getType().getName());
updateResults(1); // Get season 1 on search
// Only do this if media is a TV Series
diff --git a/src/main/java/com/zemahzalek/ratingreader/ImdbController.java b/src/main/java/com/zemahzalek/ratingreader/controller/ImdbController.java
similarity index 86%
rename from src/main/java/com/zemahzalek/ratingreader/ImdbController.java
rename to src/main/java/com/zemahzalek/ratingreader/controller/ImdbController.java
index b509975..4f67846 100644
--- a/src/main/java/com/zemahzalek/ratingreader/ImdbController.java
+++ b/src/main/java/com/zemahzalek/ratingreader/controller/ImdbController.java
@@ -1,5 +1,7 @@
-package com.zemahzalek.ratingreader;
+package com.zemahzalek.ratingreader.controller;
+import com.zemahzalek.ratingreader.model.Media;
+import com.zemahzalek.ratingreader.model.MediaType;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
@@ -20,7 +22,7 @@ public ImdbController(Media media) {
this.media = media;
}
- void setMedia(String mediaName) throws IOException {
+ public void setMedia(String mediaName) throws IOException {
fetchImdbWebsiteCode(mediaName);
fetchMediaName();
fetchMediaType();
@@ -64,60 +66,43 @@ private void fetchSeasonsWebsiteCode() throws IOException {
}
private void fetchMediaName() {
- if(mainWebsiteCode == null) {
- return;
- }
-
String name = mainWebsiteCode.getElementsByClass("title_wrapper").first().child(0).text();
media.setName(name);
}
private void fetchMediaType() {
- if(mainWebsiteCode == null) {
- return;
- }
-
String type = mainWebsiteCode.getElementsByClass("subtext").first().select("a").last().text(); // Gets first "subtext" div and selects last element of type "a"
type = type.replaceAll("[^A-Za-z]", ""); // Remove all non alphabetic characters
// Sets correct mediaType
MediaType mediaType;
- switch (type) {
- case "Movie":
- mediaType = MediaType.MOVIE;
- break;
-
- case "TVSeries":
- mediaType = MediaType.SERIES;
- break;
-
- case "TVMiniSeries":
- mediaType = MediaType.MINISERIES;
- break;
-
- default:
- mediaType = MediaType.OTHER;
- break;
+ if(type.equalsIgnoreCase("TVSeries")) {
+ mediaType = MediaType.SERIES;
+ }
+ else if(type.equalsIgnoreCase("TVMiniSeries")) {
+ mediaType = MediaType.MINISERIES;
+ }
+ else if(type.contains("Videogame")) {
+ mediaType = MediaType.VIDEOGAME;
+ }
+ else {
+ mediaType = MediaType.MOVIE;
}
media.setType(mediaType);
}
private void fetchMediaReleaseYear() {
- if(mainWebsiteCode == null) {
+ String releaseYear = mainWebsiteCode.getElementsByClass("subtext").first().select("a").last().text(); // Gets first "subtext" div and selects last element of type "a"
+ releaseYear = releaseYear.replaceAll("[^\\d]", ""); // Remove all non numeric characters
+
+ // If no release year is found
+ if(releaseYear.equals("")) {
return;
}
- String releaseYear = mainWebsiteCode.getElementsByClass("subtext").first().select("a").last().text(); // Gets first "subtext" div and selects last element of type "a"
-
- char firstChar = releaseYear.charAt(0);
- // Check if firstChar is a number
- if(firstChar >= '0' && firstChar <= '9') {
- releaseYear = releaseYear.replaceAll("[^\\d]", ""); // Remove all non numeric characters
+ if(releaseYear.length() > 4) {
releaseYear = releaseYear.substring(releaseYear.length() - 4); // Keeps only 4 last numbers (the year)
- } else {
- releaseYear = releaseYear.replaceAll("[^\\d]", ""); // Remove all non numeric characters
- releaseYear = releaseYear.substring(0,4); // Cuts of excess year information
}
media.setReleaseYear(Integer.parseInt(releaseYear));
@@ -136,7 +121,6 @@ private void fetchMediaCategory() {
*/
private void fetchNrSeasons() {
-
String seasonsAndYearsDivName = "seasons-and-year-nav";
int seasonDivIndex = 3;
Element seasonsAndYearDiv = mainWebsiteCode.getElementsByClass(seasonsAndYearsDivName).first(); // Get first div of that name
@@ -146,7 +130,6 @@ private void fetchNrSeasons() {
}
private void fetchNrEpisodesPerSeason() {
-
ArrayList episodeAmount = new ArrayList<>();
for (int i = 0; i < media.getNrSeasons(); i++) {
diff --git a/src/main/java/com/zemahzalek/ratingreader/Media.java b/src/main/java/com/zemahzalek/ratingreader/model/Media.java
similarity index 98%
rename from src/main/java/com/zemahzalek/ratingreader/Media.java
rename to src/main/java/com/zemahzalek/ratingreader/model/Media.java
index 9c26c0b..d5b431a 100644
--- a/src/main/java/com/zemahzalek/ratingreader/Media.java
+++ b/src/main/java/com/zemahzalek/ratingreader/model/Media.java
@@ -1,4 +1,4 @@
-package com.zemahzalek.ratingreader;
+package com.zemahzalek.ratingreader.model;
import java.util.ArrayList;
diff --git a/src/main/java/com/zemahzalek/ratingreader/model/MediaType.java b/src/main/java/com/zemahzalek/ratingreader/model/MediaType.java
new file mode 100644
index 0000000..832d035
--- /dev/null
+++ b/src/main/java/com/zemahzalek/ratingreader/model/MediaType.java
@@ -0,0 +1,15 @@
+package com.zemahzalek.ratingreader.model;
+
+public enum MediaType {
+ MOVIE("Movie"), SERIES("Series"), MINISERIES("Miniseries"), VIDEOGAME("Video Game"), OTHER("Other");
+
+ private String name;
+
+ MediaType(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+}
diff --git a/src/main/java/com/zemahzalek/ratingreader/EpisodeItem.java b/src/main/java/com/zemahzalek/ratingreader/view/EpisodeItem.java
similarity index 96%
rename from src/main/java/com/zemahzalek/ratingreader/EpisodeItem.java
rename to src/main/java/com/zemahzalek/ratingreader/view/EpisodeItem.java
index 5cef99d..daa9120 100644
--- a/src/main/java/com/zemahzalek/ratingreader/EpisodeItem.java
+++ b/src/main/java/com/zemahzalek/ratingreader/view/EpisodeItem.java
@@ -1,5 +1,6 @@
-package com.zemahzalek.ratingreader;
+package com.zemahzalek.ratingreader.view;
+import com.zemahzalek.ratingreader.model.Media;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.fxml.FXML;
diff --git a/src/main/java/com/zemahzalek/ratingreader/RatingReader.java b/src/main/java/com/zemahzalek/ratingreader/view/RatingReader.java
similarity index 53%
rename from src/main/java/com/zemahzalek/ratingreader/RatingReader.java
rename to src/main/java/com/zemahzalek/ratingreader/view/RatingReader.java
index 1451297..41f5da7 100644
--- a/src/main/java/com/zemahzalek/ratingreader/RatingReader.java
+++ b/src/main/java/com/zemahzalek/ratingreader/view/RatingReader.java
@@ -1,4 +1,4 @@
-package com.zemahzalek.ratingreader;
+package com.zemahzalek.ratingreader.view;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
@@ -6,6 +6,10 @@
import javafx.scene.Scene;
import javafx.stage.Stage;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
+
public class RatingReader extends Application {
public static void run(String[] args) {
@@ -18,9 +22,18 @@ public void start(Stage stage) throws Exception {
Scene scene = new Scene(rootFXML, 700, 500);
stage.setMinWidth(650);
stage.setMinHeight(400);
- stage.setTitle("Rating Reader 0.6.0");
+ String title = readPropertiesFile("dev.name") + " " + readPropertiesFile("dev.version");
+ stage.setTitle(title);
stage.setScene(scene);
stage.show();
}
+
+ private String readPropertiesFile(String key) throws IOException {
+ Properties properties = new Properties();
+ InputStream stream = this.getClass().getResourceAsStream("/dev.properties");
+ properties.load(stream);
+
+ return properties.getProperty(key);
+ }
}
diff --git a/src/main/resources/dev.properties b/src/main/resources/dev.properties
new file mode 100644
index 0000000..aabb803
--- /dev/null
+++ b/src/main/resources/dev.properties
@@ -0,0 +1,4 @@
+dev.name = Rating Reader
+dev.executable.name = RatingReader
+dev.version = 0.6.3
+dev.url = https://github.com/sam123bir/RatingReader
diff --git a/src/main/resources/fxml/root.fxml b/src/main/resources/fxml/root.fxml
index 27208eb..9415f5b 100644
--- a/src/main/resources/fxml/root.fxml
+++ b/src/main/resources/fxml/root.fxml
@@ -11,7 +11,7 @@
-
+