Esempio n. 1
0
        /// <summary>
        /// コメントを取得する(エントリー・ポイント)
        /// </summary>
        /// <returns></returns>
        public async Task <List <ComApi.CommentBody.Json.JsonComment> > GetComment(WatchPage::BaseJson data, NicoContext context, bool kako = false)
        {
            var logger = NicoLogger.GetLogger();

            logger.Debug($"過去ログ: {kako}", moduleName);


            //threadkeyを取得
            (crInfo.Threadkey, crInfo.Force184) = await GetThreadKey(data.video.dmcInfo.thread.thread_id.ToString(), context);


            //最古コメントを取得
            logger.Log("現行コメントをダウンロード中...");
            var comments = new CommentList();

            comments.Add(await GetCommentData(data));
            ComApi::CommentBody.Json.Chat firstComment = comments.GetFirstComment();



            if (kako)
            {
                crInfo.WayBackKey = await GetWayBackKey(data.video.dmcInfo.thread.thread_id, context);

                //初期whenデータを作成
                int _when = comments.GetFirstComment().date;
                int i     = 1;
                do
                {
                    var kacomments = new CommentList();
                    logger.Log($"過去ログをダウンロード中...({i}件目、no.{firstComment.no}まで取得完了)");
                    kacomments.Add(await GetCommentData(data, _when));
                    try
                    {
                        firstComment = kacomments.GetFirstComment();
                    }
                    catch
                    {
                        break;
                    }
                    _when = firstComment.GetPrevDate();
                    comments.Merge(kacomments);
                    ++i;
                    if (comments.IsMax(i))
                    {
                        break;
                    }
                }while (firstComment.no > 1);
            }
            logger.Log("ダウンロードしたコメントの整合性をチェックしています。");
            comments.FormatComments();

            return(comments.Comments);
        }
Esempio n. 2
0
        /// <summary>
        /// chatを取得
        /// </summary>
        private ComApi::CommentBody.XML.packetChat GetChat(ComApi::CommentBody.Json.Chat chat)
        {
            var xmlChat = new ComApi::CommentBody.XML.packetChat();

            xmlChat.thread    = chat.thread == null ? 0 : int.Parse(chat.thread);
            xmlChat.no        = chat.no;
            xmlChat.vpos      = chat.vpos;
            xmlChat.date      = chat.date;
            xmlChat.date_usec = chat.date_usec;
            xmlChat.premium   = chat.premium;
            xmlChat.anonymity = chat.anonymity;
            xmlChat.user_id   = chat.user_id == null ? "" : chat.user_id;
            xmlChat.mail      = chat.mail == null ? "" : chat.mail;
            xmlChat.leaf      = chat.leaf;
            xmlChat.deleted   = chat.deleted;
            xmlChat.score     = chat.score;
            xmlChat.Value     = chat.content == null ? "" : chat.content;

            return(xmlChat);
        }