コード例 #1
0
        public static async Task <ScrappingServiceGroup> Create(StorageUowProvider storageUowProvider, ScrappingAccountsConfig config, AccountModel[] allAccounts, ScrappingServiceGroup ScrappingServiceGroup)
        {
            var ScrappingServices = ScrappingServiceGroup._ScrappingServices;

            foreach (var accountModel in allAccounts)
            {
                var accountInfo = new AccountInfo();
                accountInfo.ScrappingCredentials.Login    = accountModel.email;
                accountInfo.ScrappingCredentials.Password = accountModel.password;
                accountInfo.AccountId = accountModel.accountId;
                accountInfo.Proxy     = new ProxyData
                {
                    /*
                     * IpAddress = accountModel.currentProxy.IpAddress,
                     * Port = accountModel.currentProxy.Port,
                     * UserName = accountModel.currentProxy.UserName,
                     * Password = accountModel.currentProxy.Password
                     */
                };
                ScrappingServices.Add(accountInfo.AccountId, await ScrappingService.Create(accountInfo));//open web browser and login by users
            }

            // Create a master service with the credentials from the config file
            //ScrappingServices.Add(0, await ScrappingService.CreateMaster());//create empty ScrappingService
            return(new ScrappingServiceGroup(ScrappingServices, config));
        }
コード例 #2
0
        public static async Task <ScrappingService> Create(AccountInfo config)
        {
            // todo proxy not working , will remove it after getting proper proxy
            // config.Proxy.IpAddress = null;
            var browser = await BrowserProvider.PrepareBrowser(proxy : config.Proxy.IpAddress, port : config.Proxy.Port);

            var pages = await browser.PagesAsync();

            var         page             = pages.Single();
            string      logstatus        = "";
            Credentials proxyCredentails = new Credentials
            {
                Username = config.Proxy.UserName,
                Password = config.Proxy.Password
            };
            await page.AuthenticateAsync(proxyCredentails);

            logstatus = await SingIn(page, config.ScrappingCredentials);

            var storageUowProvider = StorageUowProvider.Init();

            using (var uow = storageUowProvider.CreateUow())
            {
                await uow.AccountService.SaveLogStatus(config.AccountId, logstatus);
            }
            return(new ScrappingService(page, config.AccountId));
        }
コード例 #3
0
 public async Task GetAddAccountLogStatus(StorageUowProvider storageUowProvider, AccountModel[] accountList)
 {
     foreach (var accountModel in accountList)
     {
         var ScrappingService = _ScrappingServices[accountModel.accountId];
         await ScrappingService.GetLogStatus(storageUowProvider, accountModel.accountId);
     }
 }
コード例 #4
0
        public async Task <bool> IsAccountLinkedWithProxyId(StorageUowProvider storageUowProvider, int proxyId)
        {
            var result = false;

            using (var uow = storageUowProvider.CreateUow())
            {
                result = await uow.AccountService.IsAccountByProxyId(proxyId);
            }

            return(result);
        }
コード例 #5
0
        public async Task GetLogStatus(StorageUowProvider storageUowProvider, int accountId)
        {
            Console.WriteLine(AppConstants.homeUrl);

            /*
             * var logStatus = "Credential";
             * try
             * {
             *  var url = _page.Url;
             *  //var x = await _page.QuerySelectorAsync("button#login-button");
             *  if (url.IndexOf(AppConstants.homeUrl) >= 0)
             *  {
             *      logStatus = "LoggedIn";
             *      var y = await _page.QuerySelectorAsync("div.ConnectBar");
             *      if (y != null)
             *      {
             *          logStatus = "AlreadyInUse";
             *      }
             *  }
             *  else
             *  {
             *      logStatus = "Credential";
             *      var y = await _page.QuerySelectorAllAsync("p.alert");
             *      //var y = await _page.QuerySelectorAsync("p.alert");
             *      if (y.Length == 0)
             *      {
             *          logStatus = "Connecting...";
             *      }
             *      else
             *      {
             *          var cont = await y[0].EvaluateFunctionAsync<string>("co = > co.innerHTML");
             *          if (cont.Contains("Incorrect username or password."))
             *          {
             *              logStatus = "ValidUserInfo";
             *          }
             *          else
             *          {
             *              logStatus = "OopsError";
             *          }
             *      }
             *  }
             * }
             * catch (Exception e)
             * {
             *  logStatus = "Credental";
             * }
             *
             * using (var uow = storageUowProvider.CreateUow())
             * {
             *  await uow.AccountService.SaveLogStatus(accountId, logStatus);
             * }
             */
            return;
        }
コード例 #6
0
        public static async Task Main(string[] args)
        {
            var config = await ScrappingAccountsConfig.Read();

            var storageUowProvider = StorageUowProvider.Init();
            // var spotifyServiceGroup = await SpotifyServiceGroup.Create(config);
            var scrappingServiceGroup = await ScrappingServiceGroup.Create(storageUowProvider, config);

            var builder = CreateWebHostBuilder(args, services => services
                                               .AddSingleton(scrappingServiceGroup)
                                               .AddSingleton(storageUowProvider));

            await scrappingServiceGroup.GetLogStatus(storageUowProvider);

            builder.Build().Run();
        }
コード例 #7
0
        public async Task GetLogStatus(StorageUowProvider storageUowProvider)
        {
            List <AccountModel> allAccounts;

            using (var uow = storageUowProvider.CreateUow())
            {
                allAccounts = await uow.AccountService.GetProxyAccounts();
            }

            foreach (var accountModel in allAccounts)
            {
                if (!accountModel.accountStatus.Contains("Proxy"))
                {
                    var ScrappingService = _ScrappingServices[accountModel.accountId];
                    await ScrappingService.GetLogStatus(storageUowProvider, accountModel.accountId);
                }
            }
        }
コード例 #8
0
        public static async Task <ScrappingServiceGroup> Create(StorageUowProvider storageUowProvider, ScrappingAccountsConfig config)
        {
            var ScrappingServices = new Dictionary <int, ScrappingService>();
            List <AccountModel> allAccounts;

            using (var uow = storageUowProvider.CreateUow())
            {
                allAccounts = await uow.AccountService.GetProxyAccounts();// get all account with proxy
            }
            foreach (var accountModel in allAccounts)
            {
                var accountInfo = GetAccountInfoFromAccountModel(accountModel);
                ScrappingServices.Add(accountInfo.AccountId, await ScrappingService.Create(accountInfo));//open web browser and login by users
            }

            // Create a master service with the credentials from the config file
            ScrappingServices.Add(0, await ScrappingService.CreateMaster());//create empty ScrappingService

            return(new ScrappingServiceGroup(ScrappingServices, config));
        }