/// <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); } } }
/// <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); } } }
public Author() { Social = new Social(); Badge = new AuthorBadge(); Avatar = new AuthorAvatar(); }
public static string GetBadgeLocalUrl(this AuthorBadge badge) { var url = VirtualPathUtility.Combine(AppConstants.VirtualPaths.BadgesContent, badge.ImageName).Substring(1); return(url); }