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)); }
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)); }
public async Task GetAddAccountLogStatus(StorageUowProvider storageUowProvider, AccountModel[] accountList) { foreach (var accountModel in accountList) { var ScrappingService = _ScrappingServices[accountModel.accountId]; await ScrappingService.GetLogStatus(storageUowProvider, accountModel.accountId); } }
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); }
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; }
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(); }
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); } } }
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)); }