Reworks default tools, moves some files
This commit is contained in:
@@ -5,6 +5,7 @@ import com.github.gtache.autosubtitle.archive.Archiver;
|
||||
import com.github.gtache.autosubtitle.archive.ArchiverProvider;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.github.gtache.autosubtitle.archive.impl;
|
||||
import com.github.gtache.autosubtitle.archive.Archiver;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
|
||||
@@ -13,6 +13,7 @@ import dagger.Module;
|
||||
import dagger.Provides;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import java.util.prefs.Preferences;
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.github.gtache.autosubtitle.modules.impl;
|
||||
|
||||
import javax.inject.Qualifier;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.github.gtache.autosubtitle.modules.impl;
|
||||
|
||||
import javax.inject.Qualifier;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.github.gtache.autosubtitle.modules.impl;
|
||||
|
||||
import javax.inject.Qualifier;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.github.gtache.autosubtitle.modules.impl;
|
||||
|
||||
import javax.inject.Qualifier;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.github.gtache.autosubtitle.modules.impl;
|
||||
|
||||
import javax.inject.Qualifier;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.github.gtache.autosubtitle.modules.impl;
|
||||
|
||||
import com.github.gtache.autosubtitle.ToolType;
|
||||
import dagger.MapKey;
|
||||
|
||||
/**
|
||||
* Used for injection
|
||||
*/
|
||||
@MapKey
|
||||
public @interface ToolTypeKey {
|
||||
|
||||
/**
|
||||
* @return the tool type
|
||||
*/
|
||||
ToolType value();
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.github.gtache.autosubtitle.modules.setup.impl;
|
||||
|
||||
import javax.inject.Qualifier;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
|
||||
@@ -36,6 +36,7 @@ public final class SetupModule {
|
||||
return HttpClient.newHttpClient();
|
||||
}
|
||||
|
||||
|
||||
@Provides
|
||||
static Map<ToolType, Map<String, SetupManager>> providesSetupManagers(@VideoConverterSetup final Map<String, SetupManager> convertersManagers,
|
||||
@SubtitleExtractorSetup final Map<String, SetupManager> extractorsManagers,
|
||||
@@ -44,13 +45,4 @@ public final class SetupModule {
|
||||
ToolType.SUBTITLE_EXTRACTOR, extractorsManagers,
|
||||
ToolType.TRANSLATOR, translatorsManagers);
|
||||
}
|
||||
|
||||
@Provides
|
||||
static Map<ToolType, SetupManager> providesDefaultManagers(@VideoConverterSetup final SetupManager videoConverterManager,
|
||||
@SubtitleExtractorSetup final SetupManager subtitleExtractorManager,
|
||||
@TranslatorSetup final SetupManager translatorManager) {
|
||||
return Map.of(ToolType.VIDEO_CONVERTER, videoConverterManager,
|
||||
ToolType.SUBTITLE_EXTRACTOR, subtitleExtractorManager,
|
||||
ToolType.TRANSLATOR, translatorManager);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.github.gtache.autosubtitle.modules.setup.impl;
|
||||
|
||||
import javax.inject.Qualifier;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.github.gtache.autosubtitle.modules.setup.impl;
|
||||
|
||||
import javax.inject.Qualifier;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.github.gtache.autosubtitle.modules.setup.impl;
|
||||
|
||||
import javax.inject.Qualifier;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.github.gtache.autosubtitle.modules.setup.impl;
|
||||
|
||||
import javax.inject.Qualifier;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.github.gtache.autosubtitle.modules.setup.impl;
|
||||
|
||||
import javax.inject.Qualifier;
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||
|
||||
@Qualifier
|
||||
@Documented
|
||||
@Retention(RUNTIME)
|
||||
@Target({ElementType.PARAMETER, ElementType.METHOD, ElementType.FIELD})
|
||||
public @interface VideoLoaderSetup {
|
||||
}
|
||||
@@ -3,10 +3,12 @@ package com.github.gtache.autosubtitle.process.impl;
|
||||
import com.github.gtache.autosubtitle.process.ProcessListener;
|
||||
import com.github.gtache.autosubtitle.process.ProcessResult;
|
||||
import com.github.gtache.autosubtitle.process.ProcessRunner;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.io.IOException;
|
||||
import java.time.Duration;
|
||||
import java.util.List;
|
||||
|
||||
@@ -14,6 +14,7 @@ import com.github.gtache.autosubtitle.subtitle.impl.SubtitleImpl;
|
||||
import com.github.gtache.autosubtitle.translation.Translator;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Comparator;
|
||||
|
||||
@@ -13,12 +13,11 @@ import com.github.gtache.autosubtitle.translation.Translator;
|
||||
import javax.inject.Inject;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.Map;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
import static java.util.Objects.requireNonNull;
|
||||
|
||||
/**
|
||||
* Converts subtitles to SRT format
|
||||
*/
|
||||
@@ -27,11 +26,11 @@ public class SRTSubtitleConverter implements SubtitleConverter<SubtitleImpl> {
|
||||
private static final Pattern ARROW_PATTERN = Pattern.compile(" --> ");
|
||||
private static final Pattern DOUBLE_NEWLINE_PATTERN = Pattern.compile("\n\n");
|
||||
|
||||
private final Translator<?> translator;
|
||||
private final Map<String, Translator<?>> translators;
|
||||
|
||||
@Inject
|
||||
SRTSubtitleConverter(final Translator translator) {
|
||||
this.translator = requireNonNull(translator);
|
||||
SRTSubtitleConverter(final Map<String, Translator<?>> translators) {
|
||||
this.translators = Map.copyOf(translators);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -61,7 +60,7 @@ public class SRTSubtitleConverter implements SubtitleConverter<SubtitleImpl> {
|
||||
return new SubtitleImpl(text, start, end, null, null);
|
||||
}).toList();
|
||||
final var text = subtitles.stream().map(Subtitle::content).collect(Collectors.joining(" "));
|
||||
return new SubtitleCollectionImpl<>(text, subtitles, translator.getLanguage(text));
|
||||
return new SubtitleCollectionImpl<>(text, subtitles, translators.values().iterator().next().getLanguage(text)); //Use any translator for now
|
||||
} catch (final Exception e) {
|
||||
throw new ParseException(e);
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.github.gtache.autosubtitle.subtitle.converter.SubtitleConverter;
|
||||
import com.github.gtache.autosubtitle.subtitle.converter.SubtitleConverterProvider;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -14,6 +14,7 @@ import com.github.gtache.autosubtitle.subtitle.impl.SubtitleImpl;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.util.Comparator;
|
||||
import java.util.Objects;
|
||||
|
||||
@@ -11,10 +11,12 @@ import com.github.gtache.autosubtitle.subtitle.converter.FormatException;
|
||||
import com.github.gtache.autosubtitle.subtitle.converter.ParseException;
|
||||
import com.github.gtache.autosubtitle.subtitle.converter.SubtitleConverter;
|
||||
import com.github.gtache.autosubtitle.subtitle.converter.SubtitleConverterProvider;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
package com.github.gtache.autosubtitle.modules.setup.impl;
|
||||
|
||||
import com.github.gtache.autosubtitle.ToolType;
|
||||
import com.github.gtache.autosubtitle.setup.SetupManager;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.net.http.HttpClient;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertInstanceOf;
|
||||
import static org.mockito.Mockito.mock;
|
||||
|
||||
class TestSetupModule {
|
||||
|
||||
@@ -24,4 +28,17 @@ class TestSetupModule {
|
||||
void testHttpClient() {
|
||||
assertInstanceOf(HttpClient.class, SetupModule.providesHttpClient());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testSetupManagers() {
|
||||
final var videoConverters = Map.of("test", mock(SetupManager.class));
|
||||
final var subtitleExtractors = Map.of("test1", mock(SetupManager.class));
|
||||
final var translators = Map.of("test2", mock(SetupManager.class));
|
||||
|
||||
final var expected = Map.of(ToolType.VIDEO_CONVERTER, videoConverters,
|
||||
ToolType.SUBTITLE_EXTRACTOR, subtitleExtractors,
|
||||
ToolType.TRANSLATOR, translators);
|
||||
|
||||
assertEquals(expected, SetupModule.providesSetupManagers(videoConverters, subtitleExtractors, translators));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.github.gtache.autosubtitle.subtitle.converter.impl;
|
||||
|
||||
import com.github.gtache.autosubtitle.Language;
|
||||
import com.github.gtache.autosubtitle.subtitle.Subtitle;
|
||||
import com.github.gtache.autosubtitle.subtitle.converter.FormatOptions;
|
||||
import com.github.gtache.autosubtitle.subtitle.converter.ParseException;
|
||||
import com.github.gtache.autosubtitle.subtitle.converter.ParseOptions;
|
||||
@@ -15,6 +14,7 @@ import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
@@ -25,19 +25,20 @@ import static org.mockito.Mockito.when;
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class TestSRTSubtitleConverter {
|
||||
|
||||
private final Translator<Subtitle> translator;
|
||||
private final Translator<?> translator;
|
||||
private final Language language;
|
||||
private final FormatOptions formatOptions;
|
||||
private final ParseOptions parseOptions;
|
||||
private final SRTSubtitleConverter converter;
|
||||
|
||||
TestSRTSubtitleConverter(@Mock final Translator<Subtitle> translator, @Mock final Language language,
|
||||
TestSRTSubtitleConverter(@Mock final Translator<?> translator, @Mock final Language language,
|
||||
@Mock final FormatOptions formatOptions, @Mock final ParseOptions parseOptions) {
|
||||
this.translator = Objects.requireNonNull(translator);
|
||||
this.language = Objects.requireNonNull(language);
|
||||
this.formatOptions = Objects.requireNonNull(formatOptions);
|
||||
this.parseOptions = Objects.requireNonNull(parseOptions);
|
||||
this.converter = new SRTSubtitleConverter(translator);
|
||||
final var translators = Map.<String, Translator<?>>of("first", translator);
|
||||
this.converter = new SRTSubtitleConverter(translators);
|
||||
}
|
||||
|
||||
@BeforeEach
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.github.gtache.autosubtitle.subtitle.converter.json.impl;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.github.gtache.autosubtitle.Language;
|
||||
import com.github.gtache.autosubtitle.subtitle.Subtitle;
|
||||
@@ -24,6 +25,10 @@ import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
@@ -65,6 +70,22 @@ class TestJSONSubtitleConverter {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void testFormatError() throws JsonProcessingException {
|
||||
final var faultyMapper = mock(ObjectMapper.class);
|
||||
when(faultyMapper.writeValueAsString(any())).thenThrow(JsonProcessingException.class);
|
||||
final var faultyConverter = new JSONSubtitleConverter(faultyMapper);
|
||||
assertThrows(FormatException.class, () -> faultyConverter.format(new SubtitleCollectionImpl<>("test", List.of(), Language.FR), formatOptions));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testParseError() throws JsonProcessingException {
|
||||
final var faultyMapper = mock(ObjectMapper.class);
|
||||
when(faultyMapper.readValue(anyString(), any(Class.class))).thenThrow(JsonProcessingException.class);
|
||||
final var faultyConverter = new JSONSubtitleConverter(faultyMapper);
|
||||
assertThrows(ParseException.class, () -> faultyConverter.parse("{}", parseOptions));
|
||||
}
|
||||
|
||||
@ParameterizedTest
|
||||
@CsvSource({
|
||||
"test.json,true",
|
||||
|
||||
Reference in New Issue
Block a user