diff options
Diffstat (limited to 'catalogue.lua')
| -rw-r--r-- | catalogue.lua | 87 |
1 files changed, 28 insertions, 59 deletions
diff --git a/catalogue.lua b/catalogue.lua index cf9d897..7f83e82 100644 --- a/catalogue.lua +++ b/catalogue.lua @@ -14,13 +14,6 @@ function catalogue.new() id = 'root', name = '/', }) - t:add({ - type = 'group', - id = 'favourites', - parent_id = 'root', - name = 'Favourites', - lazy = true, -- prevent infinite recursion on search - }) return t end @@ -50,7 +43,7 @@ end function mt:add(entry) self.data[entry.id] = entry - if entry.type == 'group' then + if entry.type == 'group' and not entry.children_f then entry.children = {} end @@ -76,57 +69,6 @@ function mt:add(entry) return entry end -function mt:load_xc_section(section) - self:add({ - section = section.id, - type = 'group', - group_type = 'category', - id = section.id .. ':category:0', - parent_id = 'root', - name = section.name, - }) - - -- currently, this will not correctly handle subcategories which come - -- before their parent category - for _, v in ipairs(section.categories) do - self:add({ - section = section.id, - type = 'group', - group_type = 'category', - id = section.id .. ':category:' .. v.category_id, - parent_id = section.id .. ':category:' .. v.parent_id, - name = util.strip(v.category_name), - }) - end - - for _, v in ipairs(section.elements) do - local vv = { - section = section.id, - parent_id = section.id .. ':category:' .. - v.category_id, - name = util.strip(v.name), - } - - if section.type == 'series' then - vv.type = 'group' - vv.group_type = 'series' - vv.id = section.id .. ':series:' .. v.series_id - vv.series_id = v.series_id - vv.img_url = util.strip_ne(v.cover) - vv.lazy = true -- avoid API calls on search - else - vv.type = 'stream' - vv.id = section.id .. ':stream:' .. v.stream_id - vv.stream_type = v.stream_type - vv.stream_id = v.stream_id - vv.img_url = util.strip_ne(v.stream_icon) - vv.epg_channel_id = util.strip_ne(v.epg_channel_id) - end - - self:add(vv) - end -end - function mt:path_to_root(entry) local path = {} @@ -153,4 +95,31 @@ function mt:path_from_root(entry) return path end +function mt:group_count(group) + if group.count then + return group.count + end + + if group.count_f then + return group.count_f(group) + end + + local count = 0 + -- only children, not children_f, is considered here. dynamically + -- loaded groups will have a count of 0 unless count or count_f is + -- specified. + for _, v in ipairs(group.children or {}) do + if v.type == 'group' then + count = count + (v.count or mt:group_count(v) or 0) + else + count = count + 1 + end + end + return count +end + +function mt:group_children(group) + return group.children_f and group.children_f(group) or group.children +end + return catalogue |
