diff --git a/frontend/ui/widget/opdsbrowser.lua b/frontend/ui/widget/opdsbrowser.lua index a87a463e9..ae5c83dd6 100644 --- a/frontend/ui/widget/opdsbrowser.lua +++ b/frontend/ui/widget/opdsbrowser.lua @@ -474,6 +474,8 @@ end function OPDSBrowser:appendCatalog(item_table_url) local new_table = self:genItemTableFromURL(item_table_url) + if #new_table == 0 then return false end + for _, item in ipairs(new_table) do table.insert(self.item_table, item) end @@ -728,11 +730,20 @@ end function OPDSBrowser:onNext() logger.dbg("fetch next page catalog") - local hrefs = self.item_table.hrefs + -- self.page_num comes from menu.lua local page_num = self.page_num - while page_num == self.page_num and hrefs and hrefs.next do - self:appendCatalog(hrefs.next) + -- fetch more entries until we fill out one page or reach the end + while page_num == self.page_num do + local hrefs = self.item_table.hrefs + if hrefs and hrefs.next then + if not self:appendCatalog(hrefs.next) then + break -- reach end of paging + end + else + break + end end + return true end