Generate thumbnails for folders

This commit is contained in:
2021-05-25 22:11:05 +02:00
parent 74a7961799
commit b3bc21cc21

View File

@@ -7,6 +7,7 @@ import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.NoSuchElementException; import java.util.NoSuchElementException;
import java.util.Optional;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipFile; import java.util.zip.ZipFile;
import javax.enterprise.context.ApplicationScoped; import javax.enterprise.context.ApplicationScoped;
@@ -17,6 +18,7 @@ import org.im4java.core.IMOperation;
import sh.rhiobet.lalafin.api.configuration.FileApiConfiguration; import sh.rhiobet.lalafin.api.configuration.FileApiConfiguration;
import sh.rhiobet.lalafin.api.model.FileInfo; import sh.rhiobet.lalafin.api.model.FileInfo;
import sh.rhiobet.lalafin.api.model.FileInfoBase; import sh.rhiobet.lalafin.api.model.FileInfoBase;
import sh.rhiobet.lalafin.api.model.FolderInfo;
@ApplicationScoped @ApplicationScoped
public class ThumbnailService { public class ThumbnailService {
@@ -29,6 +31,8 @@ public class ThumbnailService {
if (fileInfo.filename.endsWith(".zip")) { if (fileInfo.filename.endsWith(".zip")) {
return this.generateThumbnailFromZip(fileInfo, thumbPath); return this.generateThumbnailFromZip(fileInfo, thumbPath);
} }
} else if (fileInfoBase instanceof FolderInfo) {
return this.generateThumbnailForFolder((FolderInfo) fileInfoBase, thumbPath);
} }
return false; return false;
} }
@@ -68,4 +72,32 @@ public class ThumbnailService {
return false; return false;
} }
public boolean generateThumbnailForFolder(FolderInfo folderInfo, Path thumbPath) {
Path folderPath = Paths.get(fileApiConfiguration.directory()
+ URLDecoder.decode(folderInfo.directUrl, StandardCharsets.UTF_8));
try {
Optional<Path> imgPath = Files.list(folderPath).sorted()
.filter(p -> !Files.isDirectory(p)
&& (p.toString().endsWith(".png") || p.toString().endsWith(".jpg")))
.findFirst();
if (imgPath.isPresent()) {
thumbPath.getParent().toFile().mkdirs();
ConvertCmd convert = new ConvertCmd();
IMOperation op = new IMOperation();
op.addImage(imgPath.get().toString());
op.resize(200, null);
op.addImage(thumbPath.toString());
convert.run(op);
return true;
}
} catch (IOException | InterruptedException | IM4JavaException ignored) {
ignored.printStackTrace();
}
return false;
}
} }