reddit: add slots to subreddit, cleanup private interface.
parent
1d8f4a3a34
commit
b9c2307bd6
|
@ -25,8 +25,9 @@ link_flair_text media media_embed name edited num_comments
|
||||||
num_reports over_18 permalink saved score selftext selftext_html
|
num_reports over_18 permalink saved score selftext selftext_html
|
||||||
subreddit subreddit_id thumbnail title ups url ;
|
subreddit subreddit_id thumbnail title ups url ;
|
||||||
|
|
||||||
TUPLE: subreddit created created_utc description display_name id
|
TUPLE: subreddit accounts_active created created_utc description
|
||||||
name over18 subscribers title url ;
|
display_name id header_img header_size header_title name over18
|
||||||
|
public_description subscribers title url ;
|
||||||
|
|
||||||
: parse-data ( assoc -- obj )
|
: parse-data ( assoc -- obj )
|
||||||
[ "data" swap at ] [ "kind" swap at ] bi {
|
[ "data" swap at ] [ "kind" swap at ] bi {
|
||||||
|
@ -46,25 +47,28 @@ TUPLE: page url data before after ;
|
||||||
[ "after" swap at [ f ] when-json-null ]
|
[ "after" swap at [ f ] when-json-null ]
|
||||||
} cleave \ page boa ;
|
} cleave \ page boa ;
|
||||||
|
|
||||||
: (user) ( username -- data )
|
: get-user ( username -- page )
|
||||||
"http://api.reddit.com/user/%s" sprintf json-page ;
|
"http://api.reddit.com/user/%s" sprintf json-page ;
|
||||||
|
|
||||||
: (about) ( username -- data )
|
: get-user-info ( username -- user )
|
||||||
"http://api.reddit.com/user/%s/about" sprintf
|
"http://api.reddit.com/user/%s/about" sprintf
|
||||||
http-get nip json> parse-data ;
|
http-get nip json> parse-data ;
|
||||||
|
|
||||||
: (url) ( url -- data )
|
: get-url-info ( url -- page )
|
||||||
"http://api.reddit.com/api/info?url=%s" sprintf json-page ;
|
"http://api.reddit.com/api/info?url=%s" sprintf json-page ;
|
||||||
|
|
||||||
: (search) ( query -- data )
|
: search-reddit ( query -- page )
|
||||||
"http://api.reddit.com/search?q=%s" sprintf json-page ;
|
"http://api.reddit.com/search?q=%s" sprintf json-page ;
|
||||||
|
|
||||||
: (subreddits) ( query -- data )
|
: search-subreddits ( query -- page )
|
||||||
"http://api.reddit.com/reddits/search?q=%s" sprintf json-page ;
|
"http://api.reddit.com/reddits/search?q=%s" sprintf json-page ;
|
||||||
|
|
||||||
: (domains) ( query -- data )
|
: get-domains ( query -- page )
|
||||||
"http://api.reddit.com/domain/%s" sprintf json-page ;
|
"http://api.reddit.com/domain/%s" sprintf json-page ;
|
||||||
|
|
||||||
|
: get-subreddit ( subreddit -- page )
|
||||||
|
"http://api.reddit.com/r/%s" sprintf json-page ;
|
||||||
|
|
||||||
: next-page ( page -- page' )
|
: next-page ( page -- page' )
|
||||||
[ url>> ] [ after>> "after" set-query-param ] bi json-page ;
|
[ url>> ] [ after>> "after" set-query-param ] bi json-page ;
|
||||||
|
|
||||||
|
@ -76,20 +80,17 @@ TUPLE: page url data before after ;
|
||||||
|
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
|
||||||
: get-subreddit ( subreddit -- data )
|
|
||||||
"http://api.reddit.com/r/%s" sprintf json-page ;
|
|
||||||
|
|
||||||
: user-links ( username -- stories )
|
: user-links ( username -- stories )
|
||||||
(user) data>> [ story? ] filter [ url>> ] map ;
|
get-user data>> [ story? ] filter [ url>> ] map ;
|
||||||
|
|
||||||
: user-comments ( username -- comments )
|
: user-comments ( username -- comments )
|
||||||
(user) data>> [ comment? ] filter [ body>> ] map ;
|
get-user data>> [ comment? ] filter [ body>> ] map ;
|
||||||
|
|
||||||
: user-karma ( username -- karma )
|
: user-karma ( username -- karma )
|
||||||
(about) link_karma>> ;
|
get-user-info link_karma>> ;
|
||||||
|
|
||||||
: url-score ( url -- score )
|
: url-score ( url -- score )
|
||||||
(url) data>> [ score>> ] map-sum ;
|
get-url-info data>> [ score>> ] map-sum ;
|
||||||
|
|
||||||
: subreddit-links ( subreddit -- links )
|
: subreddit-links ( subreddit -- links )
|
||||||
get-subreddit data>> [ url>> ] map ;
|
get-subreddit data>> [ url>> ] map ;
|
||||||
|
@ -140,6 +141,6 @@ PRIVATE>
|
||||||
] each-index ;
|
] each-index ;
|
||||||
|
|
||||||
: domain-stats ( domain -- stats )
|
: domain-stats ( domain -- stats )
|
||||||
(domains) all-pages [
|
get-domains all-pages [
|
||||||
created>> 1000 * millis>timestamp year>>
|
created>> 1000 * millis>timestamp year>>
|
||||||
] collect-by [ [ score>> ] map-sum ] assoc-map ;
|
] collect-by [ [ score>> ] map-sum ] assoc-map ;
|
||||||
|
|
Loading…
Reference in New Issue