diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-news/news.js b/zefie_wtvp_minisrv/ServiceVault/wtv-news/news.js index 96a08313..7da36c87 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-news/news.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-news/news.js @@ -37,9 +37,16 @@ function isToday (chkdate) { async function WebTVListGroup(group) { var page_limit_default = 100; wtvnews.connectUsenet().then(() => { - wtvnews.selectGroup(group).then(() => { + wtvnews.selectGroup(group).then((response) => { var limit_per_page = (request_headers.query.limit) ? parseInt(request_headers.query.limit) : page_limit_default; var page = (request_headers.query.chunk) ? parseInt(request_headers.query.chunk) : 0; + console.log(response); + var page_start = (limit_per_page * page) + 1; + var page_end = (page + 1) * limit_per_page; + if (page_end > response.group.high) { + page_end = response.group.high; + limit_per_page = (page_end - (limit_per_page / (page + 1))) + limit_per_page; + } wtvnews.listGroup(group, page, limit_per_page).then((response) => { if (response.code == 211) { @@ -47,7 +54,6 @@ async function WebTVListGroup(group) { NGArticles = response.group.articleNumbers; page_start = (limit_per_page * page) + 1; page_end = (page + 1) * limit_per_page; - if (page_end > NGCount) page_end = NGCount; wtvnews.getHeaderObj(NGArticles).then((messages) => { messages = wtvnews.sortByResponse(messages); wtvnews.quitUsenet(); @@ -654,7 +660,6 @@ ${wtvshared.htmlEntitize(message_body, true)} function WebTVSearchGroups(search) { wtvnews.connectUsenet().then(() => { wtvnews.listGroups(search).then((response) => { - console.log('WebTVSearchGroups listGroups response', response) wtvnews.quitUsenet(); headers = `200 OK Content-type: text/html diff --git a/zefie_wtvp_minisrv/includes/WTVNewsServer.js b/zefie_wtvp_minisrv/includes/WTVNewsServer.js index ef6f9986..78a9f78a 100644 --- a/zefie_wtvp_minisrv/includes/WTVNewsServer.js +++ b/zefie_wtvp_minisrv/includes/WTVNewsServer.js @@ -315,6 +315,7 @@ class WTVNewsServer { var meta = this.getMetadata(group); var out = { ...meta } } + if (meta.min_index == 0) force_update = true; if (this.featuredGroups) { Object.keys(this.featuredGroups).forEach((k) => { if (group == this.featuredGroups[k].group) { @@ -325,13 +326,15 @@ class WTVNewsServer { } try { if (force_update || this.doesMetaNeedRefreshing(meta)) { + out.total = 0; this.fs.readdirSync(g).forEach(file => { if (file == "meta.json") return; var articleNumber = parseInt(file.split('.')[0]); - if (out.min_index == null) out.min_index = articleNumber; + if (out.min_index == 0) out.min_index = articleNumber; else if (articleNumber < out.min_index) out.min_index = articleNumber; + else if (articleNumber > out.max_index) out.max_index = articleNumber; + - if (articleNumber > out.max_index) out.max_index = articleNumber; out.total++; }); if (initial_update) { @@ -438,7 +441,6 @@ class WTVNewsServer { var articles = []; try { var meta = this.getMetadata(group); - if (force_update || this.doesMetaNeedRefreshing(meta)) { this.fs.readdirSync(g).forEach(file => { if (file == "meta.json") return; var articleNumber = parseInt(file.split('.')[0]); @@ -451,6 +453,7 @@ class WTVNewsServer { articles.push(this.getArticle(group, articleNumber)); out.total++; }); + if (force_update || this.doesMetaNeedRefreshing(meta)) { meta = { ...meta, ...out } meta.last_scan = Math.floor(Date.now() / 1000); this.saveMetadata(group, meta);