diff --git a/src/invidious.cr b/src/invidious.cr index e36f28f12..9e12de40a 100644 --- a/src/invidious.cr +++ b/src/invidious.cr @@ -425,7 +425,7 @@ get "/search" do |env| page ||= 1 search_params = build_search_params(sort_by: "relevance", content_type: "video") - videos = search(query, page, search_params) + count, videos = search(query, page, search_params).as(Tuple) templated "search" end @@ -2365,7 +2365,7 @@ get "/api/v1/search" do |env| response = JSON.build do |json| json.array do - search_results = search(query, page, search_params) + count, search_results = search(query, page, search_params).as(Tuple) search_results.each do |video| json.object do json.field "title", video.title diff --git a/src/invidious/jobs.cr b/src/invidious/jobs.cr index a85244a39..1bc550ade 100644 --- a/src/invidious/jobs.cr +++ b/src/invidious/jobs.cr @@ -2,13 +2,13 @@ def crawl_videos(db) ids = Deque(String).new random = Random.new - search(random.base64(3)).each do |video| + search(random.base64(3)).as(Tuple)[1].each do |video| ids << video.id end loop do if ids.empty? - search(random.base64(3)).each do |video| + search(random.base64(3)).as(Tuple)[1].each do |video| ids << video.id end end diff --git a/src/invidious/search.cr b/src/invidious/search.cr index 8ed184379..04db3098a 100644 --- a/src/invidious/search.cr +++ b/src/invidious/search.cr @@ -23,7 +23,7 @@ def search(query, page = 1, search_params = build_search_params(content_type: "v nodeset = html.xpath_nodes(%q(//ol[@class="item-section"]/li)) videos = extract_videos(nodeset) - return videos + return {nodeset.size, videos} end def build_search_params(sort_by = "relevance", date : String = "", content_type : String = "", duration : String = "", features : Array(String) = [] of String) diff --git a/src/invidious/views/search.ecr b/src/invidious/views/search.ecr index 192db3646..85b6e416b 100644 --- a/src/invidious/views/search.ecr +++ b/src/invidious/views/search.ecr @@ -18,6 +18,8 @@
+ <% if count == 20 %> Next page + <% end %>