Initial commit
This commit is contained in:
45
src/main/java/com/github/gtache/plex/PlexCompresser.java
Normal file
45
src/main/java/com/github/gtache/plex/PlexCompresser.java
Normal file
@@ -0,0 +1,45 @@
|
||||
package com.github.gtache.plex;
|
||||
|
||||
import com.github.gtache.ffmpeg.Compression;
|
||||
import com.github.gtache.ffmpeg.Converter;
|
||||
import com.github.gtache.ffmpeg.Format;
|
||||
import com.github.gtache.ffmpeg.Quality;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.Objects;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class PlexCompresser implements Compresser {
|
||||
|
||||
private static final Pattern EXTENSION_PATTERN = Pattern.compile("\\.([A-Za-z0-9]{2,3})$");
|
||||
private final Converter converter;
|
||||
|
||||
@Inject
|
||||
PlexCompresser(final Converter converter) {
|
||||
this.converter = Objects.requireNonNull(converter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void compress(final String file) throws IOException {
|
||||
final var matcher = EXTENSION_PATTERN.matcher(file);
|
||||
if (matcher.find()) {
|
||||
final var extension = matcher.group(1);
|
||||
final var newName = matcher.replaceAll("-archived." + extension);
|
||||
converter.convertTo(file, newName, Format.H265, Quality.HIGH, Compression.HIGH);
|
||||
} else {
|
||||
throw new IllegalArgumentException("File doesn't have an extension : " + file);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void compressDirectory(final String path) throws IOException {
|
||||
try (final var files = Files.list(Paths.get(path))) {
|
||||
for (final var file : files.toList()) {
|
||||
compress(file.toFile().getAbsolutePath());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user