diff --git a/circle.yml b/circle.yml
index baa1a4b..fa81c7e 100644
--- a/circle.yml
+++ b/circle.yml
@@ -1,7 +1,4 @@
machine:
- go:
- version:
- 1.4.2
environment:
PATH: $PATH:$HOME/bin/
LD_RUN_PATH: $LD_RUN_PATH:$HOME/opus/lib
diff --git a/commands.go b/commands.go
index 22121e2..5dc19b7 100644
--- a/commands.go
+++ b/commands.go
@@ -159,6 +159,13 @@ func parseCommand(user *gumble.User, username, command string) {
} else {
dj.SendPrivateMessage(user, NO_PERMISSION_MSG)
}
+ // Test command (WORKAROUND)
+ case "test":
+ if dj.HasPermission(username, dj.conf.Permissions.AdminKill) && test != nil {
+ test.testYoutubeSong()
+ } else {
+ dj.SendPrivateMessage(user, NO_PERMISSION_MSG)
+ }
default:
dj.SendPrivateMessage(user, COMMAND_DOESNT_EXIST_MSG)
}
diff --git a/test.go b/test.go
index c9b40ec..8b41a8a 100644
--- a/test.go
+++ b/test.go
@@ -6,19 +6,31 @@ import (
"time"
)
-func Test(password, ip, port string) {
- testYoutubeSong(password, ip, port)
+type Test struct {
+ password string
+ ip string
+ port string
}
-func createClient(uname, password, ip, port string) *gumble.Client {
+var test Test
+
+func Test(password, ip, port string) {
+ test = Test{
+ password: password,
+ ip: ip,
+ port: port,
+ }
+}
+
+func (t Test) createClient(uname) *gumble.Client {
return gumble.NewClient(&gumble.Config{
Username: uname,
- Password: password,
- Address: ip + ":" + port})
+ Password: t.password,
+ Address: t.ip + ":" + t.port})
}
-func testYoutubeSong(password, ip, port string) {
- dummyClient := createClient("dummy", password, ip, port)
+func (t Test) testYoutubeSong() {
+ dummyClient := t.createClient("dummy")
dummyClient.Connect()
dummyUser := dj.client.Users.Find("dummy")
diff --git a/youtube_dl.go b/youtube_dl.go
index b7afff2..a661df4 100644
--- a/youtube_dl.go
+++ b/youtube_dl.go
@@ -38,14 +38,15 @@ type YouTubeDLPlaylist struct {
func (dl *YouTubeDLSong) Download() error {
// Checks to see if song is already downloaded
- if _, err := os.Stat(fmt.Sprintf("%s/.mumbledj/songs/%s", dj.homeDir, dl.id+".m4a")); os.IsNotExist(err) {
- cmd := exec.Command("youtube-dl", "--output", fmt.Sprintf(`~/.mumbledj/songs/%s`, dl.id+".m4a"), "--format", "m4a", "--", dl.url)
+ if _, err := os.Stat(fmt.Sprintf("%s/.mumbledj/songs/%s", dj.homeDir, dl.Filename())); os.IsNotExist(err) {
+ cmd := exec.Command("youtube-dl", "--output", fmt.Sprintf(`~/.mumbledj/songs/%s`, dl.Filename()), "--format", "m4a", dl.url)
if err := cmd.Run(); err == nil {
if dj.conf.Cache.Enabled {
dj.cache.CheckMaximumDirectorySize()
}
return nil
}
+ Verbose("youtube-dl: " + err.Error())
return errors.New("Song download failed.")
}
return nil
@@ -58,18 +59,16 @@ func (dl *YouTubeDLSong) Play() {
offsetDuration, _ := time.ParseDuration(fmt.Sprintf("%ds", dl.offset))
dj.audioStream.Offset = offsetDuration
}
- dj.audioStream.Source = gumble_ffmpeg.SourceFile(fmt.Sprintf("%s/.mumbledj/songs/%s.m4a", dj.homeDir, dl.id))
+ dj.audioStream.Source = gumble_ffmpeg.SourceFile(fmt.Sprintf("%s/.mumbledj/songs/%s", dj.homeDir, dl.Filename()))
if err := dj.audioStream.Play(); err != nil {
panic(err)
} else {
- message := `
|
%s (%s) |
Added by %s |
`
+ message := ` |
%s (%s) |
Added by %s |
`
message = fmt.Sprintf(message, dl.thumbnail, dl.url, dl.title, dl.duration, dl.submitter)
- if isNil(dl.playlist) {
- dj.client.Self.Channel.Send(message+`
`, false)
- } else {
- message += `From playlist "%s" |
`
- dj.client.Self.Channel.Send(fmt.Sprintf(message, dl.playlist.Title()), false)
+ if !isNil(dl.playlist) {
+ message = fmt.Sprintf(message+`From playlist "%s" |
`, dl.playlist.Title())
}
+ dj.client.Self.Channel.Send(message+``, false)
Verbose("Now playing " + dl.title)
go func() {
@@ -82,7 +81,7 @@ func (dl *YouTubeDLSong) Play() {
// Delete deletes the song from ~/.mumbledj/songs if the cache is disabled.
func (dl *YouTubeDLSong) Delete() error {
if dj.conf.Cache.Enabled == false {
- filePath := fmt.Sprintf("%s/.mumbledj/songs/%s.m4a", dj.homeDir, dl.id)
+ filePath := fmt.Sprintf("%s/.mumbledj/songs/%s", dj.homeDir, dl.Filename())
if _, err := os.Stat(filePath); err == nil {
if err := os.Remove(filePath); err == nil {
return nil