-my @grabbers;
-my @getters;
-my $getter;
-my $conf;
-my $xmlconffile = File::Spec->catfile(Irssi::get_irssi_dir(), 'videosite.xml');
-my $conffile = File::Spec->catfile(Irssi::get_irssi_dir(), 'videosite.json');
-my $scriptdir = File::Spec->catfile(Irssi::get_irssi_dir(), 'scripts');
-my $plugindir = File::Spec->catfile($scriptdir, 'videosite');
-my @outputstack = (undef);
-
-my $PARAMS = {
- 'getter' => '',
- 'mode' => 'download',
- 'connectorlist' => ['direct'],
- 'connectors' => {},
-};
-
-
-# activate debug here
-my $debug = 0;
-
-# "message public", SERVER_REC, char *msg, char *nick, char *address, char *target
-signal_add_last(_bcs("message public" => sub {check_for_link(@_)}));
-# "message own_public", SERVER_REC, char *msg, char *target
-signal_add_last(_bcs("message own_public" => sub {check_for_link(@_)}));
-
-# "message private", SERVER_REC, char *msg, char *nick, char *address
-signal_add_last(_bcs("message private" => sub {check_for_link(@_)}));
-# "message own_private", SERVER_REC, char *msg, char *target, char *orig_target
-signal_add_last(_bcs("message own_private" => sub {check_for_link(@_)}));
-
-# "message irc action", SERVER_REC, char *msg, char *nick, char *address, char *target
-signal_add_last(_bcs("message irc action" => sub {check_for_link(@_)}));
-# "message irc own_action", SERVER_REC, char *msg, char *target
-signal_add_last(_bcs("message irc own_action" => sub {check_for_link(@_)}));
-
-# For tab completion
-# This does not use BettIrssi (yet)
-signal_add_first('complete word', \&sig_complete);
-
-sub push_output {
- unshift(@outputstack, shift);
-}
-
-sub pop_output {
- shift(@outputstack);
-
- @outputstack = (undef) unless (@outputstack);
-}
-
-my $videosite_commands = {
- 'save' => sub {
- cmd_save();
- },
-
- 'set' => sub {
- cmd_set(@_);
- },
-
- 'show' => sub {
- cmd_show(@_);
- },
-
- 'help' => sub {
- cmd_help(@_);
- },
-
- 'getter' => sub {
- cmd_getter(@_);
- },
-
- 'enable' => sub {
- cmd_enable(@_);
- },
-
- 'disable' => sub {
- cmd_disable(@_);
- },
-
- 'reload' => sub {
- init_videosite(0);
- },
-
- 'mode' => sub {
- cmd_mode(@_);
- },
-
- 'connector' => sub {
- cmd_connector(@_);
- },
-
- 'debug' => sub {
- $debug = 1;
- foreach (@grabbers, @getters) {
- $_->setdebug(1);
- }
- write_irssi('Enabled debugging');
- },
-
- 'nodebug' => sub {
- $debug = 0;
- foreach (@grabbers, @getters) {
- $_->setdebug(0);
- }
- write_irssi('Disabled debugging');
- },
-};
-
-sub write_irssi {
- my @text = @_;
- my $output = $outputstack[0];
-
- my $format = "%%mvideosite: %%n" . shift(@text);
-
- # escape % in parameters from irssi
- s/%/%%/g foreach @text;
-
- if (defined $output) {
- $output->(sprintf($format, @text), MSGLEVEL_CLIENTCRAP);
- } else {
- Irssi::print(sprintf($format, @text));
- }
-
-}
-
-sub write_debug {
- if ($debug) {
- write_irssi(@_);
- }
-}
-
-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', max_redirect => 0, timeout => 5);
- my $i = 10;
-
- OUTER: while (($os ne $s) and ($i > 0)) {
- study($s);
- $os = $s;
- $i--;
-
- foreach my $pattern (@urlshortener) {
- my $p = "https?:\/\/" . $pattern;
-
- write_debug("Matching %s against %s", $p, $s);
- if ($s =~ m|($p)|) {
- my $matched = $1;
- my $res;
-
- write_debug("Found %s", $matched);
- $res = $ua->head($matched);
- if ($res->is_redirect()) {
- my $new = $res->headers()->header("Location");
-
- write_debug("Replacing %s with %s", $matched, $new);
- $s =~ s/$matched/$new/;
- next OUTER;
- } else {
- write_debug("Error resolving %s", $matched);
- }
- }
- }
- }
-
- if ($i == 0) {
- write_debug("Loop terminated by counter");
- }
-
- write_debug("Final string: %s", $s);
-
- return $s;
-}
-
-sub connectorlist {
- my @c;