示例#1
0
        private static async Task GetExpertsAsync()
        {
            Console.WriteLine(DateTime.Now + " Discovering...");

            ulong.TryParse(VkAppId, out ulong id);

            if (id == 0)
            {
                Console.WriteLine(DateTime.Now + " Error getting VK application ID, please supply a numerical value of the application registered in VK.");
                return;
            }

            VkontakteApi vkontakteApi = new VkontakteApi(id, VkUserApiKey, VkServiceApiKey);
            await vkontakteApi.DiscoverAsync();

            VkontakteBrw vkontakteBrw = new VkontakteBrw(Mobile);
            await vkontakteBrw.DiscoverAsync();

            if (vkontakteApi.DiscoveringCompleted.IsSet && vkontakteBrw.DiscoveringCompleted.IsSet)
            {
                Console.WriteLine(DateTime.Now + " Discovering completed.");

                if (!string.IsNullOrEmpty(Groups))
                {
                    Console.WriteLine(DateTime.Now + " Collecting community data...");
                    List <VkApiUser> potentialExperts = await GetPotentialExpertsFromGroups(vkontakteApi, vkontakteBrw, Groups.Split(','));

                    Console.WriteLine(DateTime.Now + " Community data collected.");
                    Console.WriteLine(DateTime.Now + " Potential experts found: " + potentialExperts.Count);
                    Console.WriteLine(DateTime.Now + " Collected profiles: " + vkontakteBrw.CollectedProfiles);
                    Console.WriteLine(DateTime.Now + " Non-public profiles: " + vkontakteBrw.NonPublicProfiles);
                    Console.WriteLine(DateTime.Now + " Non-existing profiles: " + vkontakteBrw.NonExistingProfiles);
                    Console.WriteLine(DateTime.Now + " Empty wall profiles: " + vkontakteBrw.EmptyWallProfiles);

                    if (potentialExperts.Count > 0)
                    {
                        DataTable        expertsTable = potentialExperts.ToDataTable(Groups);
                        List <DataTable> reportData   = new List <DataTable>();
                        reportData.Add(expertsTable);

                        string exportPath = Path.GetDirectoryName(Environment.CurrentDirectory);

                        ExpertReport expertReport = new ExpertReport("ПотенциальныеЭксперты", exportPath, reportData);
                        expertReport.ExportToExcel();
                    }
                }
                else if (!string.IsNullOrEmpty(Users))
                {
                    throw new NotImplementedException();
                }

                Console.WriteLine(DateTime.Now + " Finished.");
            }
            else
            {
                Console.WriteLine(DateTime.Now + " Cannot complete online services discovering, please check your Internet connection.");
            }
        }