#!/usr/bin/env racket ;; ;; SPDX-License-Identifier: ISC ;; ;; Copyright © 2019 rsiddharth ;; #lang racket/base (require racket/list) (require racket/port) (require net/http-client) (require openssl) (require html-parsing) (require sxml/sxpath) (define HOST "news.ycombinator.com") (define (fp) "Fetch HN Front Page." (let ((hc (http-conn-open HOST #:ssl? (ssl-make-client-context 'secure) #:port 443))) (define-values (status headers port) (http-conn-sendrecv! hc "/")) (port->string port))) (define (athings) "Get 20 athings from HN front page." (let ((x (html->xexp (fp))) (s (sxpath "//tr[@class=\"athing\"]"))) (take (s x) 20)))