]> git.armaanb.net Git - bettersearch.git/commitdiff
Add basic web server stuff
authorArmaan Bhojwani <me@armaanb.net>
Sat, 27 Nov 2021 21:57:25 +0000 (16:57 -0500)
committerArmaan Bhojwani <me@armaanb.net>
Sat, 27 Nov 2021 21:57:25 +0000 (16:57 -0500)
README [new file with mode: 0644]
bettersearch.rkt
blacklist.rkt
server.rkt [new file with mode: 0644]

diff --git a/README b/README
new file mode 100644 (file)
index 0000000..88e5c09
--- /dev/null
+++ b/README
@@ -0,0 +1,3 @@
+Web search that sucks a little bit less
+
+https://search.armaanb.net
index 81c6f5311b285066af3042296f7c00bbb8a40734..f3acf79eee4fbcc116c41a5697d7f3e53e8d69e8 100644 (file)
@@ -5,6 +5,12 @@
 
 (require "blacklist.rkt")
 
+(define (member-match? itm lst)
+  (ormap (lambda (i)
+          (regexp-match? (regexp i) itm))
+        lst))
+
+(define (get-results query)
 (define engine (string->url
                 "https://search.trom.tf/search?q=facebook&format=json"))
 (define response (get-pure-port engine))
     (lambda ()
       (read-json))))
 
-; Convert results to net/url format
+; Parse and filter results
+; TODO: replace this with tail-call recursion and return instead of printing
 (for-each (lambda (i)
-           (define result-url (string->url (hash-ref i 'url)))
-           (unless (member (url-host result-url) blacklist)
-             (writeln (url-host result-url))))
+           (define result-title (hash-ref i 'title ""))
+           (define result-url (url-host (string->url (hash-ref i 'url ""))))
+           (define result-content (hash-ref i 'content ""))
+
+           (unless (member-match? result-url blacklist)
+             (writeln result-title)
+             (writeln result-url)
+             (writeln result-content)
+             (writeln "")
+
+             ))
          (hash-ref json 'results))
+)
index 3791a3830c3490054523f57a411dd7fc9bba4661..4374c06be05ec804dea7f7fc0eef44fb7c44e5fd 100644 (file)
@@ -4,13 +4,18 @@
 
 (define blacklist
   '(
-    ; social_media
-    "www.facebook.com"
+    ; Social Media
     "facebook.com"
     "instagram.com"
+    "reddit.com"
+    "tiktok.com"
     "twitter.com"
 
-    ; "stackexchange"
+    ; Video Hosting
+    "youtube.com"
+    "vimeo.com"
+
+    ; Stack Exchange
     "askubuntu.com"
     "blogoverflow.com"
     "mathoverflow.net"
diff --git a/server.rkt b/server.rkt
new file mode 100644 (file)
index 0000000..7f7562f
--- /dev/null
@@ -0,0 +1,35 @@
+#lang racket
+
+(require web-server/servlet)
+(require web-server/formlets)
+(require web-server/servlet-env)
+
+(require "bettersearch.rkt")
+
+(define-values (dispatch generate-url)
+  (dispatch-rules
+    [("")       do-index]
+    [("search") do-search]
+    ))
+
+(define (do-search req)
+  (define binds (request-bindings req))
+  (define query (if
+                 (exists-binding? 'q binds)
+                 (extract-binding/single 'q binds)
+                 ""))
+
+  (if (non-empty-string? query)
+    (response/xexpr `(html
+                      (h1 "Search results")
+                      (fetch-results query)
+                      ))
+    (response/xexpr `(html
+                      (h1 "ho")
+                      ))
+    )
+  )
+
+(serve/servlet dispatch
+              #:command-line? #t
+              #:servlet-regexp #rx"")