Beispiel #1
0
        /// <summary>
        /// Returns all available data about this user at the moment the snapshot is called (async)
        /// </summary>
        public async Task <GroupSnapshot> GetSnapshotAsync()
        {
            string json = await SpookVooperAPI.GetData($"https://api.spookvooper.com/group/GetGroup?svid={Id}");

            GroupSnapshot snapshot = null;

            try
            {
                snapshot = JsonConvert.DeserializeObject <GroupSnapshot>(json);
            }
#pragma warning disable 0168
            catch (System.Exception e)
            {
                throw new VooperException($"Malformed response: {json}");
            }
#pragma warning restore 0168

            return(snapshot);
        }
Beispiel #2
0
        private async void GetData_GetData_Click(object sender, EventArgs e)
        {
            List <string> urllist = new List <string>()
            {
                "https://spookvooper.com/user/search/a",
                "https://spookvooper.com/user/search/b",
                "https://spookvooper.com/user/search/c",
                "https://spookvooper.com/user/search/d",
                "https://spookvooper.com/user/search/e",
                "https://spookvooper.com/user/search/f",
                "https://spookvooper.com/user/search/g",
                "https://spookvooper.com/user/search/h",
                "https://spookvooper.com/user/search/i",
                "https://spookvooper.com/user/search/j",
                "https://spookvooper.com/user/search/k",
                "https://spookvooper.com/user/search/l",
                "https://spookvooper.com/user/search/m",
                "https://spookvooper.com/user/search/n",
                "https://spookvooper.com/user/search/o",
                "https://spookvooper.com/user/search/p",
                "https://spookvooper.com/user/search/q",
                "https://spookvooper.com/user/search/r",
                "https://spookvooper.com/user/search/s",
                "https://spookvooper.com/user/search/t",
                "https://spookvooper.com/user/search/u",
                "https://spookvooper.com/user/search/v",
                "https://spookvooper.com/user/search/w",
                "https://spookvooper.com/user/search/x",
                "https://spookvooper.com/user/search/y",
                "https://spookvooper.com/user/search/z",
                "https://spookvooper.com/user/search/0",
                "https://spookvooper.com/user/search/1",
                "https://spookvooper.com/user/search/2",
                "https://spookvooper.com/user/search/3",
                "https://spookvooper.com/user/search/4",
                "https://spookvooper.com/user/search/5",
                "https://spookvooper.com/user/search/6",
                "https://spookvooper.com/user/search/7",
                "https://spookvooper.com/user/search/8",
                "https://spookvooper.com/user/search/9",
                "https://spookvooper.com/user/search/,",
                "https://spookvooper.com/group/search/a",
                "https://spookvooper.com/group/search/b",
                "https://spookvooper.com/group/search/c",
                "https://spookvooper.com/group/search/d",
                "https://spookvooper.com/group/search/e",
                "https://spookvooper.com/group/search/f",
                "https://spookvooper.com/group/search/g",
                "https://spookvooper.com/group/search/h",
                "https://spookvooper.com/group/search/i",
                "https://spookvooper.com/group/search/j",
                "https://spookvooper.com/group/search/k",
                "https://spookvooper.com/group/search/l",
                "https://spookvooper.com/group/search/m",
                "https://spookvooper.com/group/search/n",
                "https://spookvooper.com/group/search/o",
                "https://spookvooper.com/group/search/p",
                "https://spookvooper.com/group/search/q",
                "https://spookvooper.com/group/search/r",
                "https://spookvooper.com/group/search/s",
                "https://spookvooper.com/group/search/t",
                "https://spookvooper.com/group/search/u",
                "https://spookvooper.com/group/search/v",
                "https://spookvooper.com/group/search/w",
                "https://spookvooper.com/group/search/x",
                "https://spookvooper.com/group/search/y",
                "https://spookvooper.com/group/search/z",
                "https://spookvooper.com/group/search/0",
                "https://spookvooper.com/group/search/1",
                "https://spookvooper.com/group/search/2",
                "https://spookvooper.com/group/search/3",
                "https://spookvooper.com/group/search/4",
                "https://spookvooper.com/group/search/5",
                "https://spookvooper.com/group/search/6",
                "https://spookvooper.com/group/search/7",
                "https://spookvooper.com/group/search/8",
                "https://spookvooper.com/group/search/9",
                "https://spookvooper.com/group/search/,"
            };
            List <string> allsvidlist = new List <string>();
            HtmlWeb       hw          = new HtmlWeb();

            GetData_Status.Text      = "Getting SVIDs...";
            GetData_Progress.Maximum = 72;
            foreach (string url in urllist)
            {
                HtmlAgilityPack.HtmlDocument doc = hw.Load(url);
                foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
                {
                    string   rawnode     = link.OuterHtml;;
                    string[] rawsplit    = rawnode.Split(">");
                    string   linkcontent = rawsplit[0].Replace("<a href=", "");
                    if (linkcontent.Contains("svid="))
                    {
                        string svids = linkcontent.Replace("/User/Info?svid=", "");
                        string svid  = svids.Replace("\"", "");
                        allsvidlist.Add(svid);
                    }
                    else if (linkcontent.Contains("groupid="))
                    {
                        string svids = linkcontent.Replace("/Group/View?groupid=", "");
                        string svid  = svids.Replace("\"", "");
                        allsvidlist.Add(svid);
                    }
                }
                GetData_Progress.Increment(1);
            }
            var           database     = new Dictionary <string, Dictionary <string, Dictionary <string, dynamic> > >();
            List <string> distinctsvid = allsvidlist.Distinct().ToList();

            distinctsvid.Sort();
            GetData_Status.Text      = "Getting Data...";
            GetData_Progress.Value   = 0;
            GetData_Progress.Maximum = distinctsvid.Count;
            foreach (string svid in distinctsvid)
            {
                if (svid.StartsWith("u-"))
                {
                    User         u        = new User(svid);
                    UserSnapshot snapShot = await u.GetSnapshotAsync();

                    string date = DateTime.Now.ToString("dd-MM-yy");
                    database[svid]       = new Dictionary <string, Dictionary <string, object> >();
                    database[svid][date] = new Dictionary <string, object>();
                    database[svid][date]["api use count"]                = snapShot.api_use_count;
                    database[svid][date]["comment likes"]                = snapShot.comment_likes;
                    database[svid][date]["credits"]                      = snapShot.Credits;
                    database[svid][date]["description"]                  = snapShot.description;
                    database[svid][date]["discord ban count"]            = snapShot.discord_ban_count;
                    database[svid][date]["discord commends"]             = snapShot.discord_commends;
                    database[svid][date]["discord commends sent"]        = snapShot.discord_commends_sent;
                    database[svid][date]["discord game xp"]              = snapShot.discord_game_xp;
                    database[svid][date]["discord id"]                   = snapShot.discord_id;
                    database[svid][date]["discord kick count"]           = snapShot.discord_kick_count;
                    database[svid][date]["discord last commend hour"]    = snapShot.discord_last_commend_hour;
                    database[svid][date]["discord last commend message"] = snapShot.discord_last_commend_message;
                    database[svid][date]["discord last message minute"]  = snapShot.discord_last_message_minute;
                    database[svid][date]["discord message count"]        = snapShot.discord_message_count;
                    database[svid][date]["discord message xp"]           = snapShot.discord_message_xp;
                    database[svid][date]["discord warning count"]        = snapShot.discord_warning_count;
                    database[svid][date]["district"]                     = snapShot.district;
                    database[svid][date]["id"]           = snapShot.Id;
                    database[svid][date]["image url"]    = snapShot.Image_Url;
                    database[svid][date]["minecraft id"] = snapShot.minecraft_id;
                    database[svid][date]["name"]         = snapShot.UserName;
                    database[svid][date]["nationstate"]  = snapShot.nationstate;
                    database[svid][date]["post likes"]   = snapShot.post_likes;
                    database[svid][date]["twitch id"]    = snapShot.twitch_id;
                    database[svid][date]["twitch last message minute"] = snapShot.twitch_last_message_minute;
                    database[svid][date]["twitch messages"]            = snapShot.twitch_messages;
                    database[svid][date]["twitch message xp"]          = snapShot.twitch_message_xp;
                    GetData_Progress.Increment(1);
                }
                else if (svid.StartsWith("g-"))
                {
                    SpookVooper.Api.Entities.Groups.Group g = new SpookVooper.Api.Entities.Groups.Group(svid);
                    GroupSnapshot snapShot = await g.GetSnapshotAsync();

                    string date = DateTime.Now.ToString("dd-MM-yy");
                    database[svid]                           = new Dictionary <string, Dictionary <string, object> >();
                    database[svid][date]                     = new Dictionary <string, object>();
                    database[svid][date]["credits"]          = snapShot.Credits;
                    database[svid][date]["credits invested"] = snapShot.Credits_Invested;
                    database[svid][date]["default role id"]  = snapShot.Default_Role_Id;
                    database[svid][date]["description"]      = snapShot.Description;
                    database[svid][date]["district"]         = snapShot.District_Id;
                    database[svid][date]["category"]         = snapShot.Group_Category;
                    database[svid][date]["image url"]        = snapShot.Image_Url;
                    database[svid][date]["name"]             = snapShot.Name;
                    database[svid][date]["id"]               = snapShot.Id;
                    database[svid][date]["open"]             = snapShot.Open;
                    database[svid][date]["owner id"]         = snapShot.Owner_Id;
                    GetData_Progress.Increment(1);
                }
            }
            GetData_Status.Text = "Updating database.json...";
            string json = JsonConvert.SerializeObject(database, Formatting.Indented);

            using (TextWriter tw = new StreamWriter("SVData/database.json"))
            {
                tw.Write(json);
            }
            GetData_Status.Text = "Completed!";
        }
Beispiel #3
0
        public GroupSnapshot MapToSnapshot(IMapper mapper)
        {
            GroupSnapshot snapshot = mapper.Map <GroupSnapshot>(this);

            return(snapshot);
        }