From d11b6326ccad7a988470c32ead0e5c8024b71444 Mon Sep 17 00:00:00 2001 From: Jake Date: Mon, 16 Feb 2015 16:34:38 +0000 Subject: [PATCH] Added a restriction on maximum video length --- commands.go | 2 ++ mumbledj.gcfg | 3 +++ parseconfig.go | 1 + song.go | 4 ++++ strings.go | 3 +++ 5 files changed, 13 insertions(+) diff --git a/commands.go b/commands.go index a8e0c43..7560cdb 100644 --- a/commands.go +++ b/commands.go @@ -195,6 +195,8 @@ func add(user *gumble.User, username, url string) { } } } + } else if fmt.Sprint(err) == "video exceeds the maximum allowed duration." { + dj.SendPrivateMessage(user, VIDEO_TOO_LONG_MSG) } else { dj.SendPrivateMessage(user, INVALID_YOUTUBE_ID_MSG) } diff --git a/mumbledj.gcfg b/mumbledj.gcfg index ab6e099..54ba67a 100644 --- a/mumbledj.gcfg +++ b/mumbledj.gcfg @@ -22,6 +22,9 @@ PlaylistSkipRatio = 0.5 # NOTE: If you do not want a comment by default, set the variable equal to an empty string (""). DefaultComment = "Hello! I am a bot. Type !help for a list of commands." +# Maximum song duration in seconds +# Default Value 600 +MaxSongDuration = 600 [Cache] diff --git a/parseconfig.go b/parseconfig.go index 27d8ed1..18de314 100644 --- a/parseconfig.go +++ b/parseconfig.go @@ -20,6 +20,7 @@ type DjConfig struct { SkipRatio float32 PlaylistSkipRatio float32 DefaultComment string + MaxSongDuration int } Cache struct { Enabled bool diff --git a/song.go b/song.go index c07315f..dde652a 100644 --- a/song.go +++ b/song.go @@ -60,6 +60,10 @@ func NewSong(user, id string, playlist *Playlist) (*Song, error) { duration, _ := jq.Int("data", "duration") videoDuration := fmt.Sprintf("%d:%02d", duration/60, duration%60) + if duration > dj.conf.General.MaxSongDuration { + return nil, errors.New("video exceeds the maximum allowed duration.") + } + song := &Song{ submitter: user, title: videoTitle, diff --git a/strings.go b/strings.go index cd151c6..3a43444 100644 --- a/strings.go +++ b/strings.go @@ -22,6 +22,9 @@ const CHANNEL_DOES_NOT_EXIST_MSG = "The channel you specified does not exist." // Message shown to users when they attempt to add an invalid URL to the queue. const INVALID_URL_MSG = "The URL you submitted does not match the required format." +// Message shown to users when they attempt to add a video that's too long +const VIDEO_TOO_LONG_MSG = "The video you submitted exceeds the duration allowed by the server." + // Message shown to users when they attempt to perform an action on a song when // no song is playing. const NO_MUSIC_PLAYING_MSG = "There is no music playing at the moment."