예제 #1
0
        public void CheckWithoutMedalRoom(DbEntitys dbEntitys, BiliBiliClient biliClient)
        {
            if (_WithoutMedalRoom == 0)//重启后
            {
                //搜索时间倒序,取上一次的最后一个
                var first = dbEntitys.Medals.Where(m => string.IsNullOrEmpty(m.MedalName)).OrderByDescending(m => m.LastSearchTime).FirstOrDefault();
                if (first != null)
                {
                    _WithoutMedalRoom = first.RoomID;
                }
            }
            if (_WithoutMedalRoom == 0)
            {
                return;
            }
            //常规,取房号大于上一次搜索的第一个
            var current = dbEntitys.Medals.Where(m => string.IsNullOrEmpty(m.MedalName) && m.RoomID > _WithoutMedalRoom).OrderBy(m => m.RoomID).FirstOrDefault();

            if (current == null)
            {
                _WithoutMedalRoom = StartRoom;//未找到更大的房号,说明已经到末尾,复原从头开始搜索
                return;
            }

            _WithoutMedalRoom      = current.RoomID;
            current.LastSearchTime = DateTime.Now;
            string medalName = biliClient.GetRoomMedal(current.RoomID).Result;

            if (!string.IsNullOrEmpty(medalName))
            {
                current.MedalName      = medalName;
                current.LastUpdateTime = DateTime.Now;
            }
            dbEntitys.SaveChanges();
        }
예제 #2
0
        public void CollectNewRoom(DbEntitys dbEntitys, BiliBiliClient biliClient)
        {
            if (_EndCollectNew)
            {
                return;
            }
            long room    = StartRoom;
            var  maxRoom = dbEntitys.Medals.OrderByDescending(m => m.RoomID).FirstOrDefault();

            if (maxRoom != null)
            {
                room = maxRoom.RoomID + 1;
            }
            if (room > EndRoom)
            {
                _EndCollectNew = true;
                return;
            }
            string medalName = biliClient.GetRoomMedal(room).Result;

            dbEntitys.Medals.Add(new Medal {
                RoomID = room, MedalName = medalName, LastSearchTime = DateTime.Now, LastUpdateTime = DateTime.Now
            });
            dbEntitys.SaveChanges();
        }
예제 #3
0
        public void CheckOldRoom(DbEntitys dbEntitys, BiliBiliClient biliClient)
        {
            var room = dbEntitys.Medals.Where(m => !string.IsNullOrEmpty(m.MedalName) && DateTime.Now - m.LastSearchTime > TimeSpan.FromDays(10)).OrderBy(m => m.RoomID).FirstOrDefault();

            if (room != null)
            {
                room.LastSearchTime = DateTime.Now;
                string medalName = biliClient.GetRoomMedal(room.RoomID).Result;
                if (!string.IsNullOrEmpty(medalName) && room.MedalName != medalName)
                {
                    room.MedalName      = medalName;
                    room.LastUpdateTime = DateTime.Now;
                }
                dbEntitys.SaveChanges();
            }
        }
예제 #4
0
 public MainController(DbEntitys dbEntitys)
 {
     _DbEntitys = dbEntitys;
 }