コード例 #1
0
ファイル: CommentLoader.cs プロジェクト: dghkd/KomeTubeR
        /// <summary>
        /// 解析留言內容
        /// </summary>
        /// <param name="liveChatTextMessageRenderer"></param>
        /// <param name="txtMsgRd">json data.</param>
        private void ParseTextMessage(LiveChatTextMessageRenderer liveChatTextMessageRenderer, dynamic txtMsgRd)
        {
            liveChatTextMessageRenderer.authorExternalChannelId = Convert.ToString(JsonHelper.TryGetValueByXPath(txtMsgRd, "authorExternalChannelId", ""));
            liveChatTextMessageRenderer.authorName.simpleText   = Convert.ToString(JsonHelper.TryGetValueByXPath(txtMsgRd, "authorName.simpleText", ""));
            liveChatTextMessageRenderer.authorPhoto.thumbnails  = ParseAuthorPhotoThumb(JsonHelper.TryGetValueByXPath(txtMsgRd, "authorPhoto.thumbnails", null));
            liveChatTextMessageRenderer.contextMenuAccessibility.accessibilityData.label = Convert.ToString(JsonHelper.TryGetValueByXPath(txtMsgRd, "contextMenuAccessibility.accessibilityData.label", ""));
            liveChatTextMessageRenderer.id            = Convert.ToString(JsonHelper.TryGetValueByXPath(txtMsgRd, "id", ""));
            liveChatTextMessageRenderer.timestampUsec = Convert.ToInt64(JsonHelper.TryGetValueByXPath(txtMsgRd, "timestampUsec", 0));
            dynamic runs = JsonHelper.TryGetValueByXPath(txtMsgRd, "message.runs");

            if (runs != null)
            {
                for (int i = 0; i < runs.Count; i++)
                {
                    string xPath = String.Format($"message.runs.{i.ToString()}.text");
                    liveChatTextMessageRenderer.message.simpleText += Convert.ToString(JsonHelper.TryGetValueByXPath(txtMsgRd, xPath, ""));
                }
            }

            var authorBadges = JsonHelper.TryGetValueByXPath(txtMsgRd, "authorBadges", null);

            if (authorBadges != null)
            {
                for (int i = 0; i < authorBadges.Count; i++)
                {
                    AuthorBadge badge = new AuthorBadge();
                    badge.tooltip = Convert.ToString(JsonHelper.TryGetValueByXPath(authorBadges[i], "liveChatAuthorBadgeRenderer.tooltip"));
                    liveChatTextMessageRenderer.authorBadges.Add(badge);
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// 解析留言內容
        /// </summary>
        /// <param name="liveChatTextMessageRenderer"></param>
        /// <param name="txtMsgRd">json data.</param>
        private void ParseTextMessage(LiveChatTextMessageRenderer liveChatTextMessageRenderer, dynamic txtMsgRd)
        {
            liveChatTextMessageRenderer.authorExternalChannelId = Convert.ToString(JsonHelper.TryGetValueByXPath(txtMsgRd, "authorExternalChannelId", ""));
            liveChatTextMessageRenderer.authorName.simpleText   = Convert.ToString(JsonHelper.TryGetValueByXPath(txtMsgRd, "authorName.simpleText", ""));
            liveChatTextMessageRenderer.authorPhoto.thumbnails  = ParseAuthorPhotoThumb(JsonHelper.TryGetValueByXPath(txtMsgRd, "authorPhoto.thumbnails", null));
            liveChatTextMessageRenderer.contextMenuAccessibility.accessibilityData.label = Convert.ToString(JsonHelper.TryGetValueByXPath(txtMsgRd, "contextMenuAccessibility.accessibilityData.label", ""));
            liveChatTextMessageRenderer.id            = Convert.ToString(JsonHelper.TryGetValueByXPath(txtMsgRd, "id", ""));
            liveChatTextMessageRenderer.timestampUsec = Convert.ToInt64(JsonHelper.TryGetValueByXPath(txtMsgRd, "timestampUsec", 0));

            //留言包含自訂表情符號或空格時runs陣列會分割成多元素
            dynamic runs = JsonHelper.TryGetValueByXPath(txtMsgRd, "message.runs");

            if (runs != null)
            {
                for (int i = 0; i < runs.Count; i++)
                {
                    dynamic run = runs[i];
                    Runs    r   = new Runs();

                    //解析一般文字元素
                    string text = ParseText(run);
                    if (text != "")
                    {
                        r.text = text;
                        liveChatTextMessageRenderer.message.runs.Add(r);
                    }

                    //解析Emoji元素
                    Emoji emj = ParseEmoji(run);
                    if (emj != null)
                    {
                        r.emoji = emj;
                        liveChatTextMessageRenderer.message.runs.Add(r);
                    }
                }
            }
            else
            {
                liveChatTextMessageRenderer.message.simpleText = "";
            }

            var authorBadges = JsonHelper.TryGetValueByXPath(txtMsgRd, "authorBadges", null);

            if (authorBadges != null)
            {
                //留言者可能擁有多個徽章 (EX:管理員、會員)
                for (int i = 0; i < authorBadges.Count; i++)
                {
                    AuthorBadge badge = new AuthorBadge();
                    badge.tooltip = Convert.ToString(JsonHelper.TryGetValueByXPath(authorBadges[i], "liveChatAuthorBadgeRenderer.tooltip"));
                    liveChatTextMessageRenderer.authorBadges.Add(badge);
                }
            }
        }
コード例 #3
0
ファイル: Author.cs プロジェクト: ssh-git/training-manager
 public Author()
 {
     Social = new Social();
     Badge  = new AuthorBadge();
     Avatar = new AuthorAvatar();
 }
コード例 #4
0
        public static string GetBadgeLocalUrl(this AuthorBadge badge)
        {
            var url = VirtualPathUtility.Combine(AppConstants.VirtualPaths.BadgesContent, badge.ImageName).Substring(1);

            return(url);
        }