feat: added web server with currently playing song
This commit is contained in:
parent
1a4986f294
commit
7f16452a99
12 changed files with 847 additions and 9 deletions
|
@ -10,20 +10,21 @@ import (
|
|||
"discord-jukebox-bot/pkg/commands"
|
||||
"discord-jukebox-bot/pkg/config"
|
||||
"discord-jukebox-bot/pkg/logger"
|
||||
"discord-jukebox-bot/pkg/web"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// Parse command-line flags
|
||||
debugMode := flag.Bool("debug", false, "Enable debug mode with verbose logging")
|
||||
flag.Parse()
|
||||
|
||||
|
||||
// Initialize logger
|
||||
logger.Init(*debugMode)
|
||||
logger.Info("Discord Jukebox Bot - Starting up...")
|
||||
if *debugMode {
|
||||
logger.Debug("Debug mode enabled - verbose logging will be shown")
|
||||
}
|
||||
|
||||
|
||||
// Load configuration from environment variables and .env file
|
||||
logger.Info("Loading configuration...")
|
||||
cfg, err := config.Load()
|
||||
|
@ -33,7 +34,7 @@ func main() {
|
|||
os.Exit(1)
|
||||
}
|
||||
logger.Info("Configuration loaded successfully")
|
||||
|
||||
|
||||
// Print config summary in debug mode
|
||||
if logger.IsDebug() {
|
||||
logger.Debug("Configuration Summary",
|
||||
|
@ -42,14 +43,14 @@ func main() {
|
|||
"subsonic_username", cfg.SubsonicUsername,
|
||||
"subsonic_api_version", cfg.SubsonicVersion)
|
||||
}
|
||||
|
||||
|
||||
// Check if ffmpeg is available - important for audio transcoding
|
||||
ffmpegPath, err := exec.LookPath("ffmpeg")
|
||||
if err != nil {
|
||||
logger.Warn("ffmpeg not found in system PATH. Audio streaming may be less reliable.",
|
||||
logger.Warn("ffmpeg not found in system PATH. Audio streaming may be less reliable.",
|
||||
"error", err.Error())
|
||||
} else {
|
||||
logger.Info("ffmpeg found and available for audio transcoding",
|
||||
logger.Info("ffmpeg found and available for audio transcoding",
|
||||
"path", ffmpegPath)
|
||||
}
|
||||
|
||||
|
@ -69,6 +70,28 @@ func main() {
|
|||
}
|
||||
logger.Info("Discord Jukebox Bot is now running.")
|
||||
logger.Info("Use /jukebox play, /jukebox stop, or /jukebox skip in your Discord server.")
|
||||
|
||||
// Get jukebox player reference
|
||||
jukebox := commands.GetJukebox()
|
||||
|
||||
// HTTP server reference
|
||||
var webServer *web.Server
|
||||
|
||||
// Initialize and start web server if enabled
|
||||
if cfg.WebEnabled {
|
||||
logger.Info("Starting HTTP server...", "address", cfg.WebAddr)
|
||||
var err error
|
||||
webServer, err = web.StartServer(jukebox, bot, cfg.WebAddr)
|
||||
if err != nil {
|
||||
logger.Error("Error starting HTTP server", "error", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
logger.Info("HTTP server is now running", "address", cfg.WebAddr)
|
||||
} else {
|
||||
logger.Info("HTTP server is disabled. Set JUKEBOX_WEB_ENABLED=true to enable")
|
||||
}
|
||||
|
||||
logger.Info("Press Ctrl+C to exit.")
|
||||
|
||||
// Wait for a termination signal
|
||||
|
@ -78,8 +101,19 @@ func main() {
|
|||
|
||||
// Clean up and exit
|
||||
logger.Info("Shutting down Discord Jukebox Bot...")
|
||||
|
||||
// Stop the HTTP server if it was started
|
||||
if cfg.WebEnabled && webServer != nil {
|
||||
logger.Info("Stopping HTTP server...")
|
||||
if err := webServer.Stop(); err != nil {
|
||||
logger.Error("Error stopping HTTP server", "error", err)
|
||||
}
|
||||
logger.Info("HTTP server stopped")
|
||||
}
|
||||
|
||||
// Stop the Discord bot
|
||||
if err := bot.Stop(); err != nil {
|
||||
logger.Error("Error stopping bot", "error", err)
|
||||
}
|
||||
logger.Info("Bot stopped. Goodbye!")
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue