added nsfw results for search functions

This commit is contained in:
2026-05-25 18:36:52 -05:00
parent 20b69e66fb
commit 68b11ef35c
3 changed files with 57 additions and 2 deletions
+53
View File
@@ -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
}
+2
View File
@@ -6,6 +6,7 @@ import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"io" "io"
"log/slog"
"net/http" "net/http"
"net/url" "net/url"
"reflect" "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, // 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. // 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) { 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 { if err := c.checkRateLimitBeforeDo(req); err != nil {
return &Response{ return &Response{
Response: err.Response, Response: err.Response,
+2 -2
View File
@@ -499,7 +499,7 @@ func (s *SubredditService) Unfavorite(ctx context.Context, subreddit string) (*R
// Search for subreddits. // Search for subreddits.
func (s *SubredditService) Search(ctx context.Context, query string, opts *ListSubredditOptions) ([]*Subreddit, *Response, error) { 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) l, resp, err := s.client.getListing(ctx, path, opts)
if err != nil { if err != nil {
return nil, resp, err return nil, resp, err
@@ -533,7 +533,7 @@ func (s *SubredditService) SearchPosts(ctx context.Context, query string, subred
subreddit = "all" 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) path, err := addOptions(path, opts)
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err