예제 #1
0
        public LavaLinkTrack DecodeTrack(string trackString)
        {
            const int trackInfoVersioned = 1;
            var       raw = Convert.FromBase64String(trackString);

            var decoded = new LavaLinkTrack
            {
                Hash = trackString
            };

            using var ms = new MemoryStream(raw);
            using var jb = new JavaBinaryHelper(ms);

            var messageHeader = jb.ReadInt32();
            var messageFlags  = (int)((messageHeader & 0xC0000000L) >> 30);
            var version       = (messageFlags & trackInfoVersioned) != 0 ? jb.ReadSByte() & 0xFF : 1;

            decoded.Info.Title       = jb.ReadJavaUtf8();
            decoded.Info.Author      = jb.ReadJavaUtf8();
            decoded.Info.TrackLength = jb.ReadInt64();
            decoded.Info.Id          = jb.ReadJavaUtf8();
            decoded.Info.IsStream    = jb.ReadBoolean();

            var uri = jb.ReadNullableString();

            decoded.Info.Uri = uri != null && version >= 2 ? new Uri(uri) : null;

            return(decoded);
        }
예제 #2
0
파일: Lyrics.cs 프로젝트: emre1702/BonusBot
        private async Task OutputEmbedInfo(string lyrics, LavaLinkTrack audio)
        {
            var thumbnail = await ThumbnailHelper.Instance.FetchThumbnail(audio);

            var embed = EmbedHelper.DefaultEmbed
                        .WithImageUrl(thumbnail)
                        .WithDescription(lyrics)
                        .WithAuthor(string.Format(ModuleTexts.LyricsForInfo, audio.Info.Title), thumbnail);
            await Class.ReplyAsync(embed);
        }
예제 #3
0
 protected AudioTrack GetAudioTrack(LavaLinkTrack track)
 => new(track, Class.Context.GuildUser !);
예제 #4
0
파일: Lyrics.cs 프로젝트: emre1702/BonusBot
        private Task OutputTextInfo(string lyrics, LavaLinkTrack audio)
        {
            var msg = string.Format(ModuleTexts.LyricsForInfo, audio.Info.Title) + Environment.NewLine + lyrics;

            return(Class.ReplyAsync(msg));
        }