// NewSong creates a track and adds to the queue func (sc SoundCloud) NewSong(user *gumble.User, trackData *jsonq.JsonQuery, offset int, playlist Playlist) (Song, error) { title, _ := trackData.String("title") id, _ := trackData.Int("id") durationMS, _ := trackData.Int("duration") url, _ := trackData.String("permalink_url") thumbnail, err := trackData.String("artwork_url") if err != nil { // Song has no artwork, using profile avatar instead userObj, _ := trackData.Object("user") thumbnail, _ = jsonq.NewQuery(userObj).String("avatar_url") } song := &AudioTrack{ id: strconv.Itoa(id), title: title, url: url, thumbnail: thumbnail, submitter: user, duration: durationMS / 1000, offset: offset, format: "mp3", playlist: playlist, skippers: make([]string, 0), dontSkip: false, service: sc, } return song, nil }
// NewSong creates a track and adds to the queue func (mc Mixcloud) NewSong(user *gumble.User, trackData *jsonq.JsonQuery, offset int) (Song, error) { title, _ := trackData.String("name") id, _ := trackData.String("slug") duration, _ := trackData.Int("audio_length") url, _ := trackData.String("url") thumbnail, err := trackData.String("pictures", "large") if err != nil { // Song has no artwork, using profile avatar instead userObj, _ := trackData.Object("user") thumbnail, _ = jsonq.NewQuery(userObj).String("pictures", "thumbnail") } song := &AudioTrack{ id: id, title: title, url: url, thumbnail: thumbnail, submitter: user, duration: duration, offset: offset, format: "best", skippers: make([]string, 0), dontSkip: false, service: mc, } return song, nil }
func getStorageFromConfig(key string, jq *jsonq.JsonQuery) (gostorages.Storage, error) { storageType, err := jq.String("storage", key, "type") parameter, ok := Storages[storageType] if !ok { return nil, fmt.Errorf("Storage %s does not exist", key) } config, err := jq.Object("storage", key) if err != nil { return nil, err } storage, err := parameter(util.MapInterfaceToMapString(config)) if err != nil { return nil, err } return storage, err }