Exemple #1
0
        private E <LocalStr> StartResource(InvokerData invoker, PlayResource play, MetaData meta = null)
        {
            play.Meta = meta ?? play.Meta ?? new MetaData();
            var sourceLink = resourceResolver.RestoreLink(play.BaseData).OkOr(null);
            var playInfo   = new PlayInfoEventArgs(invoker, play, sourceLink);

            BeforeResourceStarted?.Invoke(this, playInfo);

            if (string.IsNullOrWhiteSpace(play.PlayUri))
            {
                Log.Error("Internal resource error: link is empty (resource:{0})", play);
                return(new LocalStr(strings.error_playmgr_internal_error));
            }

            Log.Debug("AudioResource start: {0}", play);
            var result = playerConnection.Play(play);

            if (!result)
            {
                Log.Error("Error return from player: {0}", result.Error);
                return(new LocalStr(strings.error_playmgr_internal_error));
            }

            playerConnection.Volume = Tools.Clamp(playerConnection.Volume, confBot.Audio.Volume.Min, confBot.Audio.Volume.Max);
            CurrentPlayData         = playInfo;     // TODO meta as readonly
            AfterResourceStarted?.Invoke(this, playInfo);

            return(R.Ok);
        }
        public static PlaylistItemGetData ToApiFormat(this ResourceResolver resourceFactory, PlaylistItem item)
        {
            var resource = item.AudioResource;

            return(new PlaylistItemGetData
            {
                Link = resourceFactory.RestoreLink(resource).OkOr(null),
                Title = resource.ResourceTitle,
                AudioType = resource.AudioType,
            });
        }