From 07c76bfe292cdd7fcb35ba28c011996ff6fc46e2 Mon Sep 17 00:00:00 2001 From: trizen Date: Sun, 1 Nov 2020 01:06:47 +0200 Subject: - When `api_host => "auto"`, ignore invidious instances with "monitor" disabled or with non-success "statusClass". MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Only when there is no good instance to choose, we then also consider selecting from the instances with "monitor" disabled. Signed-off-by: Jesús --- lib/WWW/FairViewer.pm | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'lib/WWW/FairViewer.pm') diff --git a/lib/WWW/FairViewer.pm b/lib/WWW/FairViewer.pm index 31ed311..3546fb4 100644 --- a/lib/WWW/FairViewer.pm +++ b/lib/WWW/FairViewer.pm @@ -548,7 +548,7 @@ sub get_invidious_instances { } sub select_good_invidious_instances { - my ($self) = @_; + my ($self, %args) = @_; state $instances = $self->get_invidious_instances; @@ -561,13 +561,13 @@ sub select_good_invidious_instances { 'vid.mint.lgbt' => 1, 'invidious.ggc-project.de' => 1, 'invidious.toot.koeln' => 1, - 'invidious.kavin.rocks' => 1, + 'invidious.kavin.rocks' => 0, 'invidious.snopyta.org' => 0, ); my @candidates = grep { not $ignored{$_->[0]} } - grep { ref($_->[1]{monitor}) eq 'HASH' ? ($_->[1]{monitor}{statusClass} eq 'success') : 1 } + grep { ref($_->[1]{monitor}) eq 'HASH' ? ($_->[1]{monitor}{statusClass} eq 'success') : $args{lax} } grep { lc($_->[1]{type} // '') eq 'https' } @$instances; if ($self->get_debug) { @@ -584,6 +584,11 @@ sub select_good_invidious_instances { sub pick_random_instance { my ($self) = @_; my @candidates = $self->select_good_invidious_instances(); + + if (not @candidates) { + @candidates = $self->select_good_invidious_instances(lax => 1); + } + $candidates[rand @candidates]; } @@ -676,6 +681,10 @@ sub _extract_from_invidious { my @instances = $self->select_good_invidious_instances(); + if (not @instances) { + @instances = $self->select_good_invidious_instances(lax => 1); + } + if (@instances) { require List::Util; @instances = List::Util::shuffle(map { $_->[0] } @instances); -- cgit v1.2.3