Пример #1
0
        /// <summary>
        /// コメント一覧を取得する(非公開API)
        /// </summary>
        /// <param name="live_id"></param>
        /// <param name="lastCommentId"></param>
        /// <param name="f"></param>
        /// <param name="count"></param>
        public static async Task <(Low.ListAll.Comment[], string raw)> GetListAll(IDataServer dataSource, string broadcasterName, long live_id, long lastCommentId, int from, int count, CookieContainer cc)
        {
            var url = $"https://twitcasting.tv/{broadcasterName}/userajax.php?c=listall&m={live_id}&k={lastCommentId}&f={from}&n={count}";
            var str = await dataSource.GetAsync(url, cc);

            var obj = Tools.Deserialize <Low.ListAll.RootObject>(str);

            return(obj.Comments, str);
        }
Пример #2
0
        /// <summary>
        /// (非公開API)
        /// </summary>
        /// <param name="live_id"></param>
        /// <param name="n"></param>
        /// <param name="lastCommentId"></param>
        public static async Task <(List <LowObject.Comment> LowComments, int Cnum, string raw)> GetListUpdate(IDataServer dataSource, string broadcaster, long live_id, int cnum, long lastCommentId, CookieContainer cc)
        {
            var url = $"http://twitcasting.tv/{broadcaster}/userajax.php?c=listupdate&m={live_id}&n={cnum}&k={lastCommentId}";

            var str = await dataSource.GetAsync(url, cc);

            if (str == "[]")
            {
                return(new List <LowObject.Comment>(), cnum, str);
            }
            var obj = Tools.Deserialize <LowObject.ListUpdate>(str);

            var comments = obj.comment;
            var newCnum  = obj.cnum;

            return(comments, newCnum, str);
        }
Пример #3
0
        internal static async Task <(Low.ResponseToPost.RootObject, string raw)> PostCommentAsync(
            IDataServer dataSource, string broadcasterId, long liveId, long lastCommentId, string comment, CookieContainer cc)
        {
            var url  = $"https://twitcasting.tv/{broadcasterId}/userajax.php?c=post";
            var data = new Dictionary <string, string>
            {
                { "m", liveId.ToString() },
                { "s", comment },
                { "o", broadcasterId },
                { "k", lastCommentId.ToString() },
                { "nt", "2" },
            };

            var str = await dataSource.PostAsync(url, data, cc);

            var obj = Tools.Deserialize <Low.ResponseToPost.RootObject>(str);

            return(obj, str);
        }
        private static IInternalMessage ParseEachItem(dynamic item)
        {
            var raw = (string)item.ToString();

            if (item.type == "comment")
            {
                var    comment = Tools.Deserialize <Low.Comment.RootObject>(raw);
                string profileImageUrl;
                if (comment.Author.ProfileImage.StartsWith("//"))
                {
                    profileImageUrl = "https:" + comment.Author.ProfileImage;
                }
                else
                {
                    profileImageUrl = comment.Author.ProfileImage;
                }
                var inter = new InternalComment
                {
                    Id              = comment.Id,
                    Message         = comment.Message,
                    RawMessage      = comment.RawMessage,
                    HasMention      = comment.HasMention,
                    CreatedAt       = UnixTime2DateTime(comment.CreatedAt / 1000),
                    SpecialImage    = comment.SpecialImage,
                    UserId          = comment.Author.Id,
                    UserName        = comment.Author.ScreenName,//2020/01/04 Twicasのバグだろうか。NameとScreenNameが逆な気がする
                    ScreenName      = comment.Author.Name,
                    ProfileImageUrl = profileImageUrl,
                    Grade           = comment.Author.Grade,
                    Raw             = raw,
                };
                return(inter);
            }
            else
            {
                return(new UnknownMessage {
                    Raw = raw
                });
            }
        }