I wanted to try out the Nim language so I wrote a simple program to retrieve the top \$n\$ messages on a given subreddit in a given time frame and open them in the default browser.
I would really appreciate your feedback on how to do things more idiomatically.
import std/[strformat, rdstdin, parseutils]
import std/[httpclient, json, browsers]
let
headers: HttpHeaders = newHttpHeaders({"User-Agent": "Mozilla/5.0"})
proc get_best_posts_url(subreddit: string, t: string = "week", count: int = 1): seq[string] =
var url = fmt"https://www.reddit.com/r/{subreddit}/top.json?t={t}&limit={count}"
var client = newHttpClient(headers=headers)
var response = client.get(url)
var json = parseJson(response.body)
var posts = json["data"]["children"].getElems()
for post in posts:
result.add(post["data"]["url"].getStr())
proc open_best_posts(subreddit: string, t: string = "week", count: int = 1) =
for url in get_best_posts_url(subreddit, t, count):
openDefaultBrowser url
when isMainModule:
var subreddit = readLineFromStdin("Enter subreddit: ")
var t = readLineFromStdin("Enter time period (day, week, month, year, all): ")
var count: int
discard readLineFromStdin("Enter number of posts: ").parseInt(count)
open_best_posts(subreddit, t, count)