diff options
| author | Factiven <[email protected]> | 2023-09-25 00:44:40 +0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-09-25 00:44:40 +0700 |
| commit | 1a85c2571690ba592ac5183d5eadaf9846fe532b (patch) | |
| tree | 3f3552c00cd49c0eeab5275275cf5cf5666e5027 /utils | |
| parent | Delete .github/workflows/deploy.yml (diff) | |
| download | moopa-4.1.0.tar.xz moopa-4.1.0.zip | |
Update v4.1.0 (#79)v4.1.0
* Update v4.1.0
* Update pages/_app.js
Diffstat (limited to 'utils')
| -rw-r--r-- | utils/appendMetaToEpisodes.js | 28 | ||||
| -rw-r--r-- | utils/combineImages.js | 26 | ||||
| -rw-r--r-- | utils/getTimes.js | 26 |
3 files changed, 80 insertions, 0 deletions
diff --git a/utils/appendMetaToEpisodes.js b/utils/appendMetaToEpisodes.js new file mode 100644 index 0000000..eedcbf5 --- /dev/null +++ b/utils/appendMetaToEpisodes.js @@ -0,0 +1,28 @@ +async function appendMetaToEpisodes(episodesData, images) { + // Create a dictionary for faster lookup of images based on episode number + const episodeImages = {}; + images.forEach((image) => { + episodeImages[image.episode] = image; + }); + + // Iterate through each provider's episodes data + for (const providerEpisodes of episodesData) { + // Iterate through each episode in the provider's episodes data + for (const episode of providerEpisodes.episodes) { + // Get the episode number + const episodeNumber = episode.number; + + // Check if there is an image available for this episode number + if (episodeImages[episodeNumber]) { + // Append the image URL to the episode data + episode.img = episodeImages[episodeNumber].img; + episode.title = episodeImages[episodeNumber].title; + episode.description = episodeImages[episodeNumber].description; + } + } + } + + return episodesData; +} + +export default appendMetaToEpisodes; diff --git a/utils/combineImages.js b/utils/combineImages.js new file mode 100644 index 0000000..abf34ed --- /dev/null +++ b/utils/combineImages.js @@ -0,0 +1,26 @@ +async function appendImagesToEpisodes(episodesData, images) { + // Create a dictionary for faster lookup of images based on episode number + const episodeImages = {}; + images.forEach((image) => { + episodeImages[image.episode] = image.img; + }); + + // Iterate through each provider's episodes data + for (const providerEpisodes of episodesData) { + // Iterate through each episode in the provider's episodes data + for (const episode of providerEpisodes.episodes) { + // Get the episode number + const episodeNumber = episode.number; + + // Check if there is an image available for this episode number + if (episodeImages[episodeNumber]) { + // Append the image URL to the episode data + episode.img = episodeImages[episodeNumber]; + } + } + } + + return episodesData; +} + +export default appendImagesToEpisodes; diff --git a/utils/getTimes.js b/utils/getTimes.js index 8bbc2ee..d06f797 100644 --- a/utils/getTimes.js +++ b/utils/getTimes.js @@ -106,3 +106,29 @@ export const timeStamptoHour = (timestamp) => { return `${status} at ${formattedTime}`; }; + +export function unixTimestampToRelativeTime(unixTimestamp) { + const now = Math.floor(Date.now() / 1000); // Current Unix timestamp in seconds + const secondsAgo = now - unixTimestamp; + + const intervals = [ + { label: "year", seconds: 31536000 }, + { label: "month", seconds: 2592000 }, + { label: "week", seconds: 604800 }, + { label: "day", seconds: 86400 }, + { label: "hour", seconds: 3600 }, + { label: "minute", seconds: 60 }, + { label: "second", seconds: 1 }, + ]; + + for (const interval of intervals) { + const count = Math.floor(secondsAgo / interval.seconds); + if (count >= 1) { + return count === 1 + ? ` ${count} ${interval.label} ago` + : ` ${count} ${interval.label}s ago`; + } + } + + return "just now"; +} |