diff --git a/docs/en/anime.md b/docs/en/anime.md index b319d6669..493b12437 100644 --- a/docs/en/anime.md +++ b/docs/en/anime.md @@ -18,6 +18,12 @@ For more tags, please go to [Search torrent](https://bangumi.moe/search/index) +## Comics Kingdom + +### Archive + + + ## Hanime.tv ### Recently updated diff --git a/docs/en/picture.md b/docs/en/picture.md index 304aaf937..2bf7960d9 100644 --- a/docs/en/picture.md +++ b/docs/en/picture.md @@ -104,10 +104,6 @@ pageClass: routes -## ComicsKingdom Comic Strips - - - ## DailyArt diff --git a/lib/router.js b/lib/router.js index 68b5c928b..153c3b33a 100644 --- a/lib/router.js +++ b/lib/router.js @@ -3681,7 +3681,7 @@ router.get('/mcdonalds/:category', lazyloadRouteHandler('./routes/mcdonalds/news router.get('/gocomics/:name', lazyloadRouteHandler('./routes/gocomics/index')); // Comics Kingdom -router.get('/comicskingdom/:name', lazyloadRouteHandler('./routes/comicskingdom/index')); +// router.get('/comicskingdom/:name', lazyloadRouteHandler('./routes/comicskingdom/index')); // Media Digest router.get('/mediadigest/:range/:category?', lazyloadRouteHandler('./routes/mediadigest/category')); diff --git a/lib/routes/comicskingdom/index.js b/lib/v2/comicskingdom/index.js similarity index 58% rename from lib/routes/comicskingdom/index.js rename to lib/v2/comicskingdom/index.js index 18b333335..eb94afd0e 100644 --- a/lib/routes/comicskingdom/index.js +++ b/lib/v2/comicskingdom/index.js @@ -1,27 +1,25 @@ const got = require('@/utils/got'); const cheerio = require('cheerio'); +const { parseDate } = require('@/utils/parse-date'); +const { art } = require('@/utils/render'); +const path = require('path'); module.exports = async (ctx) => { - const baseURL = 'https://www.comicskingdom.com'; + const baseURL = 'https://comicskingdom.com'; const name = ctx.params.name; const url = `${baseURL}/${name}/archive`; - const response = await got({ - method: 'get', - url, - }); + const { data } = await got(url); - const data = response.data; const $ = cheerio.load(data); // Determine Comic and Author from main page const comic = $('title').text().replace('Comics Kingdom - ', '').trim(); - const author = $('div.author p').text(); + const author = $('.feature-title h2').text(); // Find the links for all non-archived items - const links = $('div.archive-tile[data-is-blocked=false]') - .map((i, el) => $(el).find('a[data-prem="Comic Tile"]').first().attr('href')) - .get() - .map((url) => `${baseURL}${url}`); + const links = $('div.tile') + .toArray() + .map((el) => $(el).find('a').first().attr('href')); if (links.length === 0) { throw `Comic Not Found - ${name}`; @@ -29,17 +27,16 @@ module.exports = async (ctx) => { const items = await Promise.all( links.map((link) => ctx.cache.tryGet(link, async () => { - const detailResponse = await got({ - method: 'get', - url: link, - }); + const detailResponse = await got(link); const content = cheerio.load(detailResponse.data); - const title = content('title').text(); + const title = content('meta[property="og:description"]').attr('content'); const image = content('meta[property="og:image"]').attr('content'); - const description = ``; + const description = art(path.join(__dirname, 'templates/desc.art'), { + image, + }); // Pull the date out of the URL - const pubDate = new Date(link.split('/').slice(-3).join('/')).toUTCString(); + const pubDate = parseDate(link.substring(link.lastIndexOf('/') + 1), 'YYYY-MM-DD'); return { title, @@ -54,8 +51,10 @@ module.exports = async (ctx) => { ); ctx.state.data = { - title: `${comic} - Comics Kingdom`, + title: comic, link: url, + image: $('.feature-logo').attr('src'), item: items, + language: 'en-US', }; }; diff --git a/lib/v2/comicskingdom/maintainer.js b/lib/v2/comicskingdom/maintainer.js new file mode 100644 index 000000000..b057fd96b --- /dev/null +++ b/lib/v2/comicskingdom/maintainer.js @@ -0,0 +1,3 @@ +module.exports = { + '/:name': ['stjohnjohnson'], +}; diff --git a/lib/v2/comicskingdom/radar.js b/lib/v2/comicskingdom/radar.js new file mode 100644 index 000000000..11b9cb4ab --- /dev/null +++ b/lib/v2/comicskingdom/radar.js @@ -0,0 +1,13 @@ +module.exports = { + 'comicskingdom.com': { + _name: 'Comics Kingdom', + '.': [ + { + title: 'Archive', + docs: 'https://docs.rsshub.app/anime.html#comics-kingdom', + source: ['/:name/*', '/:name'], + target: '/comicskingdom/:name', + }, + ], + }, +}; diff --git a/lib/v2/comicskingdom/router.js b/lib/v2/comicskingdom/router.js new file mode 100644 index 000000000..5d645842b --- /dev/null +++ b/lib/v2/comicskingdom/router.js @@ -0,0 +1,3 @@ +module.exports = (router) => { + router.get('/:name', require('./index')); +}; diff --git a/lib/v2/comicskingdom/templates/desc.art b/lib/v2/comicskingdom/templates/desc.art new file mode 100644 index 000000000..81223ed27 --- /dev/null +++ b/lib/v2/comicskingdom/templates/desc.art @@ -0,0 +1 @@ +