public RedditUser(Reddit reddit, JToken json, IWebAgent webAgent) : base(json) { Reddit = reddit; WebAgent = webAgent; JsonConvert.PopulateObject(json["data"].ToString(), this, reddit.JsonSerializerSettings); }
static void Main(string[] args) { var reddit = new Reddit(); while (reddit.User == null) { Console.Write("Username: "******"Password: "******"Logging in..."); reddit.LogIn(username, password); } catch (AuthenticationException) { Console.WriteLine("Incorrect login."); } } var subreddit = reddit.GetSubreddit("pokemon"); var posts = subreddit.GetNew(); foreach (var post in posts.Take(25)) Console.WriteLine("/u/{0}: (+{1}-{2}:{3}) {4}", post.AuthorName, post.Upvotes, post.Downvotes, post.Score, post.Title); Console.ReadKey(true); }
public AuthenticatedUser(Reddit reddit, JToken json) : base(reddit, json) { Modhash = json["data"]["modhash"].Value<string>(); HasMail = json["data"]["has_mail"].Value<bool>(); HasModMail = json["data"]["has_mod_mail"].Value<bool>(); }
static void Main(string[] args) { var reddit = new Reddit(); int backDays; try { reddit.User = reddit.LogIn(ModUserName, ModPassword); _sub = reddit.GetSubreddit(SubReddit); int.TryParse(ReadBackDays, out backDays); if(backDays<1) { Console.WriteLine("Invalid value for readBackDays in config file. Please enter an integer greater than 0."); throw new Exception(); } } catch { Console.WriteLine("Configuration Error. Please confirm values in config file."); Console.WriteLine("Press Enter to exit."); Console.Read(); return; } while (true) { try { AssignFlairs(TriggerText, DateTime.Today.AddDays(backDays)); } catch (Exception ex) { Console.WriteLine(ex.Message); } } }
public Post(Reddit reddit, JToken post) : base(reddit, post) { Reddit = reddit; var data = post["data"]; AuthorName = data["author"].Value<string>(); AuthorFlairClass = data["author_flair_css_class"].Value<string>(); AuthorFlairText = data["author_flair_text"].Value<string>(); Domain = data["domain"].Value<string>(); Edited = data["edited"].Value<bool>(); IsSelfPost = data["is_self"].Value<bool>(); LinkFlairClass = data["link_flair_css_class"].Value<string>(); LinkFlairText = data["link_flair_text"].Value<string>(); CommentCount = data["num_comments"].Value<int>(); NSFW = data["over_18"].Value<bool>(); Permalink = data["permalink"].Value<string>(); Saved = data["saved"].Value<bool>(); Score = data["score"].Value<int>(); SelfText = data["selftext"].Value<string>(); SelfTextHtml = data["selftext_html"].Value<string>(); Subreddit = data["subreddit"].Value<string>(); Thumbnail = data["thumbnail"].Value<string>(); Title = HttpUtility.HtmlDecode(data["title"].Value<string>()); Url = data["url"].Value<string>(); if (data["num_reports"] != null) Reports = data["num_reports"].Value<int>(); }
private Reddit GetReddit() { var reddit = new Reddit(_appSettings.Options.RedditUsername, _appSettings.Options.RedditPassword, true); reddit.CaptchaSolver = new CaptchaIgnorer(); return reddit; }
public Post(Reddit reddit, JToken post) : base(reddit, post) { Reddit = reddit; var data = post["data"]; AuthorName = data["author"].Value<string>(); AuthorFlairClass = data["author_flair_css_class"].Value<string>(); AuthorFlairText = data["author_flair_text"].Value<string>(); Created = Reddit.UnixTimeStampToDateTime(data["created"].Value<double>()); Domain = data["domain"].Value<string>(); Downvotes = data["downs"].Value<int>(); Edited = data["edited"].Value<bool>(); IsSelfPost = data["is_self"].Value<bool>(); LinkFlairClass = data["link_flair_css_class"].Value<string>(); LinkFlairText = data["link_flair_text"].Value<string>(); CommentCount = data["num_comments"].Value<int>(); NSFW = data["over_18"].Value<bool>(); Permalink = data["permalink"].Value<string>(); Saved = data["saved"].Value<bool>(); Score = data["score"].Value<int>(); SelfText = data["selftext"].Value<string>(); SelfTextHtml = data["selftext_html"].Value<string>(); Subreddit = data["subreddit"].Value<string>(); Thumbnail = data["thumbnail"].Value<string>(); Title = HttpUtility.HtmlDecode(data["title"].Value<string>()); Upvotes = data["ups"].Value<int>(); Url = data["url"].Value<string>(); Name = data["name"].Value<string>().Replace("t3_", ""); }
public void Launch() { var reddit = new Reddit(); var user = reddit.LogIn("bot_wallpaper", "qwerty"); var subreddit = reddit.GetSubreddit("/r/botwallpaper"); DateTime today = DateTime.Today; if (today.DayOfWeek == DayOfWeek.Sunday && !sentMessages) { using (StreamReader sr = new StreamReader("subreddits.txt")) { string line; while ((line = sr.ReadLine()) != null) { SubredditProcessor wallpaper = new SubredditProcessor( line); wallpaper.Launch(); } Console.WriteLine("ServerListener: Created subreddits"); } sentMessages = true; } else if (today.DayOfWeek == DayOfWeek.Monday) { sentMessages = false; } }
public Post(Reddit reddit, JToken post, IWebAgent webAgent) : base(reddit, webAgent, post) { Reddit = reddit; WebAgent = webAgent; JsonConvert.PopulateObject(post["data"].ToString(), this, reddit.JsonSerializerSettings); }
public SubredditImage(Reddit reddit, SubredditStyle subredditStyle, string cssLink, string name) { Reddit = reddit; SubredditStyle = subredditStyle; Name = name; CssLink = cssLink; }
public CreatedThing(Reddit reddit, JToken json) : base(json) { Reddit = reddit; var data = json["data"]; Created = Reddit.UnixTimeStampToDateTime(data["created"].Value<double>()); }
static void Main(string[] args) { Reddit reddit = null; var authenticated = false; while (!authenticated) { Console.Write("OAuth? (y/n) [n]: "); var oaChoice = Console.ReadLine(); if (!string.IsNullOrEmpty(oaChoice) && oaChoice.ToLower()[0] == 'y') { Console.Write("OAuth token: "); var token = Console.ReadLine(); reddit = new Reddit(token); reddit.InitOrUpdateUser(); authenticated = reddit.User != null; if (!authenticated) Console.WriteLine("Invalid token"); } else { Console.Write("Username: "******"Password: "******"Logging in..."); reddit = new Reddit(username, password); authenticated = reddit.User != null; } catch (AuthenticationException) { Console.WriteLine("Incorrect login."); authenticated = false; } } } Console.Write("Create post? (y/n) [n]: "); var choice = Console.ReadLine(); if (!string.IsNullOrEmpty(choice) && choice.ToLower()[0] == 'y') { Console.Write("Type a subreddit name: "); var subname = Console.ReadLine(); var sub = reddit.GetSubreddit(subname); Console.WriteLine("Making test post"); var post = sub.SubmitTextPost("RedditSharp test", "This is a test post sent from RedditSharp"); Console.WriteLine("Submitted: {0}", post.Url); } else { Console.Write("Type a subreddit name: "); var subname = Console.ReadLine(); var sub = reddit.GetSubreddit(subname); foreach (var post in sub.GetTop(FromTime.Week).Take(10)) Console.WriteLine("\"{0}\" by {1}", post.Title, post.Author); } Console.ReadKey(true); }
public VotableThing(Reddit reddit, IWebAgent webAgent, JToken json) : base(reddit, json) { Reddit = reddit; WebAgent = webAgent; JsonConvert.PopulateObject(json["data"].ToString(), this, Reddit.JsonSerializerSettings); }
public void Launch() { List<String> title = new List<string>(); List<String> urls = new List<string>(); string body = ""; var reddit = new Reddit(); var user = reddit.LogIn("bot_wallpaper", "qwerty"); var subreddit = reddit.GetSubreddit("/r/" + _wallpaperType); foreach (var post in subreddit.GetTop(FromTime.Week).Take(25)) { if (_resolution == "null") { title.Add(post.Title); urls.Add(post.Url.ToString()); } else if (post.Title.Contains(_resolution)) { title.Add(post.Title); urls.Add(post.Url.ToString()); } } for (int i = 0; i < title.Count; i++) { body += "[" + title[i] + "](" + urls[i] + ") \n\n"; } reddit.ComposePrivateMessage("Wallpapers!", "#Here is the top wallpapers of this week in **/r/" + _wallpaperType + "** \n\n" + body + "\n\n I am a bot!", _username, "", ""); Console.WriteLine("UserProcessor: Message sent to " + _username); }
public Comment(Reddit reddit, JToken json, IWebAgent webAgent, Thing sender) : base(reddit, webAgent, json) { var data = json["data"]; JsonConvert.PopulateObject(data.ToString(), this, reddit.JsonSerializerSettings); Reddit = reddit; WebAgent = webAgent; // Parse sub comments // TODO: Consider deserializing this properly var subComments = new List<Comment>(); if (data["replies"] != null && data["replies"].Any()) { foreach (var comment in data["replies"]["data"]["children"]) subComments.Add(new Comment(reddit, comment, webAgent, sender)); } Comments = subComments.ToArray(); this.Parent = sender; // Handle Reddit's API being horrible if (data["context"] != null) { var context = data["context"].Value<string>(); LinkId = context.Split('/')[4]; } }
protected override async Task StartService(CancellationToken cancellationToken) { RedditCredentials credentials = await CredentialGetter.GetCredentials().ConfigureAwait(false); _userName = credentials.Username; do { try { _webAgent = new BotWebAgent(credentials.Username, credentials.Password, credentials.ClientId, credentials.ClientSecret, credentials.RedirectUrl); _webAgent.RateLimiter = new RateLimitManager(RateLimitMode.Pace); //This actually authenticates with reddit, that's why it's in a try/catch while loop _client = new RedditSharp.Reddit(_webAgent, true); break; } catch (Exception e) { Console.WriteLine(e); await Task.Delay(TimeSpan.FromMinutes(2)).ConfigureAwait(false); Logger.LogCritical(e.Message, e); } } while (true); StartReddit(cancellationToken); Logger.LogInformation($"{Platform} started on account '{_userName}'"); await Task.Delay(-1, cancellationToken); }
public async Task <IDictionary <NewsThread, List <Post> > > GetPosts(string board, IEnumerable <NewsThread> threads) { using (var op = Begin("Get posts for {0} threads for board {1}", threads.Count(), board)) { var source = $"r.{board}"; var webAgent = new BotWebAgent(Config("Reddit:User"), Config("Reddit:Pass"), Config("Reddit:ClientId"), Config("Reddit:ClientSecret"), "https://github.com/allisterb/Canaan"); webAgent.UserAgent = "Canaan/0.1"; var reddit = new RedditSharp.Reddit(webAgent); var threadPosts = new Dictionary <NewsThread, List <Post> >(); var redditPosts = new Dictionary <RedditSharp.Things.Post, List <Post> >(); var r = await reddit.GetSubredditAsync(board); await r.GetPosts(Subreddit.Sort.Top, 400).ForEachAsync(async(post, p) => { var thread = threads.SingleOrDefault(t => t.Id == post.Id + "-" + YY); if (thread != null) { var comments = await post.GetCommentsAsync(); var posts = comments.Select((c, cp) => GetPostsFromComment(board, cp, thread.Id, c, null)).SelectMany(x => x).ToList(); threadPosts.Add(thread, posts); } }); return(threadPosts); } }
public async Task <IEnumerable <NewsThread> > GetThreads(string board) { using (var op = Begin("Get threads for board {0}", board)) { var source = $"r.{board}"; var webAgent = new BotWebAgent(Config("Reddit:User"), Config("Reddit:Pass"), Config("Reddit:ClientId"), Config("Reddit:ClientSecret"), "https://github.com/allisterb/Canaan"); webAgent.UserAgent = "Canaan/0.1"; var reddit = new RedditSharp.Reddit(webAgent); var threads = new List <NewsThread>(); var r = await reddit.GetSubredditAsync(board); await r.GetPosts(Subreddit.Sort.Top, 400).ForEachAsync((post, p) => { var text = post.IsSelfPost ? post.SelfText : string.Empty; var html = post.IsSelfPost ? post.SelfTextHtml : null; NewsThread thread = new NewsThread() { Id = post.Id + "-" + YY, Source = source, Position = p + 1, Subject = post.Title, DatePublished = post.CreatedUTC, User = post.AuthorName, Text = text, Links = post.IsSelfPost ? WebScraper.ExtractLinksFromHtmlFrag(html) : new Link[] { new Link() { Uri = post.Url } } }; threads.Add(thread); }); return(threads); } }
public SubredditSettings(Subreddit subreddit, Reddit reddit, JObject json) { Subreddit = subreddit; Reddit = reddit; var data = json["data"]; AllowAsDefault = data["default_set"].Value<bool>(); Domain = data["domain"].Value<string>(); Description = data["description"].Value<string>(); Language = data["language"].Value<string>(); Title = data["title"].Value<string>(); WikiEditKarma = data["wiki_edit_karma"].Value<int>(); UseDomainCss = data["domain_css"].Value<bool>(); UseDomainSidebar = data["domain_sidebar"].Value<bool>(); HeaderHoverText = data["header_hover_text"].Value<string>(); NSFW = data["over_18"].Value<bool>(); PublicDescription = data["public_description"].Value<string>(); string wikiMode = data["wikimode"].Value<string>(); switch (wikiMode) { case "disabled": WikiEditMode = WikiEditMode.None; break; case "modonly": WikiEditMode = WikiEditMode.Moderators; break; case "anyone": WikiEditMode = WikiEditMode.All; break; } string type = data["subreddit_type"].Value<string>(); switch (type) { case "public": SubredditType = SubredditType.Public; break; case "private": SubredditType = SubredditType.Private; break; case "restricted": SubredditType = SubredditType.Restricted; break; } ShowThumbnails = data["show_media"].Value<bool>(); WikiEditAge = data["wiki_edit_age"].Value<int>(); string contentOptions = data["content_options"].Value<string>(); switch (contentOptions) { case "any": ContentOptions = ContentOptions.All; break; case "link": ContentOptions = ContentOptions.LinkOnly; break; case "self": ContentOptions = ContentOptions.SelfOnly; break; } }
public async Task<List<ImageLink>> GetImgurLinksFromSubReddit(Reddit reddit, string sub, SearchRange searchRange, Sorting sortOrder, string outputPath, CancellationToken token) { token.ThrowIfCancellationRequested(); Subreddit subreddit = null; var links = new List<ImageLink>(); if (!string.IsNullOrWhiteSpace(sub)) { try { subreddit = reddit.GetSubreddit(sub); OutputLine($"{subreddit.Name}: Begining Search..."); } catch (Exception e) { OutputLine($"Error connecting to reddit: {e.Message}"); return links; } } if (_filter == null) _filter = string.Empty; var searchTo = DateTime.Now; var searchFrom = DateTime.Now; switch (searchRange) { case SearchRange.Today: searchFrom = searchFrom.AddDays(-1); break; case SearchRange.Week: searchFrom = searchFrom.AddDays(-7); break; case SearchRange.Fortnight: searchFrom = searchFrom.AddDays(-14); break; case SearchRange.Month: searchFrom = searchFrom.AddMonths(-1); break; case SearchRange.ThreeMonths: searchFrom = searchFrom.AddMonths(-3); break; case SearchRange.SixMonths: searchFrom = searchFrom.AddMonths(-6); break; } var search = !string.IsNullOrWhiteSpace(sub) ? searchRange == SearchRange.AllTime ? subreddit?.Search(_filter) : subreddit?.Search(searchFrom, searchTo, sortOrder) : reddit.Search<Post>(_filter); token.ThrowIfCancellationRequested(); var listings = search?.GetEnumerator(); links = CombineLinkLists(await GetImagesFromListing(reddit, listings, outputPath, token), links); return links; }
public SubredditImage(Reddit reddit, SubredditStyle subredditStyle, string cssLink, string name, IWebAgent webAgent) { Reddit = reddit; WebAgent = webAgent; SubredditStyle = subredditStyle; Name = name; CssLink = cssLink; }
public void Register(IModularContainer container) { var appConfiguration = new AppConfiguration(); // Register the logger for the application immediately container.RegisterLogger(appConfiguration.LogFilename); // Actual login is performed here. var botWebAgent = new BotWebAgent ( appConfiguration.DB4Username, appConfiguration.DB4Password, appConfiguration.DB4ClientId, appConfiguration.DB4ClientSecret, "http://localhost" ); var reddit = new RedditSharp.Reddit(botWebAgent, true); var subreddit = reddit.GetSubredditAsync($"/r/{appConfiguration.SubredditName}").Result; // Register core / shared classes container.RegisterSingleton(appConfiguration); container.RegisterSingleton <AutoRestartManager>(); container.RegisterSingleton(botWebAgent); container.RegisterSingleton(reddit); container.RegisterSingleton(subreddit); container.RegisterSingleton <RedditState>(); // Register shared services container.Register <IDB4Queue, DB4MemoryQueue>(); // Register persistence services container.Register <IDB4Repository, DB4Repository>(); // Register Reddit Services container.Register <IActivityDispatcher, RedditSharpActivityDispatcher>(); container.Register <IActivityMonitor, RedditSharpActivityMonitor>(); container.Register <IRedditService, RedditSharpRedditService>(); container.Register <ISubredditService, RedditSharpSubredditService>(); // Register functionality implementations container.Register <IDB4QueueDispatcher, DB4QueueDispatcher>(); container.Register <ICommentProcessor, CommentProcessor>(); container.Register <ICommentBuilder, CommentBuilder>(); container.Register <ICommentDetector, CommentDetector>(); container.Register <ICommentValidator, CommentValidator>(); container.Register <ICommentReplier, CommentReplier>(); container.Register <IDeltaAwarder, DeltaAwarder>(); container.Register <IDeltaboardEditor, DeltaboardEditor>(); container.Register <IDeltaLogEditor, DeltaLogEditor>(); container.Register <IHealthPinger, HealthPinger>(); container.Register <IPostBuilder, PostBuilder>(); container.Register <IPrivateMessageProcessor, PrivateMessageProcessor>(); container.Register <IPrivateMessageHandlerFactory, PrivateMessageHandlerFactory>(); container.Register <IStickyCommentEditor, StickyCommentEditor>(); container.Register <IUserWikiEditor, UserWikiEditor>(); }
protected internal WikiPageSettings(Reddit reddit, JToken json, IWebAgent webAgent) { var editors = json["editors"].ToArray(); Editors = editors.Select(x => { return new RedditUser(reddit, x, webAgent); }); JsonConvert.PopulateObject(json.ToString(), this, reddit.JsonSerializerSettings); }
public LogOnForm() { InitializeComponent(); this.Icon = Properties.Resources.TrayIcon; LoginButton.Select(); reddit = new Reddit(); }
static void Main(string[] args) { var reddit = new Reddit(); var user = reddit.LogIn("botusername", "botpassword"); var timer = new System.Threading.Timer( e => ModInvites(), null, TimeSpan.Zero, TimeSpan.FromMinutes(5)); }
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 SubredditImage(Reddit reddit, SubredditStyle subreddit, string cssLink, string name, string url, IWebAgent webAgent) : this(reddit, subreddit, cssLink, name, webAgent) { Url = new Uri(url); // Handle legacy image urls // http://thumbs.reddit.com/FULLNAME_NUMBER.png int discarded; if (int.TryParse(url, out discarded)) Url = new Uri(string.Format("http://thumbs.reddit.com/{0}_{1}.png", subreddit.Subreddit.FullName, url), UriKind.Absolute); }
public SubredditImage(Reddit reddit, SubredditStyle subreddit, string cssLink, string name, string url) : this(reddit, subreddit, cssLink, name) { Url = url; // Handle legacy image urls // http://thumbs.reddit.com/FULLNAME_NUMBER.png int discarded; if (int.TryParse(url, out discarded)) Url = string.Format("http://thumbs.reddit.com/{0}_{1}.png", subreddit.Subreddit.FullName, url); }
public VotableThing(Reddit reddit, JToken json) : base(reddit, json) { Reddit = reddit; var data = json["data"]; Upvotes = data["ups"].Value<int>(); Downvotes = data["downs"].Value<int>(); if (data["likes"] != null) Liked = data["likes"].Value<bool?>(); }
public RAOATools(string modMailSub) { try { _reddit = new Reddit(); Sub = _reddit.GetSubreddit(modMailSub); } catch (Exception) { } }
protected internal Subreddit(Reddit reddit, JToken json) : base(json) { Reddit = reddit; JsonConvert.PopulateObject(json["data"].ToString(), this, reddit.JsonSerializerSettings); Name = Url; if (Name.StartsWith("/r/")) Name = Name.Substring(3); if (Name.StartsWith("r/")) Name = Name.Substring(2); Name = Name.TrimEnd('/'); }
public SubredditStyle(Reddit reddit, Subreddit subreddit, JToken json, IWebAgent webAgent) : this(reddit, subreddit, webAgent) { Images = new List<SubredditImage>(); var data = json["data"]; CSS = HttpUtility.HtmlDecode(data["stylesheet"].Value<string>()); foreach (var image in data["images"]) { Images.Add(new SubredditImage( Reddit, this, image["link"].Value<string>(), image["name"].Value<string>(), image["url"].Value<string>(), WebAgent)); } }
public RedditUser(Reddit reddit, JToken json) { var data = json["data"]; Name = data["name"].Value<string>(); Id = data["id"].Value<string>(); HasGold = data["is_gold"].Value<bool>(); IsModerator = data["is_mod"].Value<bool>(); LinkKarma = data["link_karma"].Value<int>(); CommentKarma = data["comment_karma"].Value<int>(); Created = Reddit.UnixTimeStampToDateTime(data["created"].Value<double>()); Reddit = reddit; }
static void Main() { bool dbug = Debugger.IsAttached; Console.Title = "BookHorseBot " + Constants.Version; List <string> ignoredUsers = C.Ignored.User; //Does all the dirty work of handling oAuth and tokens. Gives botclient authentication. AuthorizeFimFictionBot(); Reddit reddit = AuthorizeRedditBot(); string redditName = reddit.User.FullName; Console.WriteLine(dbug ? "Debug detected. Running on test subreddit!" : "Running on Main subreddit!"); Subreddit subreddit = reddit.GetSubreddit(dbug ? "bronyvillers" : "mylittlepony"); IEnumerable <Comment> commentStream = subreddit.CommentStream.Where(c => !ignoredUsers.Contains(c.AuthorName.ToLower()) && c.CreatedUTC >= DateTime.UtcNow.AddMinutes(-120) && c.AuthorName.ToLower() != redditName.ToLower() ); foreach (Comment comment in commentStream) { //Look for { and }, if none are found, skip! MatchCollection matches = Regex.Matches(comment.Body, @"(?<=\{)[^}]*(?=\})", RegexOptions.None); if (matches.Count == 0) { continue; } //Check to see if we already replied to this comment. Comment qualifiedComment = reddit.GetComment(new Uri(comment.Shortlink)); if (qualifiedComment.Comments.All(x => x.AuthorName != redditName)) { string username = qualifiedComment.AuthorName.ToLower(); List <Command> commands = ExtractCommands(matches, username); if (commands.Count > 0) { GetPostText(commands); string postReplyBody = GeneratePostBody(commands); try { comment.Reply(postReplyBody); Console.WriteLine($"Reply posted to {comment.AuthorName}!"); } catch (Exception e) { System.Console.WriteLine(e); } } } } }
public void ClearFlairTemplates(FlairType flairType) { var request = Reddit.CreatePost(ClearFlairTemplatesUrl); var stream = request.GetRequestStream(); Reddit.WritePostBody(stream, new { flair_type = flairType == FlairType.Link ? "LINK_FLAIR" : "USER_FLAIR", uh = Reddit.User.Modhash, r = Name }); stream.Close(); var response = request.GetResponse(); var data = Reddit.GetResponseString(response.GetResponseStream()); }
public void RemoveModerator(string id) { var request = Reddit.CreatePost(LeaveModerationUrl); Reddit.WritePostBody(request.GetRequestStream(), new { api_type = "json", uh = Reddit.User.Modhash, r = Name, type = "moderator", id }); var response = request.GetResponse(); var result = Reddit.GetResponseString(response.GetResponseStream()); }
public SubredditImage(Reddit reddit, SubredditStyle subreddit, string cssLink, string name, string url, IWebAgent webAgent) : this(reddit, subreddit, cssLink, name, webAgent) { Url = new Uri(url); // Handle legacy image urls // http://thumbs.reddit.com/FULLNAME_NUMBER.png int discarded; if (int.TryParse(url, out discarded)) { Url = new Uri(string.Format("http://thumbs.reddit.com/{0}_{1}.png", subreddit.Subreddit.FullName, url), UriKind.Absolute); } }
public static Subreddit GetRSlashAll(Reddit reddit) { var rSlashAll = new Subreddit { DisplayName = "/r/all", Title = "/r/all", Url = new Uri("/r/all", UriKind.Relative), Name = "all", Reddit = reddit, WebAgent = reddit._webAgent }; return(rSlashAll); }
public static Subreddit GetFrontPage(Reddit reddit) { var frontPage = new Subreddit { DisplayName = "Front Page", Title = "reddit: the front page of the internet", Url = new Uri("/", UriKind.Relative), Name = "/", Reddit = reddit, WebAgent = reddit._webAgent }; return(frontPage); }
public void Approve() { var request = Reddit.CreatePost(ApproveUrl); var stream = request.GetRequestStream(); Reddit.WritePostBody(stream, new { id = FullName, uh = Reddit.User.Modhash }); stream.Close(); var response = request.GetResponse(); var data = Reddit.GetResponseString(response.GetResponseStream()); }
static void Main(string[] args) { RedditSharp.Reddit reddit = new RedditSharp.Reddit(); var user = reddit.GetUser("riseofbacon"); var posts = user.GetPosts(RedditSharp.Things.Sort.Top).Where(p => p.SubredditName == "DestinyTheGame").Take(3); foreach (var post in posts) { Console.WriteLine(post.Title); } Console.ReadLine(); }
protected internal Subreddit(Reddit reddit, JToken json) : base(json) { Reddit = reddit; JsonConvert.PopulateObject(json["data"].ToString(), this, reddit.JsonSerializerSettings); Name = Url; if (Name.StartsWith("/r/")) { Name = Name.Substring(3); } if (Name.StartsWith("r/")) { Name = Name.Substring(2); } Name = Name.TrimEnd('/'); }
public void SetUserFlair(string user, string cssClass, string text) { var request = Reddit.CreatePost(SetUserFlairUrl); var stream = request.GetRequestStream(); Reddit.WritePostBody(stream, new { css_class = cssClass, text = text, uh = Reddit.User.Modhash, r = Name, name = user }); stream.Close(); var response = request.GetResponse(); var data = Reddit.GetResponseString(response.GetResponseStream()); }
void InitializeRedditApi(IRedditCredentials creds) { if (creds.AreIncomplete()) { throw new InvalidConfigurationException( "You must fill in your Reddit information into the settings page first."); } string userAgent = creds.UserAgent ?? "News Sharer"; BotWebAgent botWebAgent = new BotWebAgent(creds.Username, creds.Password, creds.ClientId, creds.ClientSecret, "https://localhost/"); botWebAgent.UserAgent = $"{userAgent} (/u/{creds.Username})"; RedditApi = new RedditSharp.Reddit(botWebAgent, false); }
public void Unsubscribe() { if (Reddit.User == null) throw new AuthenticationException("No user logged in."); var request = Reddit.CreatePost(SubscribeUrl); var stream = request.GetRequestStream(); Reddit.WritePostBody(stream, new { action = "unsub", sr = FullName, uh = Reddit.User.Modhash }); stream.Close(); var response = request.GetResponse(); var data = Reddit.GetResponseString(response.GetResponseStream()); // Discard results }
public void Delete() { var request = Reddit.CreatePost(DeleteImageUrl); var stream = request.GetRequestStream(); Reddit.WritePostBody(stream, new { img_name = Name, uh = Reddit.User.Modhash, r = SubredditStyle.Subreddit.Name }); stream.Close(); var response = request.GetResponse(); var data = Reddit.GetResponseString(response.GetResponseStream()); SubredditStyle.Images.Remove(this); }
public void Downvote() { var request = Reddit.CreatePost(VoteUrl); var stream = request.GetRequestStream(); Reddit.WritePostBody(stream, new { dir = -1, id = FullName, uh = Reddit.User.Modhash }); stream.Close(); var response = request.GetResponse(); var data = Reddit.GetResponseString(response.GetResponseStream()); Liked = false; }
public void Vote(VoteType type) { var request = Reddit.CreatePost(VoteUrl); var stream = request.GetRequestStream(); Reddit.WritePostBody(stream, new { dir = (int)type, id = FullName, uh = Reddit.User.Modhash }); stream.Close(); var response = request.GetResponse(); var data = Reddit.GetResponseString(response.GetResponseStream()); Liked = null; }
public Comment[] GetComments() { var comments = new List <Comment>(); var request = Reddit.CreateGet(string.Format(GetCommentsUrl, Id)); var response = request.GetResponse(); var data = Reddit.GetResponseString(response.GetResponseStream()); var json = JArray.Parse(data); var postJson = json.Last()["data"]["children"]; foreach (var comment in postJson) { comments.Add(new Comment(Reddit, comment)); } return(comments.ToArray()); }
public void Unhide() { if (Reddit.User == null) { throw new AuthenticationException("No user logged in."); } var request = Reddit.CreatePost(UnhideUrl); var stream = request.GetRequestStream(); Reddit.WritePostBody(stream, new { id = FullName, uh = Reddit.User.Modhash }); stream.Close(); var response = request.GetResponse(); var data = Reddit.GetResponseString(response.GetResponseStream()); }
public void UpdateCss() { var request = Reddit.CreatePost(UpdateCssUrl); var stream = request.GetRequestStream(); Reddit.WritePostBody(stream, new { op = "save", stylesheet_contents = CSS, uh = Reddit.User.Modhash, api_type = "json", r = Subreddit.Name }); stream.Close(); var response = request.GetResponse(); var data = Reddit.GetResponseString(response.GetResponseStream()); var json = JToken.Parse(data); }
public static void PostBallot(Ballot ballot) { var motion = ballot.Motion; if (motion.PostUrl == "") { return; } var reddit = new RedditSharp.Reddit(Config.RedditUser, Config.RedditPass, true); var post = reddit.GetPost(new Uri(motion.PostUrl)); post.Comment("###" + ballot.Moderator.Name + "###" + Environment.NewLine + "*****" + Environment.NewLine + DateTime.Now.ToUniversalTime().ToString("yyyy-MM-dd HH:mm:ss") + @" \(UTC\) : *" + ballot.Choice.ToString() + "*" + Environment.NewLine ); }
public void Distinguish(DistinguishType distinguishType) { if (Reddit.User == null) { throw new AuthenticationException("No user logged in."); } var request = Reddit.CreatePost(DistinguishUrl); var stream = request.GetRequestStream(); string how; switch (distinguishType) { case DistinguishType.Admin: how = "admin"; break; case DistinguishType.Moderator: how = "yes"; break; case DistinguishType.None: how = "no"; break; default: how = "special"; break; } Reddit.WritePostBody(stream, new { how, id = Id, uh = Reddit.User.Modhash }); stream.Close(); var response = request.GetResponse(); var data = Reddit.GetResponseString(response.GetResponseStream()); var json = JObject.Parse(data); if (json["jquery"].Count(i => i[0].Value <int>() == 11 && i[1].Value <int>() == 12) == 0) { throw new AuthenticationException("You are not permitted to distinguish this comment."); } }
public void AddFlairTemplate(string cssClass, FlairType flairType, string text, bool userEditable) { var request = Reddit.CreatePost(FlairTemplateUrl); var stream = request.GetRequestStream(); Reddit.WritePostBody(stream, new { css_class = cssClass, flair_type = flairType == FlairType.Link ? "LINK_FLAIR" : "USER_FLAIR", text = text, text_editable = userEditable, uh = Reddit.User.Modhash, r = Name, api_type = "json" }); stream.Close(); var response = request.GetResponse(); var data = Reddit.GetResponseString(response.GetResponseStream()); var json = JToken.Parse(data); }
public void UploadImage(string name, ImageType imageType, byte[] file) { var request = Reddit.CreatePost(UploadImageUrl); var formData = new MultipartFormBuilder(request); formData.AddDynamic(new { name, uh = Reddit.User.Modhash, r = Subreddit.Name, formid = "image-upload", img_type = imageType == ImageType.PNG ? "png" : "jpg", upload = "" }); formData.AddFile("file", "foo.png", file, imageType == ImageType.PNG ? "image/png" : "image/jpeg"); formData.Finish(); var response = request.GetResponse(); var data = Reddit.GetResponseString(response.GetResponseStream()); // TODO: Detect errors }
public void Reply(string message) { if (Reddit.User == null) { throw new AuthenticationException("No user logged in."); } var request = Reddit.CreatePost(CommentUrl); var stream = request.GetRequestStream(); Reddit.WritePostBody(stream, new { text = message, thing_id = FullName, uh = Reddit.User.Modhash }); stream.Close(); var response = request.GetResponse(); var data = Reddit.GetResponseString(response.GetResponseStream()); var json = JObject.Parse(data); }
private static Reddit AuthorizeRedditBot() { BotWebAgent webAgent = new BotWebAgent(C.Reddit.Username, C.Reddit.Password, C.Reddit.ClientId, C.Reddit.ClientSecret, "https://google.com"); Reddit reddit = new Reddit(webAgent, true); reddit.LogIn(C.Reddit.Username, C.Reddit.Password); string redditName = reddit.User.FullName; if (redditName.ToLower() == C.Reddit.Username.ToLower()) { Console.WriteLine("Logged in!"); } return(reddit); }
public Comment(Reddit reddit, JToken json) : base(reddit, json) { var data = json["data"]; JsonConvert.PopulateObject(data.ToString(), this, reddit.JsonSerializerSettings); Reddit = reddit; // Parse sub comments // TODO: Consider deserializing this properly var subComments = new List <Comment>(); if (data["replies"] != null && data["replies"].Any()) { foreach (var comment in data["replies"]["data"]["children"]) { subComments.Add(new Comment(reddit, comment)); } } Comments = subComments.ToArray(); }
public PrivateMessage(Reddit reddit, JToken json) : base(json) { Reddit = reddit; JsonConvert.PopulateObject(json["data"].ToString(), this, reddit.JsonSerializerSettings); var data = json["data"]; if (data["replies"] != null && data["replies"].Any()) { if (data["replies"]["data"] != null) { if (data["replies"]["data"]["children"] != null) { var replies = new List <PrivateMessage>(); foreach (var reply in data["replies"]["data"]["children"]) { replies.Add(new PrivateMessage(reddit, reply)); } Replies = replies.ToArray(); } } } }
static int Main(string[] args) { Reddit reddit = new Reddit(); Login(reddit); Subreddit subreddit = GetFrontPage(reddit); IEnumerable<Post> topPosts = GetTopPosts(subreddit); Subreddit subredditToPostTo = reddit.GetSubreddit("readability"); foreach (Post post in topPosts) { StringBuilder commentToPost = new StringBuilder(String.Format("Thread link: http://www.reddit.com/{0}\n\n***\n\n", post.Id)); List<Comment> topComments = GetTopComments(post); foreach (Comment comment in topComments) { commentToPost.Append(String.Format("\"{0}\"\n\n", comment.Body)); // Removes formatting so that linguistic analysis works properly string commentText = comment.Body; RemoveFormatting(ref commentText); LinguisticAnalysis analysis = new LinguisticAnalysis(commentText); commentToPost.Append(String.Format("`Words: {0}`\n\n`Characters: {1}`\n\n`Sentences: {2}`\n\n`Syllables: {3}`\n\n`% Hard Words: {4}`\n\n", analysis.GetWords(), analysis.GetCharacters(), analysis.GetSentences(), analysis.GetSyllables(), analysis.GetPercentageHardWords())); ReadabilityAnalysis(analysis, commentToPost); commentToPost.Append("***\n\n"); } PostRedditThread(subredditToPostTo, post.Title, commentToPost); } Console.WriteLine(LOG_SUCCESSFUL_RUN); Console.Read(); // Remove later return 1; }