summaryrefslogtreecommitdiff
path: root/modules/3-youtube.rkt
diff options
context:
space:
mode:
Diffstat (limited to 'modules/3-youtube.rkt')
-rw-r--r--modules/3-youtube.rkt26
1 files changed, 26 insertions, 0 deletions
diff --git a/modules/3-youtube.rkt b/modules/3-youtube.rkt
new file mode 100644
index 0000000..835bee9
--- /dev/null
+++ b/modules/3-youtube.rkt
@@ -0,0 +1,26 @@
+#lang racket/base
+(require irc/bot racket/string net/url net/uri-codec json)
+(provide (all-defined-out))
+
+(define (youtube-query url)
+ (call/input-url
+ (string->url (format "https://noembed.com/embed?url=~a"
+ (uri-encode (url->string url))))
+ get-pure-port read-json))
+
+; catch youtube.com and youtu.be
+(define (extract-youtube-url s)
+ (define (is-yt-url u)
+ (and (url-host u)
+ (string-contains? (url-host u) "youtu")))
+
+ (let* ([urls (map string->url (string-split s))])
+ (findf is-yt-url urls)))
+
+(on (and (command-is 'PRIVMSG)
+ (context-is "#code"))
+ (let ([url (extract-youtube-url (suffix))])
+ (when url
+ (let* ([response (youtube-query url)]
+ [title (hash-ref response 'title)])
+ (reply (format "\"~a\"" title))))))