added poster cache

This commit is contained in:
Seil0 2017-04-09 15:07:56 +02:00
parent 726a788876
commit cccbca06bd
6 changed files with 49 additions and 7 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -23,7 +23,6 @@ import com.eclipsesource.json.Json;
import com.eclipsesource.json.JsonArray;
import com.eclipsesource.json.JsonObject;
import com.eclipsesource.json.JsonValue;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.text.Font;
@ -518,7 +517,7 @@ public class DBController {
String Type, String imdbVotes, String imdbID, String Poster, String Response) throws SQLException{
PreparedStatement ps = connection.prepareStatement("insert into cache values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
System.out.println("adding to cache...");
System.out.println("adding to cache: " + Title);
ps.setString(1,streamUrl);
ps.setString(2,Title);
ps.setString(3,Year);
@ -579,8 +578,8 @@ public class DBController {
responseText.add(new Text(rs.getString(j)+"\n"));
j++;
}
responseText.add(new Text(rs.getString(19)+"\n"));
im = new Image(rs.getString(20));
responseText.add(new Text(rs.getString(19)+"\n"));
im = new Image(new File(rs.getString(20)).toURI().toString());
stmt.close();
rs.close();
@ -596,7 +595,6 @@ public class DBController {
mainWindowController.textFlow.getChildren().addAll(nameText.get(i),responseText.get(i));
}
//TODO separate cache for posters
try{
mainWindowController.image1.setImage(im);
}catch (Exception e){

View File

@ -54,6 +54,7 @@ public class Main extends Application {
private MainWindowController mainWindowController;
private File directory;
private File settingsFile;
private File posterCache;
private String dirWin = System.getProperty("user.home") + "/Documents/HomeFlix"; //Windows: C:/Users/"User"/Documents/HomeFlix
private String dirLinux = System.getProperty("user.home") + "/HomeFlix"; //Linux: /home/"User"/HomeFlix
@ -92,7 +93,9 @@ public class Main extends Application {
settingsFile = new File(dirWin + "/config.xml");
}
if(settingsFile.exists() != true){
posterCache = new File(directory+"/posterCache");
if(!settingsFile.exists()){
directory.mkdir();
mainWindowController.setPath(firstStart());
mainWindowController.setStreamingPath(directory.getAbsolutePath());
@ -106,6 +109,9 @@ public class Main extends Application {
System.exit(0); //finishes itse
}
if(!posterCache.exists()) {
posterCache.mkdir();
}
//TODO remove when tested under Linux
// if(System.getProperty("os.name").equals("Linux")){
// if(dirLinux.exists() != true){
@ -203,4 +209,12 @@ public class Main extends Application {
public void setFONT_FAMILY(String FONT_FAMILY) {
this.FONT_FAMILY = FONT_FAMILY;
}
public File getPosterCache() {
return posterCache;
}
public void setPosterCache(File posterCache) {
this.posterCache = posterCache;
}
}

View File

@ -4,13 +4,18 @@
*/
package application;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.Scanner;
import javax.imageio.ImageIO;
import com.eclipsesource.json.Json;
import com.eclipsesource.json.JsonObject;
@ -32,6 +37,7 @@ public class apiQuery{
private Main main;
private Image im;
private String[] responseString = new String[20];
private String posterCache;
ArrayList<Text> responseText = new ArrayList<Text>();
ArrayList<Text> nameText = new ArrayList<Text>();
@ -42,9 +48,11 @@ public class apiQuery{
String moviename = null;
String dataurl = null;
String retdata = null;
String posterPath = null;
InputStream is = null;
BufferedReader br = null;
String fontFamily = main.getFONT_FAMILY();
posterCache = main.getPosterCache().toString();
int fontSize = (int) Math.round(mainWindowController.size);
responseText.removeAll(responseText);
@ -101,10 +109,23 @@ public class apiQuery{
responseString[18] = object.getString("Poster", "");
responseString[19] = object.getString("Response", "");
//adding poster to cache
BufferedImage originalImage = ImageIO.read(new URL(responseString[18]));//change path to where file is located
int type = originalImage.getType() == 0 ? BufferedImage.TYPE_INT_ARGB : originalImage.getType();
BufferedImage resizeImagePNG = resizeImage(originalImage, type, 198, 297);
if(System.getProperty("os.name").equals("Linux")) {
posterPath = posterCache+"/"+titel+".png";
ImageIO.write(resizeImagePNG, "png", new File(posterCache+"/"+titel+".png")); //change path where you want it saved
} else {
ImageIO.write(resizeImagePNG, "png", new File(posterCache+"\\"+titel+".png")); //change path where you want it saved
posterPath = posterCache+"\\"+titel+".png";
}
System.out.println("adding poster to cache: "+posterPath);
//adding strings to the cache
dbController.addCache( streamUrl, responseString[0], responseString[1],responseString[2], responseString[3], responseString[4], responseString[5],
responseString[6], responseString[7], responseString[8], responseString[9], responseString[10],responseString[11], responseString[12],
responseString[13], responseString[14], responseString[15], responseString[16], responseString[17], responseString[18],
responseString[13], responseString[14], responseString[15], responseString[16], responseString[17], posterPath,
responseString[19]);
dbController.setCached(streamUrl);
@ -181,4 +202,13 @@ public class apiQuery{
}
}
}
private static BufferedImage resizeImage(BufferedImage originalImage, int type, int IMG_WIDTH, int IMG_HEIGHT) {
BufferedImage resizedImage = new BufferedImage(IMG_WIDTH, IMG_HEIGHT, type);
Graphics2D g = resizedImage.createGraphics();
g.drawImage(originalImage, 0, 0, IMG_WIDTH, IMG_HEIGHT, null);
g.dispose();
return resizedImage;
}
}