X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=videosite.pl;h=d87b5984fff28b5e01e19f961dc19a13d263c9c5;hb=552ef86edaa5d6e39f1a9d63d743948eb9353d3c;hp=2926b0b042dbadfeabe459acb43f29c661f55574;hpb=07ae64102eb11bca1a0c2b32599f96c6d2f9db70;p=videosite.git diff --git a/videosite.pl b/videosite.pl index 2926b0b..d87b598 100644 --- a/videosite.pl +++ b/videosite.pl @@ -22,6 +22,7 @@ use vars qw($VERSION %IRSSI); use XML::Simple; use Data::Dumper; use File::Spec; +use File::Temp qw(tempfile); use BettIrssi 101 qw(_bcb _bcs); use LWP::UserAgent; @@ -153,14 +154,27 @@ sub expand_url_shortener { my $s = shift; my $os = ''; my @urlshortener = ( + 'is\.gd/[[:alnum:]]+', + 'otf\.me/[[:alnum:]]+', + 'hel\.me/[[:alnum:]]+', + '7ax\.de/[[:alnum:]]+', + 'ow\.ly/[[:alnum:]]+', 'j\.mp/[[:alnum:]]+', 'bit\.ly/[[:alnum:]]+', 'tinyurl\.com/[[:alnum:]]+', + 'pop\.is/[[:alnum:]]+', + 'post\.ly/[[:alnum:]]+', + '1\.ly/[[:alnum:]]+', + '2\.ly/[[:alnum:]]+', + 't\.co/[[:alnum:]]+', + 'shar\.es/[[:alnum:]]+', + 'goo\.gl/[[:alnum:]]+', ); - my $ua = LWP::UserAgent->new(agent => 'Mozilla'); - my $i = 100; + my $ua = LWP::UserAgent->new(agent => 'Mozilla', max_redirect => 0); + my $i = 10; OUTER: while (($os ne $s) and ($i > 0)) { + study($s); $os = $s; $i--; @@ -174,8 +188,8 @@ sub expand_url_shortener { write_debug("Found %s", $matched); $res = $ua->head($matched); - if ($res->is_success()) { - my $new = $res->request()->uri(); + if ($res->is_redirect()) { + my $new = $res->headers()->header("Location"); write_debug("Replacing %s with %s", $matched, $new); $s =~ s/$matched/$new/; @@ -247,10 +261,12 @@ sub check_for_link { sub cmd_save { + eval { - open(CONF, '>'.$conffile) or die 'Could not open config file'; - print CONF XML::Simple::XMLout($conf, KeepRoot => 1, KeyAttr => {'config' => 'module', 'option' => 'key'}); - close(CONF); + my ($tempfile, $tempfn) = tempfile("videosite.xml.XXXXXX", dir => Irssi::get_irssi_dir()); + print $tempfile XML::Simple::XMLout($conf, KeepRoot => 1, KeyAttr => {'config' => 'module', 'option' => 'key'}); + close($tempfile); + rename($tempfn, $conffile); }; if ($@) { write_irssi('Could not save config to %s: %s', ($conffile, $@));