From 4ff4242d570dea52ce5819e9243646bde9ef5eb2 Mon Sep 17 00:00:00 2001 From: duncte123 Date: Sun, 30 Jun 2024 13:40:48 +0200 Subject: [PATCH] cleanup --- README.md | 2 + application.yml | 1 + .../lavalinkplugin/DuncteBotInjector.java | 96 +++++++------------ .../lavalinkplugin/SourceManagerInfo.java | 9 ++ .../pixeldrain/PixelDrainAudioTrack.java | 5 + .../PixeldrainAudioSourceManager.java | 3 - 6 files changed, 51 insertions(+), 65 deletions(-) create mode 100644 plugin/src/main/java/com/dunctebot/lavalinkplugin/SourceManagerInfo.java diff --git a/README.md b/README.md index 154c2cd..2d7df3a 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ Adding support for the following sources: - soundgasm - streamDeckAudio files - These files are only accepted over HTTP currently +- Pixelddrain.com ## Lavalink version compatibility @@ -67,6 +68,7 @@ plugins: tiktok: true # tiktok.com mixcloud: true # mixcloud.com soundgasm: true # soundgasm.net + pixeldrain: true # pixeldrain.com ``` ## development diff --git a/application.yml b/application.yml index d0cb222..63249e9 100644 --- a/application.yml +++ b/application.yml @@ -43,6 +43,7 @@ plugins: ocremix: true # www.ocremix.org tiktok: true # tiktok.com mixcloud: true # mixcloud.com + pixeldrain: true # pixeldrain.com metrics: prometheus: diff --git a/plugin/src/main/java/com/dunctebot/lavalinkplugin/DuncteBotInjector.java b/plugin/src/main/java/com/dunctebot/lavalinkplugin/DuncteBotInjector.java index bf7fc17..d88f133 100644 --- a/plugin/src/main/java/com/dunctebot/lavalinkplugin/DuncteBotInjector.java +++ b/plugin/src/main/java/com/dunctebot/lavalinkplugin/DuncteBotInjector.java @@ -18,81 +18,53 @@ import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import java.util.Map; import java.util.Objects; +import static java.util.Map.entry; + @Service public class DuncteBotInjector implements AudioPlayerManagerConfiguration { - private final DuncteBotConfig config; - private final DuncteBotConfig.Sources sourcesConfig; + private final Logger logger = LoggerFactory.getLogger(DuncteBotInjector.class); + private final Map sourceManagers; public DuncteBotInjector(DuncteBotConfig config, DuncteBotConfig.Sources sourcesConfig) { - this.config = config; - this.sourcesConfig = sourcesConfig; + + this.sourceManagers = Map.ofEntries( + entry("yarn", new SourceManagerInfo(sourcesConfig::isGetyarn, GetyarnAudioSourceManager::new)), + entry("clypit", new SourceManagerInfo(sourcesConfig::isClypit, ClypitAudioSourceManager::new)), + entry("PornHub", new SourceManagerInfo(sourcesConfig::isPornhub, PornHubAudioSourceManager::new)), + entry("Reddit", new SourceManagerInfo(sourcesConfig::isReddit, RedditAudioSourceManager::new)), + entry("OC Remix", new SourceManagerInfo(sourcesConfig::isOcremix, OCRemixAudioSourceManager::new)), + entry("TikTok", new SourceManagerInfo(sourcesConfig::isTiktok, TikTokAudioSourceManager::new)), + entry("Mixcloud", new SourceManagerInfo(sourcesConfig::isMixcloud, MixcloudAudioSourceManager::new)), + entry("Soundgasm", new SourceManagerInfo(sourcesConfig::isSoundgasm, SoundGasmAudioSourceManager::new)), + entry("Elgato (.streamDeckAudio)", new SourceManagerInfo(sourcesConfig::isElgato, StreamDeckAudioSourceManager::new)), + entry("pixeldrain", new SourceManagerInfo(sourcesConfig::isPixeldrain, PixeldrainAudioSourceManager::new)), + entry("Text To Speech", new SourceManagerInfo(sourcesConfig::isTts, () -> { + final String lang = Objects.requireNonNullElse(config.getTtsLanguage(), "en-AU"); + + logger.info("TTS language is: {}", lang); + + return new SpeechAudioSourceManager(lang); + })) + ); } @NotNull @Override public AudioPlayerManager configure(@NotNull AudioPlayerManager manager) { - final Logger logger = LoggerFactory.getLogger(DuncteBotInjector.class); // register custom source managers - - if (this.sourcesConfig.isGetyarn()) { - logger.info("Registering getyarn audio source manager"); - manager.registerSourceManager(new GetyarnAudioSourceManager()); - } - - if (this.sourcesConfig.isClypit()) { - logger.info("Registering clypit audio source manager"); - manager.registerSourceManager(new ClypitAudioSourceManager()); - } - - if (this.sourcesConfig.isTts()) { - final String lang = Objects.requireNonNullElse(this.config.getTtsLanguage(), "en-AU"); - - logger.info("Registering text to speech audio source manager with language {}", lang); - manager.registerSourceManager(new SpeechAudioSourceManager(lang)); - } - - if (this.sourcesConfig.isPornhub()) { - logger.info("Registering PornHub audio source manager"); - manager.registerSourceManager(new PornHubAudioSourceManager()); - } - - if (this.sourcesConfig.isReddit()) { - logger.info("Registering reddit audio source manager"); - manager.registerSourceManager(new RedditAudioSourceManager()); - } - - if (this.sourcesConfig.isOcremix()) { - logger.info("Registering OC Remix audio source manager"); - manager.registerSourceManager(new OCRemixAudioSourceManager()); - } - - if (this.sourcesConfig.isTiktok()) { - logger.info("Registering TikTok audio source manager"); - manager.registerSourceManager(new TikTokAudioSourceManager()); - } - - if (this.sourcesConfig.isMixcloud()) { - logger.info("Registering Mixcloud audio source manager"); - manager.registerSourceManager(new MixcloudAudioSourceManager()); - } - - if (this.sourcesConfig.isSoundgasm()) { - logger.info("Registering Soundgasm audio source manager"); - manager.registerSourceManager(new SoundGasmAudioSourceManager()); - } - - if (this.sourcesConfig.isElgato()) { - logger.warn("Elgato (.streamDeckAudio) audio source manager is not supported atm"); -// logger.info("Registering Elgato (.streamDeckAudio) audio source manager"); -// manager.registerSourceManager(new StreamDeckAudioSourceManager()); - } - - if (this.sourcesConfig.isPixeldrain()) { - logger.info("Registering pixeldrain audio source manager"); - manager.registerSourceManager(new PixeldrainAudioSourceManager()); + for (var entry : this.sourceManagers.entrySet()) { + final var info = entry.getValue(); + + if (info.configSupplier().getAsBoolean()) { + logger.info("Registering {} audio source manager", entry.getKey()); + manager.registerSourceManager(info.supplier().get()); + } else { + logger.info("{} audio source manager is disabled, skipping it", entry.getKey()); + } } return manager; diff --git a/plugin/src/main/java/com/dunctebot/lavalinkplugin/SourceManagerInfo.java b/plugin/src/main/java/com/dunctebot/lavalinkplugin/SourceManagerInfo.java new file mode 100644 index 0000000..0402547 --- /dev/null +++ b/plugin/src/main/java/com/dunctebot/lavalinkplugin/SourceManagerInfo.java @@ -0,0 +1,9 @@ +package com.dunctebot.lavalinkplugin; + +import com.sedmelluq.discord.lavaplayer.source.AudioSourceManager; + +import java.util.function.BooleanSupplier; +import java.util.function.Supplier; + +public record SourceManagerInfo(BooleanSupplier configSupplier, Supplier supplier) { +} diff --git a/source-managers/src/main/java/com/dunctebot/sourcemanagers/pixeldrain/PixelDrainAudioTrack.java b/source-managers/src/main/java/com/dunctebot/sourcemanagers/pixeldrain/PixelDrainAudioTrack.java index 2af20c6..d563155 100644 --- a/source-managers/src/main/java/com/dunctebot/sourcemanagers/pixeldrain/PixelDrainAudioTrack.java +++ b/source-managers/src/main/java/com/dunctebot/sourcemanagers/pixeldrain/PixelDrainAudioTrack.java @@ -21,4 +21,9 @@ protected InternalAudioTrack createAudioTrack(AudioTrackInfo trackInfo, Seekable public String getPlaybackUrl() { return String.format(PixeldrainAudioSourceManager.AUDIO_TEMPLATE, this.trackInfo.identifier); } + + @Override + public PixeldrainAudioSourceManager getSourceManager() { + return (PixeldrainAudioSourceManager) super.getSourceManager(); + } } diff --git a/source-managers/src/main/java/com/dunctebot/sourcemanagers/pixeldrain/PixeldrainAudioSourceManager.java b/source-managers/src/main/java/com/dunctebot/sourcemanagers/pixeldrain/PixeldrainAudioSourceManager.java index 1885502..cf32924 100644 --- a/source-managers/src/main/java/com/dunctebot/sourcemanagers/pixeldrain/PixeldrainAudioSourceManager.java +++ b/source-managers/src/main/java/com/dunctebot/sourcemanagers/pixeldrain/PixeldrainAudioSourceManager.java @@ -75,9 +75,6 @@ private AudioTrackInfo downloadInfo(String identifier) throws IOException { throw new FriendlyException("Type " + type + " is currently not supported", FriendlyException.Severity.COMMON, null); } - System.out.println(type); - System.out.println(title); - return new AudioTrackInfo( title, "Unknown artist",