aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/WWW/FairViewer.pm4
-rw-r--r--lib/WWW/FairViewer/Channels.pm23
-rw-r--r--lib/WWW/FairViewer/Videos.pm18
3 files changed, 20 insertions, 25 deletions
diff --git a/lib/WWW/FairViewer.pm b/lib/WWW/FairViewer.pm
index 85c5e18..d7be54c 100644
--- a/lib/WWW/FairViewer.pm
+++ b/lib/WWW/FairViewer.pm
@@ -469,6 +469,9 @@ sub lwp_get {
return $self->lwp_get($url, %opt, depth => $opt{depth} + 1);
}
+ # Too many errors. Pick another invidious instance.
+ $self->pick_and_set_random_instance();
+
_warn_reponse_error($response, $url);
return;
}
@@ -681,6 +684,7 @@ sub default_arguments {
sub _make_feed_url {
my ($self, $path, %args) = @_;
+
my $extra_args = $self->default_arguments(%args);
my $url = $self->get_api_url . $path;
diff --git a/lib/WWW/FairViewer/Channels.pm b/lib/WWW/FairViewer/Channels.pm
index b08bfac..c554044 100644
--- a/lib/WWW/FairViewer/Channels.pm
+++ b/lib/WWW/FairViewer/Channels.pm
@@ -33,6 +33,17 @@ sub videos_from_username {
return $self->_get_results($self->_make_feed_url("channels/$channel_id/videos"));
}
+=head2 popular_videos($channel_id)
+
+Get the most popular videos for a given channel ID.
+
+=cut
+
+sub popular_videos {
+ my ($self, $channel_id) = @_;
+ return $self->_get_results($self->_make_feed_url("channels/$channel_id/videos", sort_by => 'popular'));
+}
+
=head2 channels_from_categoryID($category_id)
Return the YouTube channels associated with the specified category.
@@ -131,15 +142,13 @@ Return the channel ID for an username.
sub channel_id_from_username {
my ($self, $username) = @_;
- state $username_lookup = {};
-
- if (exists $username_lookup->{$username}) {
- return $username_lookup->{$username};
+ # A channel's username (if it doesn't include spaces) is also valid in place of ucid.
+ if ($username =~ /\w/ and not $username =~ /\s/) {
+ return $username;
}
- $username_lookup->{$username} = undef;
- my $channel = $self->channels_from_username($username) // return;
- $username_lookup->{$username} = $channel->{results}{items}[0]{id} // return;
+ # TODO: resolve channel name to channel ID
+ return $username;
}
=head2 channel_title_from_id($channel_id)
diff --git a/lib/WWW/FairViewer/Videos.pm b/lib/WWW/FairViewer/Videos.pm
index a0f5e1b..aaaacc7 100644
--- a/lib/WWW/FairViewer/Videos.pm
+++ b/lib/WWW/FairViewer/Videos.pm
@@ -81,24 +81,6 @@ sub trending_videos_from_category {
return $results;
}
-=head2 popular_videos($channel_id)
-
-Get the most popular videos for a given channel ID.
-
-=cut
-
-sub popular_videos {
- my ($self, $id) = @_;
-
- my $results = do {
- local $self->{channelId} = $id;
- local $self->{order} = 'viewCount';
- $self->search_videos("");
- };
-
- return $results;
-}
-
=head2 my_likes()
Get the videos liked by the authenticated user.