Compare commits
No commits in common. "e11d941a93f142c44dc9b24157f56fd695bf047e" and "040b427d97126d03bd6a25629b777513132e83b8" have entirely different histories.
e11d941a93
...
040b427d97
@ -1,5 +1,6 @@
|
||||
import { getAllChapters, getLatestChapter } from './mangadex/chapters';
|
||||
import { getManga } from './mangadex/manga';
|
||||
import { getCover } from './mangadex/cover';
|
||||
import { lazyKv } from './db/lazyKv';
|
||||
import { sendWebhook } from './utils/webhook';
|
||||
import { ChapterId } from './types';
|
||||
@ -21,12 +22,12 @@ void (async () => {
|
||||
await getMangaToFetch(config);
|
||||
|
||||
for (const mangaId of uniqueMangaIds) {
|
||||
try {
|
||||
const lastChapterId = await mangaHistory.get<ChapterId>(mangaId);
|
||||
|
||||
const manga = await getManga(mangaId, userAgent);
|
||||
const chapters = await getAllChapters(mangaId, userAgent);
|
||||
const latestChapter = getLatestChapter(chapters);
|
||||
const cover = await getCover(manga, userAgent);
|
||||
const title = getMangaTitle(manga);
|
||||
|
||||
if (lastChapterId !== latestChapter.id) {
|
||||
@ -41,6 +42,7 @@ void (async () => {
|
||||
webhookUrl,
|
||||
manga,
|
||||
latestChapter,
|
||||
cover,
|
||||
}),
|
||||
),
|
||||
);
|
||||
@ -49,10 +51,6 @@ void (async () => {
|
||||
} else {
|
||||
console.log('No Updates found for manga:', title);
|
||||
}
|
||||
} catch (err) {
|
||||
console.error(`Failed to fetch ${mangaId}!`);
|
||||
console.error(err);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
25
src/mangadex/cover.ts
Normal file
25
src/mangadex/cover.ts
Normal file
@ -0,0 +1,25 @@
|
||||
import axios from 'axios';
|
||||
import { Manga } from '../types';
|
||||
|
||||
export const getCover = async (
|
||||
manga: Manga,
|
||||
userAgent: string,
|
||||
): Promise<string> => {
|
||||
const coverId = Object.values(manga.relationships).find(
|
||||
(relationship) => relationship.type === 'cover_art',
|
||||
)?.id;
|
||||
|
||||
if (!coverId) {
|
||||
return '';
|
||||
}
|
||||
|
||||
const response = await axios.get<{
|
||||
data: { attributes: { fileName: string } };
|
||||
}>(`https://api.mangadex.org/cover/${coverId}`, {
|
||||
headers: {
|
||||
'User-Agent': userAgent,
|
||||
},
|
||||
});
|
||||
|
||||
return `https://mangadex.org/covers/${manga.id}/${response.data.data.attributes.fileName}`;
|
||||
};
|
@ -7,21 +7,25 @@ export const sendWebhook = async (args: {
|
||||
webhookUrl: string;
|
||||
manga: Manga;
|
||||
latestChapter: Chapter;
|
||||
cover: string;
|
||||
}) => {
|
||||
const { webhookUrl, manga, latestChapter } = args;
|
||||
const { webhookUrl, manga, latestChapter, cover } = args;
|
||||
const title = getMangaTitle(manga);
|
||||
|
||||
await axios.post(webhookUrl, {
|
||||
username: 'Manga Updates',
|
||||
avatar_url: 'https://mangadex.org/pwa/icons/icon-180.png',
|
||||
avatar_url: 'https://assets.pfy.ch/icons/manga.png',
|
||||
content: `[New chapter for ${title}](https://mangadex.org/chapter/${latestChapter.id})`,
|
||||
embeds: [
|
||||
{
|
||||
url: `https://mangadex.org/chapter/${latestChapter.id}`,
|
||||
image: {
|
||||
url: `https://og.mangadex.org/og-image/chapter/${latestChapter.id}`,
|
||||
author: {
|
||||
icon_url: 'https://assets.pfy.ch/icons/manga.png',
|
||||
name: title,
|
||||
},
|
||||
title: `${title}`,
|
||||
description: ` Ch. ${latestChapter.attributes.chapter} - ${latestChapter.attributes.title} `,
|
||||
thumbnail: {
|
||||
url: cover,
|
||||
},
|
||||
description: `Chapter ${latestChapter.attributes.chapter}: "${latestChapter.attributes.title}"`,
|
||||
},
|
||||
],
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user