Allows choosing and managing each tool
This commit is contained in:
@@ -15,9 +15,5 @@
|
||||
<groupId>com.github.gtache.autosubtitle</groupId>
|
||||
<artifactId>autosubtitle-whisper-common</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.github.gtache.autosubtitle.modules.setup.whisper.base;
|
||||
|
||||
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 Whisper {
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.github.gtache.autosubtitle.modules.setup.whisper.base;
|
||||
|
||||
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 WhisperBundledRoot {
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.github.gtache.autosubtitle.modules.setup.whisper.base;
|
||||
|
||||
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 WhisperPythonVersion {
|
||||
}
|
||||
@@ -1,30 +1,33 @@
|
||||
package com.github.gtache.autosubtitle.modules.setup.whisper.base;
|
||||
|
||||
import com.github.gtache.autosubtitle.impl.OS;
|
||||
import com.github.gtache.autosubtitle.modules.setup.conda.CondaSetupModule;
|
||||
import com.github.gtache.autosubtitle.modules.setup.impl.SubtitleExtractorSetup;
|
||||
import com.github.gtache.autosubtitle.modules.setup.impl.ToolsRoot;
|
||||
import com.github.gtache.autosubtitle.modules.setup.whisper.PythonVersion;
|
||||
import com.github.gtache.autosubtitle.modules.setup.whisper.WhisperBundledRoot;
|
||||
import com.github.gtache.autosubtitle.modules.setup.whisper.WhisperCommonSetupModule;
|
||||
import com.github.gtache.autosubtitle.modules.setup.whisper.WhisperVenvPath;
|
||||
import com.github.gtache.autosubtitle.setup.SetupManager;
|
||||
import com.github.gtache.autosubtitle.setup.whisper.WhisperSetupConfiguration;
|
||||
import com.github.gtache.autosubtitle.setup.whisper.base.WhisperSetupManager;
|
||||
import dagger.Binds;
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
import dagger.multibindings.IntoMap;
|
||||
import dagger.multibindings.StringKey;
|
||||
|
||||
import java.nio.file.Path;
|
||||
|
||||
/**
|
||||
* Setup module for Whisper
|
||||
*/
|
||||
@Module(includes = WhisperCommonSetupModule.class)
|
||||
@Module(includes = CondaSetupModule.class)
|
||||
public abstract class WhisperSetupModule {
|
||||
@Binds
|
||||
@SubtitleExtractorSetup
|
||||
@IntoMap
|
||||
@StringKey("whisper")
|
||||
abstract SetupManager bindsSubtitleExtractorSetupManager(final WhisperSetupManager manager);
|
||||
|
||||
@Provides
|
||||
@PythonVersion
|
||||
@WhisperPythonVersion
|
||||
static String providesPythonVersion() {
|
||||
return "3.9.19";
|
||||
}
|
||||
@@ -40,4 +43,13 @@ public abstract class WhisperSetupModule {
|
||||
static Path providesWhisperVenvPath(@WhisperBundledRoot final Path root) {
|
||||
return root.resolve("whisper-env");
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Whisper
|
||||
static WhisperSetupConfiguration providesWhisperSetupConfiguration(@WhisperBundledRoot final Path root,
|
||||
@WhisperVenvPath final Path venvPath,
|
||||
@WhisperPythonVersion final String pythonVersion,
|
||||
final OS os) {
|
||||
return new WhisperSetupConfiguration(root, venvPath, pythonVersion, os);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.github.gtache.autosubtitle.modules.setup.whisper.base;
|
||||
|
||||
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 WhisperVenvPath {
|
||||
}
|
||||
@@ -4,6 +4,8 @@ import com.github.gtache.autosubtitle.subtitle.extractor.SubtitleExtractor;
|
||||
import com.github.gtache.autosubtitle.subtitle.extractor.whisper.base.WhisperSubtitleExtractor;
|
||||
import dagger.Binds;
|
||||
import dagger.Module;
|
||||
import dagger.multibindings.IntoMap;
|
||||
import dagger.multibindings.StringKey;
|
||||
|
||||
/**
|
||||
* Dagger module for Whisper
|
||||
@@ -16,5 +18,7 @@ public abstract class WhisperExtractorModule {
|
||||
}
|
||||
|
||||
@Binds
|
||||
abstract SubtitleExtractor bindsSubtitleExtractor(final WhisperSubtitleExtractor extractor);
|
||||
@IntoMap
|
||||
@StringKey("whisper")
|
||||
abstract SubtitleExtractor<?> bindsSubtitleExtractor(final WhisperSubtitleExtractor extractor);
|
||||
}
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
package com.github.gtache.autosubtitle.modules.subtitle.parser.json.whisper.base;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.github.gtache.autosubtitle.subtitle.converter.SubtitleConverter;
|
||||
import com.github.gtache.autosubtitle.subtitle.parser.json.whisper.base.JSONSubtitleConverter;
|
||||
import dagger.Binds;
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
import dagger.multibindings.IntoMap;
|
||||
import dagger.multibindings.StringKey;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
@Module
|
||||
public abstract class WhisperJsonModule {
|
||||
|
||||
private WhisperJsonModule() {
|
||||
|
||||
}
|
||||
|
||||
@Binds
|
||||
@IntoMap
|
||||
@StringKey("json")
|
||||
abstract SubtitleConverter bindsJSONSubtitleConverter(final JSONSubtitleConverter subtitleConverter);
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
static ObjectMapper providesObjectMapper() {
|
||||
return new ObjectMapper();
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,17 @@ package com.github.gtache.autosubtitle.modules.whisper.base;
|
||||
|
||||
import com.github.gtache.autosubtitle.modules.setup.whisper.base.WhisperSetupModule;
|
||||
import com.github.gtache.autosubtitle.modules.subtitle.extractor.whisper.base.WhisperExtractorModule;
|
||||
import com.github.gtache.autosubtitle.modules.subtitle.parser.json.whisper.base.WhisperJsonModule;
|
||||
import com.github.gtache.autosubtitle.subtitle.extractor.ExtractionModelProvider;
|
||||
import com.github.gtache.autosubtitle.whisper.base.WhisperExtractionModelProvider;
|
||||
import dagger.Binds;
|
||||
import dagger.Module;
|
||||
import dagger.multibindings.IntoMap;
|
||||
import dagger.multibindings.StringKey;
|
||||
|
||||
/**
|
||||
* Dagger module for Whisper
|
||||
*/
|
||||
@Module(includes = {WhisperSetupModule.class, WhisperJsonModule.class, WhisperExtractorModule.class})
|
||||
@Module(includes = {WhisperSetupModule.class, WhisperExtractorModule.class})
|
||||
public abstract class WhisperModule {
|
||||
|
||||
private WhisperModule() {
|
||||
@@ -19,5 +20,7 @@ public abstract class WhisperModule {
|
||||
}
|
||||
|
||||
@Binds
|
||||
@IntoMap
|
||||
@StringKey("whisper")
|
||||
abstract ExtractionModelProvider bindsExtractionModelProvider(final WhisperExtractionModelProvider provider);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
package com.github.gtache.autosubtitle.setup.whisper.base;
|
||||
|
||||
import com.github.gtache.autosubtitle.modules.setup.whisper.base.Whisper;
|
||||
import com.github.gtache.autosubtitle.process.ProcessRunner;
|
||||
import com.github.gtache.autosubtitle.setup.SetupException;
|
||||
import com.github.gtache.autosubtitle.setup.SetupManager;
|
||||
import com.github.gtache.autosubtitle.setup.conda.CondaSetupManager;
|
||||
import com.github.gtache.autosubtitle.setup.whisper.AbstractWhisperSetupManager;
|
||||
import com.github.gtache.autosubtitle.setup.whisper.WhisperSetupConfiguration;
|
||||
@@ -17,7 +19,7 @@ import java.time.Duration;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* {@link com.github.gtache.autosubtitle.setup.SetupManager} for Whisper
|
||||
* {@link SetupManager} for Whisper
|
||||
*/
|
||||
@Singleton
|
||||
public class WhisperSetupManager extends AbstractWhisperSetupManager {
|
||||
@@ -25,7 +27,7 @@ public class WhisperSetupManager extends AbstractWhisperSetupManager {
|
||||
private static final Logger logger = LogManager.getLogger(WhisperSetupManager.class);
|
||||
|
||||
@Inject
|
||||
WhisperSetupManager(final CondaSetupManager condaSetupManager, final WhisperSetupConfiguration configuration,
|
||||
WhisperSetupManager(final CondaSetupManager condaSetupManager, @Whisper final WhisperSetupConfiguration configuration,
|
||||
final ProcessRunner processRunner, final HttpClient httpClient) {
|
||||
super(condaSetupManager, configuration, processRunner, httpClient);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.github.gtache.autosubtitle.subtitle.parser.json.whisper.base;
|
||||
package com.github.gtache.autosubtitle.subtitle.converter.json.whisper.base;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.github.gtache.autosubtitle.subtitle.parser.json.whisper.base;
|
||||
package com.github.gtache.autosubtitle.subtitle.converter.json.whisper.base;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.github.gtache.autosubtitle.subtitle.parser.json.whisper.base;
|
||||
package com.github.gtache.autosubtitle.subtitle.converter.json.whisper.base;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -2,9 +2,9 @@ package com.github.gtache.autosubtitle.subtitle.extractor.whisper.base;
|
||||
|
||||
import com.github.gtache.autosubtitle.Language;
|
||||
import com.github.gtache.autosubtitle.impl.OS;
|
||||
import com.github.gtache.autosubtitle.modules.setup.whisper.WhisperVenvPath;
|
||||
import com.github.gtache.autosubtitle.modules.setup.whisper.base.WhisperVenvPath;
|
||||
import com.github.gtache.autosubtitle.process.ProcessRunner;
|
||||
import com.github.gtache.autosubtitle.subtitle.converter.SubtitleConverterProvider;
|
||||
import com.github.gtache.autosubtitle.subtitle.converter.json.whisper.base.JSONSubtitleConverter;
|
||||
import com.github.gtache.autosubtitle.subtitle.extractor.ExtractOptions;
|
||||
import com.github.gtache.autosubtitle.subtitle.extractor.SubtitleExtractor;
|
||||
import com.github.gtache.autosubtitle.subtitle.extractor.whisper.AbstractWhisperSubtitleExtractor;
|
||||
@@ -24,9 +24,9 @@ public class WhisperSubtitleExtractor extends AbstractWhisperSubtitleExtractor {
|
||||
|
||||
|
||||
@Inject
|
||||
WhisperSubtitleExtractor(@WhisperVenvPath final Path venvPath, final SubtitleConverterProvider converterProvider,
|
||||
WhisperSubtitleExtractor(@WhisperVenvPath final Path venvPath, final JSONSubtitleConverter converter,
|
||||
final ProcessRunner processRunner, final OS os) {
|
||||
super(venvPath, converterProvider, processRunner, os);
|
||||
super(venvPath, converter, processRunner, os);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
*/
|
||||
module com.github.gtache.autosubtitle.whisper.base {
|
||||
requires transitive com.github.gtache.autosubtitle.whisper.common;
|
||||
requires com.fasterxml.jackson.databind;
|
||||
requires com.github.gtache.autosubtitle.core;
|
||||
requires org.apache.logging.log4j;
|
||||
|
||||
exports com.github.gtache.autosubtitle.setup.whisper.base;
|
||||
exports com.github.gtache.autosubtitle.subtitle.converter.json.whisper.base;
|
||||
exports com.github.gtache.autosubtitle.subtitle.extractor.whisper.base;
|
||||
exports com.github.gtache.autosubtitle.whisper.base;
|
||||
|
||||
exports com.github.gtache.autosubtitle.modules.setup.whisper.base;
|
||||
exports com.github.gtache.autosubtitle.modules.subtitle.extractor.whisper.base;
|
||||
exports com.github.gtache.autosubtitle.modules.whisper.base;
|
||||
|
||||
Reference in New Issue
Block a user