mata_bot

some cheeky bot for #unix_surrealism
git clone https://git.pastanoggin.com/mata_bot.git
Log | Files | Refs | README | LICENSE

commit 7d5bcbc1da8b91e3d8df850abea8378bfea816b9
parent 3bebabfb747e2a236bae7c7c246d06aaaf63cd94
Author: boredpasta <boredpasta@tutanota.com>
Date:   Sun, 16 Mar 2025 21:20:51 +0200

add youtube link title previews

Diffstat:
Mmata_bot.pl | 19+++++++++++++++++++
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; }