commit 7d5bcbc1da8b91e3d8df850abea8378bfea816b9
parent 3bebabfb747e2a236bae7c7c246d06aaaf63cd94
Author: boredpasta <boredpasta@tutanota.com>
Date: Sun, 16 Mar 2025 21:20:51 +0200
add youtube link title previews
Diffstat:
1 file changed, 19 insertions(+), 0 deletions(-)
diff --git a/mata_bot.pl b/mata_bot.pl
@@ -2,6 +2,7 @@
use v5.40;
use Getopt::Std;
+use HTTP::Tiny;
use IO::Socket qw(AF_INET SOCK_STREAM);
use IO::Socket::SSL;
use POSIX qw(strftime);
@@ -64,6 +65,24 @@ sub respond {
msg($sock, "${sender_nick} meant to say something but idk lol ($toreplace doesn't exist in their last message)");
}
return;
+ } elsif ($message =~ m,watch\?v=([a-zA-Z0-9-]+),) {
+ # post youtube video titles from video ID
+ my $video_id = $1;
+ my $response = HTTP::Tiny->new->get("https://fuyt.lab8.cz/?s=${video_id}&o=relevance");
+ if (not $response->{success}) {
+ msg($sock, "failed to get title of video $video_id <[x~x]> ($response->{status} $response->{reason}!)");
+ return;
+ } elsif (not length $response->{content}) {
+ msg($sock, "failed to get title of youtube video $video_id <[x~x]> (HTTP response empty!)");
+ return;
+ } else {
+ my $content = $response->{content};
+ if ($content =~ m,<span class="title"><a href="https://www\.youtube\.com/watch\?v=$video_id" accesskey="0">([^<]+)</a>,) {
+ msg($sock, "YouTube: $1");
+ } else {
+ msg($sock, "failed to get title of video $video_id <[x~x]> (no videos matching ID $video_id!)");
+ }
+ }
}
$subbuffer{$sender_nick} = $message;
}