private static LinkedList <Flair> BuildFlairLibrary() { var flairs = new LinkedList <Flair>(); foreach (ConsoleColor foregroundColor in Enum.GetValues(typeof(ConsoleColor))) { var backgroundColor = ConsoleColor.Black; if ((int)foregroundColor < 10) { backgroundColor = ConsoleColor.White; } var flair = new Flair(foregroundColor, backgroundColor); if (flairs.Count == 0) { flairs.AddFirst(flair); } else { flairs.AddAfter(flairs.Last, flair); } } return(flairs); }
/// <summary> /// Prints text to window in console-like fashion, prefixes a timestamp /// </summary> /// <param name="msg">String to print</param> /// <param name="flair">Status code of message</param> public void Log(string msg, Flair flair = Flair.Info) { var prefix = ""; switch (flair) { case Flair.Info: prefix = "INFO"; break; case Flair.Warn: prefix = "WARN"; break; case Flair.Error: prefix = "ERROR"; break; case Flair.Critical: prefix = "CRITICAL"; break; } Application.Current.Dispatcher.Invoke(() => { _console.AppendText($"[{DateTime.Now:HH:mm:ss}][{prefix}] {msg}\n"); _console.ScrollToEnd(); }); }
public Flair Validate(Flair flair) { CheckNull(flair); CheckNull(flair.Id, "Reddit API returned flair object with no Id."); return(flair); }
public override int GetHashCode() { unchecked { var hashCode = ContentId.GetHashCode(); hashCode = (hashCode * 397) ^ CreditPrice; hashCode = (hashCode * 397) ^ (Description?.GetHashCode() ?? 0); hashCode = (hashCode * 397) ^ Flair.GetHashCode(); hashCode = (hashCode * 397) ^ (int)GiftableAcquisitionMethod; hashCode = (hashCode * 397) ^ Id.GetHashCode(); hashCode = (hashCode * 397) ^ IsFeatured.GetHashCode(); hashCode = (hashCode * 397) ^ IsGiftOnly.GetHashCode(); hashCode = (hashCode * 397) ^ IsNew.GetHashCode(); hashCode = (hashCode * 397) ^ IsPurchasableFromMarketplace.GetHashCode(); hashCode = (hashCode * 397) ^ IsPurchasableWithCredits.GetHashCode(); hashCode = (hashCode * 397) ^ IsStack.GetHashCode(); hashCode = (hashCode * 397) ^ (StackedRequisitionPacks?.GetHashCode() ?? 0); hashCode = (hashCode * 397) ^ (LargeImageUrl?.GetHashCode() ?? 0); hashCode = (hashCode * 397) ^ (MediumImageUrl?.GetHashCode() ?? 0); hashCode = (hashCode * 397) ^ MerchandisingOrder; hashCode = (hashCode * 397) ^ (Name?.GetHashCode() ?? 0); hashCode = (hashCode * 397) ^ (SmallImageUrl?.GetHashCode() ?? 0); hashCode = (hashCode * 397) ^ XboxMarketplaceProductId.GetHashCode(); hashCode = (hashCode * 397) ^ (XboxMarketplaceProductUrl?.GetHashCode() ?? 0); return(hashCode); } }
public LicensingSmasher( LicensingSmasherSettings settings, Reddit reddit, string sub ) : this() { RedditClient = reddit; Subreddit = sub; TermsToMatch = settings.MatchTerms.ToList(); KnownLicensers = settings.KnownLicensers; Settings = settings; RemovalFlair = settings.RemovalFlair; TermMatching = new Regex( string.Join( "|", settings.MatchTerms ), RegexOptions.IgnoreCase ); LicenserMatching = new Regex( "^" + string.Join( "$|^", settings.KnownLicensers.Keys ) + "$", RegexOptions.IgnoreCase ); }
public void SetDefaultSettings() { Enabled = false; EveryXRuns = 1; PostTypes = PostType.New; ScoreMultiplier = 1; PercentageThreshold = 10; RemovalFlair = new Flair("10%", "red", 1); IncludePostInPercentage = false; GracePeriod = 3; }
public LicensingSmasher(LicensingSmasherSettings settings, Reddit reddit, string sub) : this() { RedditClient = reddit; Subreddit = sub; TermsToMatch = settings.MatchTerms.ToList(); KnownLicensers = settings.KnownLicensers; Settings = settings; RemovalFlair = settings.RemovalFlair; TermMatching = new Regex(string.Join("|", settings.MatchTerms), RegexOptions.IgnoreCase); LicenserMatching = new Regex("^" + string.Join("$|^", settings.KnownLicensers.Keys) + "$", RegexOptions.IgnoreCase); }
public void GetFlairForSub() { // login using regular creds var session = User.Login(Configuration.GetKey("username"), Configuration.GetKey("password")); // get the flair for a moderated subreddit? (why is this not public?) var flairs = Flair.GetFlair(session, SubRedditToTestModWith); // check there is some flair Assert.IsNotNull(flairs); Assert.IsTrue(flairs.Count > 0); }
public void SetDefaultSettings() { Enabled = false; PostTypes = PostType.All; EveryXRuns = 1; ScoreMultiplier = 1; MatchTerms = new[] { "jukin", "licensing", "break.com", "storyful", "rumble", "newsflare", "visualdesk", "viral spiral", "viralspiral", "rightser", "to use this video in a commercial", "media enquiries" }; //These are case sensitive for friendly name matching KnownLicensers = new Dictionary <string, string> { { "H7XeNNPkVV3JZxXm-O-MCA", "Jukin Media" }, { "Newsflare", "Newsflare" }, { "3339WgBDKIcxTfywuSmG8w", "ViralHog" }, { "Storyful", "Storyful" }, { "rumble", "Rumble" }, { "Rightster_Entertainment_Affillia", "Viral Spiral" }, { "Break", "Break" } }; RemovalFlair = new Flair() { Class = "red", Priority = 1, Text = "R10" }; }
/// <summary> /// Keep track of requests across all models. /// </summary> /// <param name="sender">The sender</param> /// <param name="e">A valid RequestsUpdateEventArgs instance</param> public void C_RequestsUpdated(object sender, RequestsUpdateEventArgs e) { Account.UpdateRequests(e.Requests); Emoji.UpdateRequests(e.Requests); Flair.UpdateRequests(e.Requests); LinksAndComments.UpdateRequests(e.Requests); Listings.UpdateRequests(e.Requests); LiveThreads.UpdateRequests(e.Requests); Misc.UpdateRequests(e.Requests); Moderation.UpdateRequests(e.Requests); Modmail.UpdateRequests(e.Requests); Multis.UpdateRequests(e.Requests); PrivateMessages.UpdateRequests(e.Requests); RedditGold.UpdateRequests(e.Requests); Search.UpdateRequests(e.Requests); Subreddits.UpdateRequests(e.Requests); Users.UpdateRequests(e.Requests); Widgets.UpdateRequests(e.Requests); Wiki.UpdateRequests(e.Requests); }
/// <summary> /// Propagate token across all models. /// </summary> /// <param name="sender">The sender</param> /// <param name="e">A valid TokenUpdateEventArgs instance</param> public void C_TokenUpdated(object sender, TokenUpdateEventArgs e) { Account.UpdateAccessToken(e.AccessToken); Emoji.UpdateAccessToken(e.AccessToken); Flair.UpdateAccessToken(e.AccessToken); LinksAndComments.UpdateAccessToken(e.AccessToken); Listings.UpdateAccessToken(e.AccessToken); LiveThreads.UpdateAccessToken(e.AccessToken); Misc.UpdateAccessToken(e.AccessToken); Moderation.UpdateAccessToken(e.AccessToken); Modmail.UpdateAccessToken(e.AccessToken); Multis.UpdateAccessToken(e.AccessToken); OAuthCredentials.UpdateAccessToken(e.AccessToken); PrivateMessages.UpdateAccessToken(e.AccessToken); RedditGold.UpdateAccessToken(e.AccessToken); Search.UpdateAccessToken(e.AccessToken); Subreddits.UpdateAccessToken(e.AccessToken); Users.UpdateAccessToken(e.AccessToken); Widgets.UpdateAccessToken(e.AccessToken); Wiki.UpdateAccessToken(e.AccessToken); }
public void SetDefaultSettings() { Enabled = false; EveryXRuns = 1; PostTypes = PostType.New; ScoreMultiplier = 1; PercentageThreshold = 10; RemovalFlair = new Flair( "10%", "red", 1 ); IncludePostInPercentage = false; GracePeriod = 3; }
private static void SetFlair(List<User> users, Dictionary<string, Flair> currentFlair) { string token = Login(); List<Flair> updatedFlair = new List<Flair>(); foreach (User user in users) { Flair userFlair = new Flair(); userFlair.Username = user.Username; if (user.CurrentStreak == 0) userFlair.Css = "default"; else if (user.CurrentStreak <= 10) userFlair.Css = "one"; else if (user.CurrentStreak < 50) userFlair.Css = "ten"; else if (user.CurrentStreak < 100) userFlair.Css = "fifty"; else if (user.CurrentStreak < 150) userFlair.Css = "hundred"; else if (user.CurrentStreak < 200) userFlair.Css = "hundredfifty"; else if (user.CurrentStreak < 300) userFlair.Css = "twohundred"; else if (user.CurrentStreak < 365) userFlair.Css = "threehundred"; else userFlair.Css = "oneyear"; userFlair.Text = user.CurrentStreak + " / " + user.DaysPostedLinks.Count; if (string.IsNullOrEmpty(user.Webpage) == false) userFlair.Text = userFlair.Text + " - " + user.Webpage; if (user.MostRecentPost >= INACTIVE_CUTOFF_DATE) { if (currentFlair.ContainsKey(user.Username)) { if (currentFlair[user.Username].Text == userFlair.Text && currentFlair[user.Username].Css == userFlair.Css) { Console.WriteLine(" Ignoring flair for user " + user.Username + ". Text: " + userFlair.Text + ". CSS: " + userFlair.Css + ". Last post on " + user.MostRecentPost.ToString() + ". No change."); } else { Console.WriteLine("Updating flair for user " + user.Username + ". Flair CSS: " + userFlair.Css + ", Flair Text: " + userFlair.Text + ". Most recent post: " + user.MostRecentPost.ToString()); updatedFlair.Add(userFlair); } } else { Console.WriteLine("Inserting flair for user " + user.Username + ". Flair CSS: " + userFlair.Css + ", Flair Text: " + userFlair.Text + ". Most recent post: " + user.MostRecentPost.ToString()); updatedFlair.Add(userFlair); } } else { if (currentFlair.ContainsKey(user.Username)) { userFlair.Css = ""; userFlair.Text = ""; Console.WriteLine("Clearing flair for user due to inactivity " + user.Username + ". Flair CSS: " + userFlair.Css + ", Flair Text: " + userFlair.Text + ". Most recent post: " + user.MostRecentPost.ToString()); updatedFlair.Add(userFlair); } else { Console.WriteLine(" Skipping flair for " + user.Username + " due to inactivity. Most recent post: " + user.MostRecentPost.ToString() + " and no existing flair found."); } } } Console.WriteLine(DateTime.Now.ToString() + " - Setting flair batches"); _reddit.SetFlairBatch("sketchdaily", updatedFlair, token); }
public void SetDefaultSettings() { Enabled = false; PostTypes = PostType.All; EveryXRuns = 1; ScoreMultiplier = 1; MatchTerms = new[] { "jukin", "licensing", "break.com", "storyful", "rumble", "newsflare", "visualdesk", "viral spiral", "viralspiral", "rightser", "to use this video in a commercial", "media enquiries" }; //These are case sensitive for friendly name matching KnownLicensers = new Dictionary<string, string> { { "H7XeNNPkVV3JZxXm-O-MCA", "Jukin Media" }, { "Newsflare", "Newsflare" }, { "3339WgBDKIcxTfywuSmG8w", "ViralHog" }, { "Storyful", "Storyful" }, { "rumble", "Rumble" }, { "Rightster_Entertainment_Affillia", "Viral Spiral" }, { "Break", "Break" } }; RemovalFlair = new Flair() { Class = "red", Priority = 1, Text = "R10" }; }
public ConsoleMessage(string message, Flair flair, Position writePosition) { Message = message; Flair = flair; WritePosition = writePosition; }
public AnalysisScore( double score, string reason, string reportReason, string moduleName, Flair removalFlair ) :this(score,reason,reportReason,moduleName) { RemovalFlair = removalFlair; }
public List<Flair> GetFlairForSubreddit(string subreddit, string token, string after = null) { List<Flair> flairList = new List<Flair>(); string url = "https://oauth.reddit.com/r/" + subreddit + "/api/flairlist.json?&limit=1000"; if (string.IsNullOrEmpty(after) == false) url = url + "&after=" + after; Wait(); string json = _httpHelper.SendGet(url, "", authToken: token); JObject data = JObject.Parse(json); JArray users = (JArray)data["users"]; foreach (JObject user in users) { Flair flair = new Flair(); flair.Css = (string)user["flair_css_class"]; flair.Text = (string)user["flair_text"]; flair.Username = (string)user["user"]; flairList.Add(flair); } string next = (string)data["next"]; if (string.IsNullOrEmpty(next) == false) flairList.AddRange(GetFlairForSubreddit(subreddit, token, next)); return flairList; }