Ejemplo n.º 1
0
        private async Task ReleaseVkUserBrowser()
        {
            try
            {
                if (_userPage != null && !_userPage.IsClosed)
                {
                    await _userPage.CloseAsync();
                }

                if (_userBrowserCtx != null)
                {
                    await _userBrowserCtx.CloseAsync();
                }

                if (_userBrowser != null && !_userBrowser.IsClosed)
                {
                    await _userBrowser.CloseAsync();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Can't release browser resources for user " + ProfileLink + ": ", e);
            }
            finally
            {
                userPageSemaphore.Release();
            }
        }
Ejemplo n.º 2
0
        private async Task <VkBrwUser> InitializeAsync(VkBrwUser user)
        {
            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);

            LaunchOptions browserOptions = new LaunchOptions {
                Headless = false, Args = new string[] { "--lang=ru" }
            };

            Browser brw = await Puppeteer.LaunchAsync(browserOptions);

            BrowserContext userContext = await brw.CreateIncognitoBrowserContextAsync();

            Page userPage = await userContext.NewPageAsync();

            await userPage.SetViewportAsync(new ViewPortOptions
            {
                Width  = 1024,
                Height = 768
            });

            await userPage.SetUserAgentAsync("Mozilla / 5.0(Windows NT 10.0; Win64; x64) AppleWebKit / 537.36(KHTML, like Gecko) Chrome / 74.0.3723.0 Safari / 537.36");

            user.Communitites = await GetCommunities(userContext, userPage, user);

            bool successParse = long.TryParse(user.ProfileLink.Split('/').LastOrDefault()?.Substring(2), out long parseResult);

            user.UserId = successParse ? parseResult : default;

            await userPage.CloseAsync();

            await userContext.CloseAsync();

            return(user);
        }
Ejemplo n.º 3
0
 public async void Dispose()
 {
     if (disposed)
     {
         return;
     }
     try { await whatsapp.CloseAsync(); } catch { }
     try { whatsapp.Dispose(); } catch { }
     try { await context.CloseAsync(); } catch { }
     disposed = true;
 }
Ejemplo n.º 4
0
        private async Task DiscoverSystemAsync()
        {
            GeoDetector geoDetector = new GeoDetector();

            CurrentCountry = await geoDetector.GetCountryAsync();

            switch (CurrentCountry)
            {
            case Countries.RU:
                Language = BrowsingLanguage.RU;
                break;

            case Countries.CN:
            case Countries.US:
            case Countries.DE:
            case Countries.FR:
            case Countries.IE:
            case Countries.GB:
            case Countries.SG:
                Language = BrowsingLanguage.EN;
                break;

            default:
                Language = BrowsingLanguage.RU;
                break;
            }

            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);

            LaunchOptions browserOptions = new LaunchOptions
            {
                Headless = true, Args = new string[] { "--lang=" + Language.ToString().ToLowerInvariant() }
            };

            Browser browser = await Puppeteer.LaunchAsync(browserOptions);

            BrowserContext discoveryContext = await browser.CreateIncognitoBrowserContextAsync();

            Page page = await discoveryContext.NewPageAsync();

            await page.SetViewportAsync(new ViewPortOptions
            {
                Width  = 1024,
                Height = 768
            });

            await page.SetUserAgentAsync(UserAgent);

            if (Mobile)
            {
                await DiscoverServiceMobile(page);
            }
            else
            {
                await DiscoverServiceDesktop(page);
            }

            if (!page.IsClosed)
            {
                await page.CloseAsync();
            }

            await discoveryContext.CloseAsync();

            if (!browser.IsClosed)
            {
                await browser.CloseAsync();
            }
        }