public List <IInternalMessage> GetActions() { var list = new List <IInternalMessage>(); if (!_d.ContainsKey("continuationContents")) { return(list); } if (!_d.continuationContents.liveChatContinuation.ContainsKey("actions")) { return(list); } var actions = _d.continuationContents.liveChatContinuation.actions; foreach (var action in actions) { var message = (IInternalMessage)Parser2.ParseAction(action); if (message == null) { continue; } list.Add(message); } return(list); }
public List <IInternalMessage> GetActions() { var list = new List <IInternalMessage>(); var actions = _d.contents?.liveChatRenderer?.actions; if (actions == null) { return(list); } foreach (var action in actions) { var message = (IInternalMessage)Parser2.ParseAction(action); if (message == null) { continue; } list.Add(message); } return(list); }
public static IInternalMessage ParseAction(dynamic action) { IInternalMessage ret; if (action.ContainsKey("addChatItemAction")) { var item = action.addChatItemAction.item; if (item.ContainsKey("liveChatTextMessageRenderer")) { ret = Parser2.ParseLiveChatTextMessageRenderer(item.liveChatTextMessageRenderer); } else if (item.ContainsKey("liveChatPaidMessageRenderer")) { var ren = item.liveChatPaidMessageRenderer; var commentData = Parser2.ParseLiveChatPaidMessageRenderer(ren); ret = commentData; } else if (item.ContainsKey("liveChatViewerEngagementMessageRenderer")) { var ren = item.liveChatViewerEngagementMessageRenderer; //ブラウザで見ると表示される"チャットへようこそ!ご自身のプライバシーを守るとともに~"というやつ ret = null; } else if (item.ContainsKey("liveChatMembershipItemRenderer")) { //メンバーに登録した時に流れる //{{"liveChatMembershipItemRenderer":{"id":"ChwKGkNNYTBvZmI2anU0Q0ZZT0R3Z0VkVk4wSWNn","timestampUsec":"1610199056715518","authorExternalChannelId":"UC3NDq4U3m399k6Xvu3Xjmdw","headerSubtext":{"runs":[{"text":"★THEかなた★"},{"text":"へようこそ!"}]},"authorName":{"simpleText":"NightStrix"},"authorPhoto":{"thumbnails":[{"url":"https://yt4.ggpht.com/ytc/AAUvwnhRqfpVnCOX-xA6HyfwiAGXePe_Ahc3MjLaetfwYQ=s32-c-k-c0x00ffffff-no-rj","width":32,"height":32},{"url":"https://yt4.ggpht.com/ytc/AAUvwnhRqfpVnCOX-xA6HyfwiAGXePe_Ahc3MjLaetfwYQ=s64-c-k-c0x00ffffff-no-rj","width":64,"height":64}]},"authorBadges":[{"liveChatAuthorBadgeRenderer":{"customThumbnail":{"thumbnails":[{"url":"https://yt3.ggpht.com/kjXx5nboby_LOvHUnWn4phLsmJw-zyUjZccLSCV3vXx2pvouqWxALzm2KFtWcf7ylkTQVcodow=s16-c-k"},{"url":"https://yt3.ggpht.com/kjXx5nboby_LOvHUnWn4phLsmJw-zyUjZccLSCV3vXx2pvouqWxALzm2KFtWcf7ylkTQVcodow=s32-c-k"}]},"tooltip":"新規メンバー","accessibility":{"accessibilityData":{"label":"新規メンバー"}}}}],"contextMenuEndpoint":{"commandMetadata":{"webCommandMetadata":{"ignoreNavigation":true}},"liveChatItemContextMenuEndpoint":{"params":"Q2g0S0hBb2FRMDFoTUc5bVlqWnFkVFJEUmxsUFJIZG5SV1JXVGpCSlkyY1FBQm80Q2cwS0MxZ3plRE52YldONFJGSnJLaWNLR0ZWRFdteEVXSHBIYjI4M1pEUTBZbmRrVGs5aVJtRmpaeElMV0RONE0yOXRZM2hFVW1zZ0FpZ0JNaG9LR0ZWRE0wNUVjVFJWTTIwek9UbHJObGgyZFROWWFtMWtkdyUzRCUzRA=="}},"contextMenuAccessibility":{"accessibilityData":{"label":"コメントの操作"}}}}} ret = Parser2.ParseLiveChatMembershipItemRenderer(item.liveChatMembershipItemRenderer); } else if (item.ContainsKey("liveChatPaidStickerRenderer")) { // //{{ // "liveChatPaidStickerRenderer": { // "id": "ChwKGkNOYlRuNjJWai00Q0ZjTU01d29kRk9RTTNB", // "contextMenuEndpoint": { // "clickTrackingParams": "CAYQ77sEIhMIrNzTs5WP7gIVI6DCCh14zQFJ", // "commandMetadata": { // "webCommandMetadata": { // "ignoreNavigation": true // } // }, // "liveChatItemContextMenuEndpoint": { // "params": "Q2g0S0hBb2FRMDVpVkc0Mk1sWnFMVFJEUm1OTlRUVjNiMlJHVDFGTk0wRVFBQm80Q2cwS0MyRm5iM28zYzJReGJrZHJLaWNLR0ZWRE1XOXdTRlZ5ZHpoeWRtNXpZV1JVTFdsSGNEZERaeElMWVdkdmVqZHpaREZ1UjJzZ0FpZ0JNaG9LR0ZWRFJUVnlRMGRxWlRGc1dqUTFObkZOZDBsZmNscGtadyUzRCUzRA==" // } // }, // "contextMenuAccessibility": { // "accessibilityData": { // "label": "コメントの操作" // } // }, // "timestampUsec": "1610206160591525", // "authorPhoto": { // "thumbnails": [ // { // "url": "https://yt4.ggpht.com/ytc/AAUvwnjpwOBLdPMAdYAoEyoQRdVeu17VcJqAXkwNc0wA=s32-c-k-c0x00ffffff-no-rj", // "width": 32, // "height": 32 // }, // { // "url": "https://yt4.ggpht.com/ytc/AAUvwnjpwOBLdPMAdYAoEyoQRdVeu17VcJqAXkwNc0wA=s64-c-k-c0x00ffffff-no-rj", // "width": 64, // "height": 64 // } // ] // }, // "authorName": { // "simpleText": "qfeuille3" // }, // "authorExternalChannelId": "UCE5rCGje1lZ456qMwI_rZdg", // "sticker": { // "thumbnails": [ // { // "url": "//lh3.googleusercontent.com/1GF4XO0fhtEnQiPQwgLDQ49XhFOJxV7aJW3ku9eJEJptm1UwdE-vzQb4wTF5Utg5rcsSJuBY7sCkwyTLkeg=s104-rg", // "width": 104, // "height": 104 // }, // { // "url": "//lh3.googleusercontent.com/1GF4XO0fhtEnQiPQwgLDQ49XhFOJxV7aJW3ku9eJEJptm1UwdE-vzQb4wTF5Utg5rcsSJuBY7sCkwyTLkeg=s208-rg", // "width": 208, // "height": 208 // } // ], // "accessibility": { // "accessibilityData": { // "label": "伝統的な衣装を身につけて扇子を振っている柴犬" // } // } // }, // "moneyChipBackgroundColor": 4294953512, // "moneyChipTextColor": 3741319168, // "purchaseAmountText": { // "simpleText": "SGD 10.00" // }, // "stickerDisplayWidth": 104, // "stickerDisplayHeight": 104, // "backgroundColor": 4294947584, // "authorNameTextColor": 2315255808, // "trackingParams": "CAYQ77sEIhMIrNzTs5WP7gIVI6DCCh14zQFJ" // } //}} ret = null; } else if (item.ContainsKey("liveChatPlaceholderItemRenderer")) { //{{ // "liveChatPlaceholderItemRenderer": { // "id": "CjkKGkNJYXhrdnVNa080Q0ZRaXJ3UW9kS2E4TWhBEhtDTjI4N00yTGtPNENGWUd0RFFvZHFDc0hIZzQ%3D", // "timestampUsec": "1610238258354345" // } //}} ret = null; } else { ret = null; } } else if (action.ContainsKey("addLiveChatTickerItemAction")) { ret = null; } else if (action.ContainsKey("markChatItemAsDeletedAction")) { //{{ // "markChatItemAsDeletedAction": { // "deletedStateMessage": { // "runs": [ // { // "text": "[メッセージが撤回されました]" // } // ] // }, // "targetItemId": "CjoKGkNMQ0RvOVA2anU0Q0Zid1RyUVlkV05rT1NBEhxDTDd3d3RuNGp1NENGUU9jandvZERGOEZSUTEw" // } //}} ret = null; } else if (action.ContainsKey("markChatItemsByAuthorAsDeletedAction")) { //{{ // "markChatItemsByAuthorAsDeletedAction": { // "deletedStateMessage": { // "runs": [ // { // "text": "[メッセージが削除されました]" // } // ] // }, // "externalChannelId": "UCo1q4cmG01Emu7LSuLzunzA" // } //}} ret = null; } else { ret = null; } return(ret); }