Documentation
¶
Overview ¶
Package opinions helps finding links to discussions about given topics/URLs on social news websites.
Index ¶
- type Discussion
- func SearchHackerNews(ctx context.Context, client http.Client, query string) ([]Discussion, error)
- func SearchLemmy(ctx context.Context, client http.Client, query string) ([]Discussion, error)
- func SearchLobsters(ctx context.Context, client http.Client, query string) ([]Discussion, error)
- func SearchReddit(ctx context.Context, client http.Client, query string) ([]Discussion, error)
- type HackerNewsResponse
- type LemmyResponse
- type RedditResponse
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Discussion ¶
Discussion is a representation of discussion inside social media service.
func SearchHackerNews ¶
SearchHackerNews query HN Search API for given prompt. It returns list of discussions sorted by relevance, then popularity, then number of comments.
See: https://hn.algolia.com/api
Example ¶
client := http.Client{}
query := "https://grugbrain.dev"
opinions := ensure.MustReturn(SearchHackerNews(context.TODO(), client, query))
fmt.Println(opinions[0])
Output: Hacker News https://news.ycombinator.com/item?id=31840331 The Grug Brained Developer https://grugbrain.dev/
func SearchLemmy ¶ added in v1.3.0
SearchLemmy query Lemmy Search API for given prompt. It returns list of discussions sorted by rank based on the score and time of the latest comment, with decay over time.
See: https://join-lemmy.org/docs/users/03-votes-and-ranking.html
Example ¶
client := http.Client{}
query := "https://grugbrain.dev/"
opinions := ensure.MustReturn(SearchLemmy(context.TODO(), client, query))
fmt.Println(opinions[0])
Output: Lemmy https://lemmy.world/post/7563451 The Grug Brained Developer (2022) https://grugbrain.dev/
func SearchLobsters ¶
SearchLobsters query Lobsters search engine for given prompt. It returns list of discussions sorted by relevance.
Example ¶
client := http.Client{}
query := "https://grugbrain.dev"
opinions := ensure.MustReturn(SearchLobsters(context.TODO(), client, query))
fmt.Println(opinions[0])
Output: Lobsters https://lobste.rs/s/ifaar4/grug_brained_developer The Grug Brained Developer https://grugbrain.dev/
func SearchReddit ¶ added in v1.4.0
SearchReddit searches Reddit for given query and returns list of discussions sorted by relevance.
See: https://www.reddit.com/dev/api#GET_search
Example ¶
client := http.Client{}
query := "https://grugbrain.dev/"
opinions := ensure.MustReturn(SearchReddit(context.TODO(), client, query))
fmt.Println(opinions[0])
Output: Reddit https://reddit.com/r/hypeurls/comments/17k6i1l/the_grug_brained_developer_2022/ The Grug Brained Developer (2022) https://grugbrain.dev/
Example (Unknown) ¶
client := http.Client{}
query := "https://invalid.domain/query"
opinions := ensure.MustReturn(SearchReddit(context.TODO(), client, query))
fmt.Println(len(opinions))
Output: 0
func (Discussion) String ¶
func (d Discussion) String() string
String returns string representation of discussion metadata.
type HackerNewsResponse ¶
type HackerNewsResponse struct {
Hits []struct {
CreatedAt time.Time `json:"created_at"`
Title string `json:"title"`
URL string `json:"url"`
NumComments int `json:"num_comments"`
ObjectID string `json:"objectID"`
} `json:"hits"`
}
HackerNewsResponse represents some interesting fields of response from HN Search API.
type LemmyResponse ¶ added in v1.3.0
type LemmyResponse struct {
Posts []struct {
Post struct {
ID int `json:"id"`
Name string `json:"name"`
URL string `json:"url"`
} `json:"post"`
Counts struct {
Comments int `json:"comments"`
} `json:"counts"`
} `json:"posts"`
}
LemmyResponse represents some interesting fields of response from Lemmy Search API.
See: https://join-lemmy.org/api/interfaces/SearchResponse.html
type RedditResponse ¶ added in v1.4.0
type RedditResponse struct {
Data struct {
Children []struct {
Data struct {
ID string `json:"permalink"`
Title string `json:"title"`
URL string `json:"url"`
NumComments int `json:"num_comments"`
} `json:"data"`
} `json:"children"`
} `json:"data"`
}
RedditResponse represents some interesting fields of response from Reddit API.
func (*RedditResponse) UnmarshalJSON ¶ added in v1.5.1
func (r *RedditResponse) UnmarshalJSON(b []byte) error
UnmarshalJSON deserialize inconsistent JSON responses to RedditResponse. Reddit returns empty object ("{}") when there are no search results.
Directories
¶
| Path | Synopsis |
|---|---|
|
Package ensure contains helpers for testable examples.
|
Package ensure contains helpers for testable examples. |
|
Package http implements cancellable REST requests with custom User-Agent.
|
Package http implements cancellable REST requests with custom User-Agent. |