From 68b11ef35c4754c1e1de89b549efce7f15d2f9ad Mon Sep 17 00:00:00 2001 From: long Date: Mon, 25 May 2026 18:36:52 -0500 Subject: [PATCH] added nsfw results for search functions --- examples/search/main.go | 53 +++++++++++++++++++++++++++++++++++++++++ reddit/reddit.go | 2 ++ reddit/subreddit.go | 4 ++-- 3 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 examples/search/main.go diff --git a/examples/search/main.go b/examples/search/main.go new file mode 100644 index 0000000..e067961 --- /dev/null +++ b/examples/search/main.go @@ -0,0 +1,53 @@ +package main + +import ( + "context" + "encoding/json" + "log/slog" + "os" + + "github.com/vartanbeno/go-reddit/v2/reddit" +) + +type Post struct { + reddit.Post +} + +var ctx = context.Background() + +func main() { + handler := slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{Level: slog.LevelDebug}) + logger := slog.New(handler) + slog.SetDefault(logger) + if err := run(logger); err != nil { + logger.Error("Failed", "error", err) + } +} + +func run(logger *slog.Logger) error { + client, err := reddit.NewReadonlyClient() + if err != nil { + return err + } + subs, _, err := client.Subreddit.Search(ctx, "hentai", nil) + if err != nil { + return err + } + logger.Info("Searching subreddits successful", "subreddits", subs) + posts, _, err := client.Subreddit.SearchPosts(ctx, "psylocke", "hentai", nil) + if err != nil { + return err + } + logger.Info("Searching posts successful", "posts", posts, "count", len(posts)) + data, err := json.Marshal(posts) + if err != nil { + return err + } + var new_posts []*Post + err = json.Unmarshal(data, &new_posts) + if err != nil { + return err + } + logger.Info("Unmarshalled post subclass", "posts", new_posts) + return nil +} diff --git a/reddit/reddit.go b/reddit/reddit.go index 3638fdf..efcaa32 100644 --- a/reddit/reddit.go +++ b/reddit/reddit.go @@ -6,6 +6,7 @@ import ( "encoding/json" "fmt" "io" + "log/slog" "net/http" "net/url" "reflect" @@ -348,6 +349,7 @@ func parseRate(r *http.Response) Rate { // pointed to by v, or returned as an error if an API error has occurred. If v implements the io.Writer interface, // the raw response will be written to v, without attempting to decode it. func (c *Client) Do(ctx context.Context, req *http.Request, v interface{}) (*Response, error) { + slog.Debug("Making API request to reddit", "url", req.URL.String(), "method", req.Method) if err := c.checkRateLimitBeforeDo(req); err != nil { return &Response{ Response: err.Response, diff --git a/reddit/subreddit.go b/reddit/subreddit.go index dc94838..d329b1c 100644 --- a/reddit/subreddit.go +++ b/reddit/subreddit.go @@ -499,7 +499,7 @@ func (s *SubredditService) Unfavorite(ctx context.Context, subreddit string) (*R // Search for subreddits. func (s *SubredditService) Search(ctx context.Context, query string, opts *ListSubredditOptions) ([]*Subreddit, *Response, error) { - path := fmt.Sprintf("subreddits/search?q=%s", query) + path := fmt.Sprintf("subreddits/search?q=%s&include_over_18=on", query) l, resp, err := s.client.getListing(ctx, path, opts) if err != nil { return nil, resp, err @@ -533,7 +533,7 @@ func (s *SubredditService) SearchPosts(ctx context.Context, query string, subred subreddit = "all" } - path := fmt.Sprintf("r/%s/search", subreddit) + path := fmt.Sprintf("r/%s/search?include_over_18=on", subreddit) path, err := addOptions(path, opts) if err != nil { return nil, nil, err