diff options
author | trizen <trizen@protonmail.com> | 2020-11-01 01:06:47 +0200 |
---|---|---|
committer | Jesús <heckyel@hyperbola.info> | 2020-11-09 17:37:07 -0500 |
commit | 07c76bfe292cdd7fcb35ba28c011996ff6fc46e2 (patch) | |
tree | 4cdb37066fdde0c7c64fd3a31eb0109ad17142ad /lib | |
parent | 1beb25dc7752554f3f0dc585b98c57ec1cd7e121 (diff) | |
download | fair-viewer-07c76bfe292cdd7fcb35ba28c011996ff6fc46e2.tar.lz fair-viewer-07c76bfe292cdd7fcb35ba28c011996ff6fc46e2.tar.xz fair-viewer-07c76bfe292cdd7fcb35ba28c011996ff6fc46e2.zip |
- When `api_host => "auto"`, ignore invidious instances with "monitor" disabled or with non-success "statusClass".
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 <heckyel@hyperbola.info>
Diffstat (limited to 'lib')
-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); |