diff options
-rw-r--r-- | lib/WWW/FairViewer.pm | 15 |
1 files changed, 12 insertions, 3 deletions
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); |