aboutsummaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorFactiven <[email protected]>2023-09-25 00:44:40 +0700
committerGitHub <[email protected]>2023-09-25 00:44:40 +0700
commit1a85c2571690ba592ac5183d5eadaf9846fe532b (patch)
tree3f3552c00cd49c0eeab5275275cf5cf5666e5027 /utils
parentDelete .github/workflows/deploy.yml (diff)
downloadmoopa-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.js28
-rw-r--r--utils/combineImages.js26
-rw-r--r--utils/getTimes.js26
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";
+}