コード例 #1
0
        public List <RankUserModel> GetBigFans(string bjID)
        {
            var result = new List <RankUserModel>();

            var url = $"http://live.afreecatv.com:8057/api/best_bj_action.php?szAction=GetBestBJDetail&szType=json&uid={bjID}&szBeforeCallBack=_bigfan&callback=_bigfan";

            var bigFanString = GetUserRankHtml(bjID, url);

            bigFanString = bigFanString?.Replace("_bigfan(", "")?.Replace(")", "") ?? string.Empty;

            if (string.IsNullOrEmpty(bigFanString))
            {
                return(result);
            }

            RankBigFan bigFan = null;

            try
            {
                bigFan = JsonConvert.DeserializeObject <RankBigFan>(bigFanString);
            }
            catch (Exception e)
            {
                string log = e.Message;
                return(result);
            }

            for (int Idx = 0; Idx < bigFan.Starballoon_top.Count; Idx++)
            {
                var userNick = bigFan.Starballoon_top[Idx].User_nick;
                if (userNick.Contains("#") && userNick.Contains(":3"))
                {
                    userNick = userNick?.Replace(":3", "")?.Substring(1) ?? userNick;
                }

                var item = new RankUserModel()
                {
                    BjID          = bjID,
                    UserID        = bigFan.Starballoon_top[Idx].User_id,
                    UserNick      = userNick,
                    BigFanRanking = Idx + 1
                };

                result.Add(item);
            }

            return(result);
        }
コード例 #2
0
        public void SetUserModel(string query, RankUserModel userModel)
        {
            var mysqlParams = new List <MysqlParam>
            {
                // 동작 구분
                //new MysqlParam("@WorkingTag", MysqlDbType.VarChar, "AP"),

                // Bj 아이디
                new MysqlParam("@BjID", MysqlDbType.VarChar, userModel.BjID),

                // Bj 닉네임
                new MysqlParam("@BjNic", MysqlDbType.VarChar, userModel.BjNic),

                // 사용자 아이디 (사용자별 중복가능)
                new MysqlParam("@UserID", MysqlDbType.VarChar, userModel.UserID),

                // 사용자 닉네임
                new MysqlParam("@UserNick", MysqlDbType.VarChar, userModel.UserNick),

                new MysqlParam("@HistoryDepth", MysqlDbType.Int16, userModel.HistoryDepth),

                // 빅팬 순위
                new MysqlParam("@BigFanRanking", MysqlDbType.Int16, userModel.BigFanRanking),

                // 서포터 순위
                new MysqlParam("@SupportRanking", MysqlDbType.Int16, userModel.SupportRanking),

                // 값 유효성 여부 -> 기본값 'N'
                //new MysqlParam("@Valid", MysqlDbType.VarChar, userModel.Valid),

                // 추가된 날짜
                //new MysqlParam("@AddDate", MysqlDbType.Datetime, userModel.AddDate),
            };

            ExecuteNonQuery(query, mysqlParams, System.Data.CommandType.Text);
        }
コード例 #3
0
        private UserModel RankUserModelToUserModel(RankUserModel rankUser, List <RankUserModel> allUserModels)
        {
            var userModel = new UserModel()
            {
                ID  = rankUser.UserID,
                Nic = rankUser.UserNick,
            };

            //var biz = new BizUserRank();
            //var matchingUser = biz.GetAllRankUserModelsByUserID(rankUser.UserID);
            var matchingUser = allUserModels.FindAll(a => a.UserID == rankUser.UserID);

            int mainBigFanRanking = matchingUser?.OrderBy(m => m.BigFanRanking)?.FirstOrDefault()?.BigFanRanking ?? -1;

            if (mainBigFanRanking == 1)
            {
                // 1등 회장
                userModel.Type = UserType.King;
            }
            else if (mainBigFanRanking >= 2 && mainBigFanRanking <= 5)
            {
                // 2~5등
                userModel.Type = UserType.BigFan;
            }
            else if (mainBigFanRanking >= 6 && mainBigFanRanking <= 10)
            {
                // 6~10등
                userModel.Type = UserType.BigFan;
            }
            else if (mainBigFanRanking >= 11 && mainBigFanRanking <= 20)
            {
                // 11~20등
                userModel.Type = UserType.BigFan;
            }

            // 몇건 ~ 십몇건
            for (int Idx = 0; Idx < matchingUser.Count; Idx++)
            {
                var Addbj = new BjModel()
                {
                    ID  = matchingUser[Idx].BjID,
                    Nic = matchingUser[Idx].BjNic,
                };

                int bigFanRanking = matchingUser[Idx].BigFanRanking;
                if (bigFanRanking == 1)
                {
                    // 1등 회장
                    Addbj.IconUrl = IconUrl.BulKing;
                }
                else if (bigFanRanking >= 2 && bigFanRanking <= 5)
                {
                    // 2~5등
                    Addbj.IconUrl = IconUrl.BulRedHeart;
                }
                else if (bigFanRanking >= 6 && bigFanRanking <= 10)
                {
                    // 6~10등
                    Addbj.IconUrl = IconUrl.BulYellowHeart;
                }
                else if (bigFanRanking >= 11 && bigFanRanking <= 20)
                {
                    // 11~20등
                    Addbj.IconUrl = IconUrl.BulGrayHeart;
                }

                Addbj.Ranking = bigFanRanking;
                userModel.BJs.Add(Addbj);
            }

            return(userModel);
        }
コード例 #4
0
        public List <RankUserModel> GetSupporters(string bjID)
        {
            var result = new List <RankUserModel>();

            // 사용자별 구분 문자열
            int    unicode   = 004;
            char   character = (char)unicode;
            string split1    = character.ToString();

            // 아이디, 닉네임 구분 문자열
            int    unicode2   = 002;
            char   character2 = (char)unicode2;
            string split2     = character2.ToString();

            // 아이디에 붙어 있는 0- 문자 제거
            int    unicode3      = 006;
            char   character3    = (char)unicode3;
            string replaceString = $"0{character3.ToString()}";


            var url = $"http://live.afreecatv.com:8057/api/best_bj_action.php?szAction=GetSupporter&szType=json&uid={bjID}&szBeforeCallBack=_supporter&callback=_supporter";  // bj아이디 들어감

            var supporter = GetUserRankHtml(bjID, url, false);

            supporter = supporter?.Replace("_supporter(", "")?.Replace(");", "") ?? string.Empty;

            if (string.IsNullOrEmpty(supporter))
            {
                return(result);
            }

            var supporters = JsonConvert.DeserializeObject <Supporters>(supporter);

            var top = supporters?.CHANNEL?.SUPPORTER_LIST?.FirstOrDefault()?.List?.FirstOrDefault()?.Sticker_top ?? string.Empty;

            if (string.IsNullOrEmpty(top))
            {
                return(result);
            }

            var topSplit1 = top.Split(new string[] { split1 }, StringSplitOptions.RemoveEmptyEntries);

            for (int Idx = 0; Idx < topSplit1.Length; Idx++)
            {
                if (topSplit1[Idx] == "0")
                {
                    break;
                }

                var userInfo = topSplit1[Idx].Split(new string[] { split2 }, StringSplitOptions.RemoveEmptyEntries);
                if (userInfo.Length != 2)
                {
                    continue;
                }

                var item = new RankUserModel()
                {
                    BjID           = bjID,
                    UserID         = userInfo[0].Replace(replaceString, ""),
                    UserNick       = userInfo[1],
                    SupportRanking = Idx + 1
                };

                result.Add(item);
            }

            return(result);
        }