@ -174,7 +174,6 @@ function OPDSBrowser:genItemTableFromRoot()
text = server.title ,
content = server.subtitle ,
url = server.url ,
baseurl = server.baseurl ,
} )
end
local added_servers = G_reader_settings : readSetting ( " opds_servers " ) or { }
@ -183,7 +182,6 @@ function OPDSBrowser:genItemTableFromRoot()
text = server.title ,
content = server.subtitle ,
url = server.url ,
baseurl = server.baseurl ,
deletable = true ,
editable = true ,
} )
@ -283,40 +281,18 @@ function OPDSBrowser:getCatalog(feed_url)
end
end
function OPDSBrowser : genItemTableFromURL ( item_url , base_url )
local catalog = self : getCatalog ( item_url or base_url )
return self : genItemTableFromCatalog ( catalog , item_url , base_url )
function OPDSBrowser : genItemTableFromURL ( item_url )
local catalog = self : getCatalog ( item_url )
return self : genItemTableFromCatalog ( catalog , item_url )
end
function OPDSBrowser : genItemTableFromCatalog ( catalog , item_url , base_url )
function OPDSBrowser : genItemTableFromCatalog ( catalog , item_url )
local item_table = { }
if catalog then
local feed = catalog.feed or catalog
local function build_href ( href )
if href : match ( " ^http:// " ) then
return href
elseif href : match ( " ^// " ) then
local parsed = url.parse ( item_url or base_url )
if parsed and parsed.scheme then
return parsed.scheme .. " : " .. href
else
return " http: " .. href
end
elseif base_url then
return base_url .. " / " .. href
elseif item_url then
local parsed = url.parse ( item_url )
-- get rid of query field of base url
parsed.query = nil
-- update item url with href parts(mostly path and query)
for k , v in pairs ( url.parse ( href ) or { } ) do
if k == " path " then
v = " / " .. v
end
parsed [ k ] = v
end
return url.build ( parsed )
end
--DEBUG("building href", item_url, href)
return url.absolute ( item_url , href )
end
local hrefs = { }
if feed.link then
@ -333,7 +309,6 @@ function OPDSBrowser:genItemTableFromCatalog(catalog, item_url, base_url)
if feed.entry then
for i , entry in ipairs ( feed.entry ) do
local item = { }
item.baseurl = base_url
item.acquisitions = { }
if entry.link then
for i , link in ipairs ( entry.link ) do
@ -343,6 +318,7 @@ function OPDSBrowser:genItemTableFromCatalog(catalog, item_url, base_url)
if link.rel and link.rel : match ( self.acquisition_rel ) then
table.insert ( item.acquisitions , {
type = link.type ,
--DEBUG("building acquisition url", link);
href = build_href ( link.href ) ,
} )
end
@ -378,8 +354,8 @@ function OPDSBrowser:genItemTableFromCatalog(catalog, item_url, base_url)
return item_table
end
function OPDSBrowser : updateCatalog ( url , baseurl )
local menu_table = self : genItemTableFromURL ( url , baseurl )
function OPDSBrowser : updateCatalog ( url )
local menu_table = self : genItemTableFromURL ( url )
if # menu_table > 0 then
--DEBUG("menu table", menu_table)
self : swithItemTable ( nil , menu_table )
@ -390,8 +366,8 @@ function OPDSBrowser:updateCatalog(url, baseurl)
end
end
function OPDSBrowser : appendCatalog ( url , baseurl )
local new_table = self : genItemTableFromURL ( url , baseurl )
function OPDSBrowser : appendCatalog ( url )
local new_table = self : genItemTableFromURL ( url )
for i , item in ipairs ( new_table ) do
table.insert ( self.item_table , item )
end
@ -495,9 +471,8 @@ function OPDSBrowser:onMenuSelect(item)
else
table.insert ( self.paths , {
url = item.url ,
baseurl = item.baseurl ,
} )
if not self : updateCatalog ( item.url , item.baseurl ) then
if not self : updateCatalog ( item.url ) then
table.remove ( self.paths )
end
end
@ -610,7 +585,7 @@ function OPDSBrowser:onReturn()
local path = self.paths [ # self.paths ]
if path then
-- return to last path
self : updateCatalog ( path.url , path.baseurl )
self : updateCatalog ( path.url )
else
-- return to root path, we simply reinit opdsbrowser
self : init ( )