From 432a4e9ccfc66df2dfbd835a339e815c83f0793a Mon Sep 17 00:00:00 2001 From: ThaUnknown <6506529+ThaUnknown@users.noreply.github.com> Date: Fri, 7 Jul 2023 11:52:59 +0200 Subject: [PATCH] feat: update rss feeds periodically --- jsconfig.json | 8 + src/renderer/modules/rss.js | 16 +- src/renderer/modules/sections.js | 2 +- src/renderer/views/Home/Cards.svelte | 222 ------------------------- src/renderer/views/Home/Home.svelte | 12 +- src/renderer/views/Home/Section.svelte | 5 +- src/renderer/views/Search.svelte | 2 +- 7 files changed, 34 insertions(+), 233 deletions(-) create mode 100644 jsconfig.json delete mode 100644 src/renderer/views/Home/Cards.svelte diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 0000000..294dabe --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "baseUrl": "./", + "paths": { + "@/*": ["src/renderer/*"], + } + } +} \ No newline at end of file diff --git a/src/renderer/modules/rss.js b/src/renderer/modules/rss.js index dc24b9d..8c1b9ec 100644 --- a/src/renderer/modules/rss.js +++ b/src/renderer/modules/rss.js @@ -74,18 +74,24 @@ class RSSMediaManager { return array[i] } - async _getMediaForRSS (page, perPage, url) { + async getContentChanged (page, perPage, url) { const content = await getRSSContent(getReleasesRSSurl(url)) - const pubDate = content.querySelector('pubDate').textContent * page * perPage - if (this.resultMap[url]?.date === pubDate) return this.resultMap[url].result + const pubDate = new Date(content.querySelector('pubDate').textContent) * page * perPage + if (this.resultMap[url]?.date === pubDate) return false + return { content, pubDate } + } + + async _getMediaForRSS (page, perPage, url) { + const changed = await this.getContentChanged(page, perPage, url) + if (!changed) return this.resultMap[url].result const index = (page - 1) * perPage - const targetPage = [...content.querySelectorAll('item')].slice(index, index + perPage) + const targetPage = [...changed.content.querySelectorAll('item')].slice(index, index + perPage) const items = parseRSSNodes(targetPage) hasNextPage.value = items.length === perPage const result = items.map(item => this.resolveAnimeFromRSSItem(item)) this.resultMap[url] = { - date: pubDate, + date: changed.pubDate, result } return result diff --git a/src/renderer/modules/sections.js b/src/renderer/modules/sections.js index 5867e6f..22a1bc0 100644 --- a/src/renderer/modules/sections.js +++ b/src/renderer/modules/sections.js @@ -10,7 +10,7 @@ export default class Sections { } add (data) { - for (const { title, variables = {}, type, load = Sections.createFallbackLoad(variables, type), preview } of data) { + for (const { title, variables = {}, type, load = Sections.createFallbackLoad(variables, type), preview = writable() } of data) { this.sections.push({ load, title, preview, variables }) } } diff --git a/src/renderer/views/Home/Cards.svelte b/src/renderer/views/Home/Cards.svelte deleted file mode 100644 index 2ef3ac1..0000000 --- a/src/renderer/views/Home/Cards.svelte +++ /dev/null @@ -1,222 +0,0 @@ - - -{#await cards} - {#each Array(length) as _} -
- - {#if card.media.format === 'TV'} - TV Show - {:else if card.media.format} - {card.media.format?.toLowerCase().replace(/_/g, ' ')} - {/if} - - {#if card.media.episodes && card.media.episodes !== 1} - - {#if card.media.mediaListEntry?.status === 'CURRENT' && card.media.mediaListEntry?.progress } - {card.media.mediaListEntry.progress} / {card.media.episodes} Episodes - {:else} - {card.media.episodes} Episodes - {/if} - - {:else if card.media.duration} - {card.media.duration + ' Minutes'} - {/if} - {#if card.media.status} - {card.media.status?.toLowerCase().replace(/_/g, ' ')} - {/if} - {#if card.media.season || card.media.seasonYear} - - {[card.media.season?.toLowerCase(), card.media.seasonYear].filter(s => s).join(' ')} - - {/if} -
-