Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }