예제 #1
0
        internal static async Task RandomLikeUser(VkAcc vkAcc, int profileVkId)
        {
            var rand = new Random();
            var api  = _getApi(vkAcc);


            var Photos = await api.Photo.GetAsync(new PhotoGetParams()
            {
                OwnerId  = profileVkId,
                AlbumId  = VkNet.Enums.SafetyEnums.PhotoAlbumType.Profile,
                Reversed = true,
                Count    = 10
            });

            var countLikes = rand.Next(1, 3);

            if (countLikes > Photos.Count)
            {
                countLikes = Photos.Count;
            }
            var PhotosNeedLikes = Photos.OrderBy(s => rand.Next()).Take(countLikes).ToList();

            foreach (var photo in PhotosNeedLikes)
            {
                await Task.Delay(rand.Next(10000, 20000));

                await api.Likes.AddAsync(new LikesAddParams
                {
                    Type    = VkNet.Enums.SafetyEnums.LikeObjectType.Photo,
                    ItemId  = photo.Id.Value,
                    OwnerId = photo.OwnerId,
                });
            }
        }
예제 #2
0
        static VkApi _getApi(VkAcc vkAcc)
        {
            if (!cachedApis.ContainsKey(vkAcc.AccessToken))
            {
                VkApi vkApi;
                if (VkApisManager.modelScoutAPIOptions != null)
                {
                    vkApi = new VkApi(logger, new CaptchaSolvers.CptchCaptchaSolver(
                                          modelScoutAPIOptions.CptchApiKey,
                                          modelScoutAPIOptions.CptchSoftId));
                }
                else
                {
                    vkApi = new VkApi(logger);
                }

                // new CaptchaSolvers.CptchCaptchaSolver()
                vkApi.Authorize(new ApiAuthParams
                {
                    AccessToken = vkAcc.AccessToken
                });
                cachedApis.Add(vkAcc.AccessToken, vkApi);
            }
            return(cachedApis[vkAcc.AccessToken]);
        }
예제 #3
0
 public async Task SaveVkAcc(VkAcc vkAcc)
 {
     using (var db = new ModelScoutDbContext(this._dbOptionsBuilder.Options))
     {
         db.VkAccs.Update(vkAcc);
         await db.SaveChangesAsync();
     }
 }
예제 #4
0
 private async Task IncrementAddedFriends(VkAcc vkAcc)
 {
     using (var db = new ModelScoutDbContext(this._dbOptionsBuilder.Options))
     {
         vkAcc.CountAddedFriends++;
         db.VkAccs.Update(vkAcc);
         await db.SaveChangesAsync();
     }
 }
예제 #5
0
 public async Task ClearUncheckedClients(VkAcc vkAcc)
 {
     using (var db = new ModelScoutDbContext(this._dbOptionsBuilder.Options))
     {
         var clients = db.VkClients.Where(e => e.VkAccId == vkAcc.VkAccId && e.ClientStatus == VkClient.Status.Unchecked);
         db.VkClients.RemoveRange(clients);
         await db.SaveChangesAsync();
     }
 }
예제 #6
0
        internal static async Task AddUserToFriends(VkAcc vkAcc, int profileVkId)
        {
            var api = _getApi(vkAcc);

            await api.Friends.AddAsync(
                userId : (long)profileVkId,
                text : "",
                follow : null
                );
        }
예제 #7
0
 public async Task<VkClient> GetUncheckedClient(VkAcc vkAcc)
 {
     VkClient vkClient = vkAcc.VkClients.Find(e => e.ClientStatus == VkClient.Status.Unchecked);
     if (vkClient == null)
     {
         await this.UpdateClients(vkAcc);
         vkClient = vkAcc.VkClients.Find(e => e.ClientStatus == VkClient.Status.Unchecked);
     }
     return vkClient;
 }
예제 #8
0
 public async Task<VkClient> GetAcceptedClient(VkAcc vkAcc)
 {
     using (var db = new ModelScoutDbContext(this._dbOptionsBuilder.Options))
     {
         return await db.VkClients
         .Include(e => e.VkAcc)
         .FirstOrDefaultAsync(
             e => e.ClientStatus == VkClient.Status.Accepted
             && e.VkAcc.VkAccId == vkAcc.VkAccId);
     }
 }
예제 #9
0
 private async Task UpdateClients(VkAcc vkAcc)
 {
     using (var db = new ModelScoutDbContext(this._dbOptionsBuilder.Options))
     {
         int Count = 50;
         var acc = db.VkAccs.FirstOrDefault(e => e.VkAccId == vkAcc.VkAccId);
         vkAcc.VkClients.AddRange(await VkApisManager.GetNewClients(
             acc,
              Count, this, db));
         await db.SaveChangesAsync();
     }
 }
예제 #10
0
        public async Task RemoveVkAcc(VkAcc vkAcc)
        {
            using (var db = new ModelScoutDbContext(this._dbOptionsBuilder.Options))
            {
                var user = await db.Users
                    .Include(e => e.VkAccs)
                    .FirstOrDefaultAsync(e => e.UserId == User.UserId);
                user.VkAccs.RemoveAll(e => e.VkAccId == vkAcc.VkAccId);

                await db.SaveChangesAsync();
            }
        }
예제 #11
0
        static public async Task <AccountSaveProfileInfoParams> GetProfileInfo(VkAcc vkAcc)
        {
            var api = _getApi(vkAcc);

            if (_isVkApiActive(api))
            {
                return(await api.Account.GetProfileInfoAsync());
            }
            else
            {
                return(null);
            }
        }
예제 #12
0
        static public VkNet.Model.User GetVkUser(VkClient vkClient, VkAcc vkAcc = null)
        {
            if (vkAcc == null)
            {
                vkAcc = vkClient.VkAcc;
            }

            var api  = _getApi(vkAcc);
            var user = api.Users.Get(
                new long[] { vkClient.ProfileVkId },
                VkNet.Enums.Filters.ProfileFields.BirthDate | VkNet.Enums.Filters.ProfileFields.City)
                       .FirstOrDefault();

            return(user);
        }
예제 #13
0
 private async Task<VkAcc> UpdateVkAccStatus(VkAcc vkAcc)
 {
     //TODO: Check status of acc
     var profileInfo = await VkApisManager.GetProfileInfo(vkAcc);
     if (profileInfo != null)
     {
         vkAcc.FirstName = profileInfo.FirstName;
         vkAcc.LastName = profileInfo.LastName;
         //TODO: Set status of acc
     }
     else
     {
         //TODO: Set status of acc
     }
     return vkAcc;
 }
예제 #14
0
        public async Task<VkAcc> CreateVkAcc(string Token)
        {
            VkAcc vkAcc;
            var result = await VkApisManager.TryAuthorize(Token);
            if (result == true)
            {
                using (var db = new ModelScoutDbContext(this._dbOptionsBuilder.Options))
                {
                    var user = await db.Users.FirstOrDefaultAsync(e => e.UserId == User.UserId);
                    vkAcc = new VkAcc()
                    {
                        AccessToken = Token,
                        FriendsLimit = 40,
                        CountAddedFriends = 0,
                    };
                    await this.UpdateVkAccStatus(vkAcc);
                    user.VkAccs.Add(vkAcc);

                    await db.SaveChangesAsync();
                }
                return vkAcc;
            }
            return null;
        }
예제 #15
0
 private async Task ClearFriends(VkAcc vkAcc)
 {
     throw new NotImplementedException();
 }
예제 #16
0
        internal static async Task <List <VkClient> > GetNewClients(
            VkAcc vkAcc, int Count, ModelScoutAPI api,
            ModelScoutDbContext context)
        {
            uint UpdatedCount = 0;
            uint Offset       = 0;

            List <VkClient> vkClients = new List <VkClient>();

            var vkApi = _getApi(vkAcc);

            if (!_isVkApiActive(vkApi))
            {
                return(null);
            }

            while (UpdatedCount < Count)
            {
                var clientsSearch = await vkApi.Users.SearchAsync(new UserSearchParams()
                {
                    City       = vkAcc.City,
                    Country    = vkAcc.Country,
                    AgeFrom    = (ushort)vkAcc.AgeFrom,
                    AgeTo      = (ushort)vkAcc.AgeTo,
                    Sex        = (VkNet.Enums.Sex)vkAcc.Sex,
                    BirthMonth = (ushort)vkAcc.BirthMonth,
                    BirthDay   = (ushort)vkAcc.BirthDay,
                    Online     = true,
                    HasPhoto   = true,
                    Count      = (uint)Count,
                    Offset     = Offset,
                });

                foreach (var clientSearch in clientsSearch)
                {
                    //BAD CODE
                    if (!context.VkClients.Any(e => e.ProfileVkId == clientSearch.Id) && clientSearch.IsClosed != true)
                    //BAD CODE
                    {
                        var vkClient = new VkClient()
                        {
                            ClientStatus = VkClient.Status.Unchecked,
                            VkAccId      = vkAcc.VkAccId,
                            ProfileVkId  = (int)clientSearch.Id
                        };
                        //BAD CODE
                        vkAcc.VkClients.Add(vkClient);
                        //BAD CODE
                        vkClients.Add(vkClient);
                        UpdatedCount++;
                    }
                }

                Offset += (uint)Count;

                if (clientsSearch.TotalCount < Offset)
                {
                    break;
                }
            }
            return(vkClients);
        }
예제 #17
0
        static public async Task <VkCollection <Photo> > GetProfilePhotosClient(VkClient vkClient, VkAcc vkAcc = null)
        {
            if (vkAcc == null)
            {
                vkAcc = vkClient.VkAcc;
            }
            var api    = _getApi(vkAcc);
            var Photos = await api.Photo.GetAsync(new PhotoGetParams()
            {
                OwnerId    = vkClient.ProfileVkId,
                AlbumId    = VkNet.Enums.SafetyEnums.PhotoAlbumType.Profile,
                Reversed   = true,
                Count      = 10,
                PhotoSizes = true,
            });

            return(Photos);
        }