From fe6117a4210787f2fe8b3fc737cbfb657b25e129 Mon Sep 17 00:00:00 2001 From: DIYgod Date: Thu, 21 Dec 2023 02:46:58 +0800 Subject: [PATCH] feat: remove notOperational routes - picture --- lib/router.js | 39 ----- lib/routes/babehub/index.js | 30 ---- lib/routes/babehub/search.js | 15 -- lib/routes/babehub/utils.js | 71 ---------- lib/routes/baidu/doodles.js | 27 ---- lib/routes/dilbert/strip.js | 54 ------- lib/routes/elitebabes/index.js | 30 ---- lib/routes/elitebabes/search.js | 15 -- lib/routes/elitebabes/utils.js | 88 ------------ lib/routes/elitebabes/videos.js | 26 ---- lib/routes/girlimg/album.js | 57 -------- lib/routes/gracg/user.js | 65 --------- lib/routes/hentai-cosplays/hentai-cosplays.js | 11 -- lib/routes/jdlingyu/index.js | 45 ------ lib/routes/loveheaven/update.js | 45 ------ lib/routes/mzitu/category.js | 26 ---- lib/routes/mzitu/home.js | 32 ----- lib/routes/mzitu/post.js | 41 ------ lib/routes/mzitu/tag.js | 25 ---- lib/routes/mzitu/tags.js | 23 --- lib/routes/mzitu/util.js | 51 ------- lib/routes/zhutix/latest.js | 41 ------ lib/v2/35photo/actual.js | 7 - lib/v2/35photo/author.js | 9 -- lib/v2/35photo/genre.js | 10 -- lib/v2/35photo/interesting.js | 7 - lib/v2/35photo/maintainer.js | 8 -- lib/v2/35photo/map.js | 7 - lib/v2/35photo/new.js | 7 - lib/v2/35photo/radar.js | 43 ------ lib/v2/35photo/router.js | 8 -- lib/v2/35photo/utils.js | 57 -------- lib/v2/dbmv/index.js | 64 --------- lib/v2/dbmv/maintainer.js | 3 - lib/v2/dbmv/radar.js | 13 -- lib/v2/dbmv/router.js | 3 - lib/v2/google/router.js | 2 - lib/v2/google/sitesRecentChanges.js | 51 ------- lib/v2/meituclub/latest.js | 41 ------ lib/v2/meituclub/maintainer.js | 3 - lib/v2/meituclub/radar.js | 13 -- lib/v2/meituclub/router.js | 3 - lib/v2/meituclub/templates/description.art | 1 - website/docs/routes/picture.mdx | 134 +----------------- 44 files changed, 1 insertion(+), 1350 deletions(-) delete mode 100644 lib/routes/babehub/index.js delete mode 100644 lib/routes/babehub/search.js delete mode 100644 lib/routes/babehub/utils.js delete mode 100644 lib/routes/baidu/doodles.js delete mode 100644 lib/routes/dilbert/strip.js delete mode 100644 lib/routes/elitebabes/index.js delete mode 100644 lib/routes/elitebabes/search.js delete mode 100644 lib/routes/elitebabes/utils.js delete mode 100644 lib/routes/elitebabes/videos.js delete mode 100644 lib/routes/girlimg/album.js delete mode 100644 lib/routes/gracg/user.js delete mode 100644 lib/routes/hentai-cosplays/hentai-cosplays.js delete mode 100644 lib/routes/jdlingyu/index.js delete mode 100644 lib/routes/loveheaven/update.js delete mode 100644 lib/routes/mzitu/category.js delete mode 100644 lib/routes/mzitu/home.js delete mode 100644 lib/routes/mzitu/post.js delete mode 100644 lib/routes/mzitu/tag.js delete mode 100644 lib/routes/mzitu/tags.js delete mode 100644 lib/routes/mzitu/util.js delete mode 100644 lib/routes/zhutix/latest.js delete mode 100644 lib/v2/35photo/actual.js delete mode 100644 lib/v2/35photo/author.js delete mode 100644 lib/v2/35photo/genre.js delete mode 100644 lib/v2/35photo/interesting.js delete mode 100644 lib/v2/35photo/maintainer.js delete mode 100644 lib/v2/35photo/map.js delete mode 100644 lib/v2/35photo/new.js delete mode 100644 lib/v2/35photo/radar.js delete mode 100644 lib/v2/35photo/router.js delete mode 100644 lib/v2/35photo/utils.js delete mode 100644 lib/v2/dbmv/index.js delete mode 100644 lib/v2/dbmv/maintainer.js delete mode 100644 lib/v2/dbmv/radar.js delete mode 100644 lib/v2/dbmv/router.js delete mode 100644 lib/v2/google/sitesRecentChanges.js delete mode 100644 lib/v2/meituclub/latest.js delete mode 100644 lib/v2/meituclub/maintainer.js delete mode 100644 lib/v2/meituclub/radar.js delete mode 100644 lib/v2/meituclub/router.js delete mode 100644 lib/v2/meituclub/templates/description.art diff --git a/lib/router.js b/lib/router.js index a633fc396..0eb14c176 100644 --- a/lib/router.js +++ b/lib/router.js @@ -30,13 +30,6 @@ router.get('/ziroom/room/:city/:iswhole/:room/:keyword', lazyloadRouteHandler('. // router.get('/jianshu/collection/:id', lazyloadRouteHandler('./routes/jianshu/collection')); // router.get('/jianshu/user/:id', lazyloadRouteHandler('./routes/jianshu/user')); -// 妹子图 -router.get('/mzitu/home/:type?', lazyloadRouteHandler('./routes/mzitu/home')); -router.get('/mzitu/tags', lazyloadRouteHandler('./routes/mzitu/tags')); -router.get('/mzitu/category/:category', lazyloadRouteHandler('./routes/mzitu/category')); -router.get('/mzitu/post/:id', lazyloadRouteHandler('./routes/mzitu/post')); -router.get('/mzitu/tag/:tag', lazyloadRouteHandler('./routes/mzitu/tag')); - // pixiv-fanbox router.get('/fanbox/:user?', lazyloadRouteHandler('./routes/fanbox/main')); @@ -437,10 +430,6 @@ router.get('/autotrader/:query', lazyloadRouteHandler('./routes/autotrader')); // 极客公园 router.get('/geekpark/breakingnews', lazyloadRouteHandler('./routes/geekpark/breakingnews')); -// 百度 -router.get('/baidu/doodles', lazyloadRouteHandler('./routes/baidu/doodles')); -// router.get('/baidu/topwords/:boardId?', lazyloadRouteHandler('./routes/baidu/topwords')); - // 搜狗 router.get('/sogou/doodles', lazyloadRouteHandler('./routes/sogou/doodles')); @@ -834,9 +823,6 @@ router.get('/gov/veterans/:type', lazyloadRouteHandler('./routes/gov/veterans/ch // 河北省退伍士兵信息 router.get('/gov/veterans/hebei/:type', lazyloadRouteHandler('./routes/gov/veterans/hebei')); -// Dilbert Comic Strip -router.get('/dilbert/strip', lazyloadRouteHandler('./routes/dilbert/strip')); - // 怪物猎人 router.get('/monsterhunter/update', lazyloadRouteHandler('./routes/mhw/update')); router.get('/mhw/update', lazyloadRouteHandler('./routes/mhw/update')); @@ -901,9 +887,6 @@ router.get('/cninfo/announcement/:column/:code/:orgId/:category?/:search?', lazy router.get('/nosetime/:id/:type/:sort?', lazyloadRouteHandler('./routes/nosetime/comment')); router.get('/nosetime/home', lazyloadRouteHandler('./routes/nosetime/home')); -// 涂鸦王国 -router.get('/gracg/:user/:love?', lazyloadRouteHandler('./routes/gracg/user')); - // 大侠阿木 router.get('/daxiaamu/home', lazyloadRouteHandler('./routes/daxiaamu/home')); @@ -1301,9 +1284,6 @@ router.get('/ku/:name?', lazyloadRouteHandler('./routes/ku/index')); // 我有一片芝麻地 router.get('/blogs/hedwig/:type', lazyloadRouteHandler('./routes/blogs/hedwig')); -// LoveHeaven -router.get('/loveheaven/update/:slug', lazyloadRouteHandler('./routes/loveheaven/update')); - // 拉勾 router.get('/lagou/jobs/:position/:city', lazyloadRouteHandler('./routes/lagou/jobs')); @@ -1347,9 +1327,6 @@ router.get('/checkra1n/releases', lazyloadRouteHandler('./routes/checkra1n/relea // 四川省科学技术厅 router.get('/sckjt/news/:type?', lazyloadRouteHandler('./routes/sckjt/news')); -// 绝对领域 -router.get('/jdlingyu/:type', lazyloadRouteHandler('./routes/jdlingyu/index')); - // 湖北工业大学 router.get('/hbut/news/:type', lazyloadRouteHandler('./routes/universities/hbut/news')); router.get('/hbut/cs/:type', lazyloadRouteHandler('./routes/universities/hbut/cs')); @@ -1364,9 +1341,6 @@ router.get('/acwifi', lazyloadRouteHandler('./routes/acwifi')); router.get('/iyouport/article', lazyloadRouteHandler('./routes/iyouport')); router.get('/iyouport/:category?', lazyloadRouteHandler('./routes/iyouport')); -// girlimg -router.get('/girlimg/album/:tag?/:mode?', lazyloadRouteHandler('./routes/girlimg/album')); - // etoland router.get('/etoland/:bo_table', lazyloadRouteHandler('./routes/etoland/board')); @@ -1484,9 +1458,6 @@ router.get('/monotype/article', lazyloadRouteHandler('./routes/monotype/article' // Stork router.get('/stork/keyword/:trackID/:displayKey', lazyloadRouteHandler('./routes/stork/keyword')); -// 致美化 -router.get('/zhutix/latest', lazyloadRouteHandler('./routes/zhutix/latest')); - // arXiv router.get('/arxiv/:query', lazyloadRouteHandler('./routes/arxiv/query')); @@ -1532,7 +1503,6 @@ router.get('/gov/caict/caictgd', lazyloadRouteHandler('./routes/gov/caict/caictg router.get('/cs/news/:caty', lazyloadRouteHandler('./routes/cs/news')); // hentai-cosplays -router.get('/hentai-cosplays/:type?/:name?', lazyloadRouteHandler('./routes/hentai-cosplays/hentai-cosplays')); router.get('/porn-images-xxx/:type?/:name?', lazyloadRouteHandler('./routes/hentai-cosplays/porn-images-xxx')); // dcinside @@ -2008,10 +1978,6 @@ router.get('/tianyancha/hot', lazyloadRouteHandler('./routes/tianyancha/hot')); // King Arthur router.get('/kingarthur/:type', lazyloadRouteHandler('./routes/kingarthur/index')); -// BabeHub -router.get('/babehub/search/:keyword?', lazyloadRouteHandler('./routes/babehub/search')); -router.get('/babehub/:category?', lazyloadRouteHandler('./routes/babehub/index')); - // 深圳新闻网 router.get('/sznews/press', lazyloadRouteHandler('./routes/sznews/press')); router.get('/sznews/ranking', lazyloadRouteHandler('./routes/sznews/ranking')); @@ -2060,11 +2026,6 @@ router.get('/furaffinity/journal_comments/:id', lazyloadRouteHandler('./routes/f // 博客来 router.get('/bookscomtw/newbooks/:category', lazyloadRouteHandler('./routes/bookscomtw/newbooks')); -// Elite Babes -router.get('/elitebabes/videos/:sort?', lazyloadRouteHandler('./routes/elitebabes/videos')); -router.get('/elitebabes/search/:keyword?', lazyloadRouteHandler('./routes/elitebabes/search')); -router.get('/elitebabes/:category?', lazyloadRouteHandler('./routes/elitebabes/index')); - // Trakt.tv router.get('/trakt/collection/:username/:type?', lazyloadRouteHandler('./routes/trakt/collection')); diff --git a/lib/routes/babehub/index.js b/lib/routes/babehub/index.js deleted file mode 100644 index d145a3f44..000000000 --- a/lib/routes/babehub/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const utils = require('./utils'); - -const categories = { - 'most-viewed': { - url: 'most-viewed', - title: 'Most Viewed', - }, - picture: { - url: 'picture-archive', - title: 'Pictures', - }, - video: { - url: 'video-archive', - title: 'Videos', - }, -}; - -module.exports = async (ctx) => { - const category = ctx.params.category || ''; - const title = `${category ? `${categories[category].title} - ` : ''}BabeHub`; - - const currentUrl = `${utils.rootUrl}/${category ? categories[category].url : ''}`; - - ctx.state.data = { - title, - link: currentUrl, - itunes_author: title, - item: await utils.fetch(ctx.cache, currentUrl), - }; -}; diff --git a/lib/routes/babehub/search.js b/lib/routes/babehub/search.js deleted file mode 100644 index 335c30c5f..000000000 --- a/lib/routes/babehub/search.js +++ /dev/null @@ -1,15 +0,0 @@ -const utils = require('./utils'); - -module.exports = async (ctx) => { - const keyword = ctx.params.keyword || ''; - const title = `${keyword ? `Search ${keyword} - ` : ''}BabeHub`; - - const currentUrl = `${utils.rootUrl}/${keyword ? `?s=${keyword}` : ''}`; - - ctx.state.data = { - title, - link: currentUrl, - itunes_author: title, - item: await utils.fetch(ctx.cache, currentUrl), - }; -}; diff --git a/lib/routes/babehub/utils.js b/lib/routes/babehub/utils.js deleted file mode 100644 index 1dae3f9fa..000000000 --- a/lib/routes/babehub/utils.js +++ /dev/null @@ -1,71 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -const rootUrl = 'https://www.babehub.com'; - -const fetch = async (cache, currentUrl) => { - const response = await got({ - method: 'get', - url: currentUrl, - }); - - const $ = cheerio.load(response.data); - - const list = $('.gallery-d li') - .slice(0, 50) - .map((_, item) => { - item = $(item).children('a').eq(0); - const image = item.find('img').eq(0); - const date = item.find('.date').text(); - - return { - link: item.attr('href'), - title: item.attr('title') || image.attr('alt'), - itunes_item_image: image.attr('src'), - pubDate: (date ? new Date(date.replace(/st|nd|rd|th/g, '')) : new Date()).toUTCString(), - }; - }) - .get(); - - const items = await Promise.all( - list.map((item) => - cache.tryGet(item.link, async () => { - try { - const detailResponse = await got({ - method: 'get', - url: item.link, - }); - const content = cheerio.load(detailResponse.data); - - const video = content('video'); - - item.description = ''; - - if (video.length > 0) { - const poster = detailResponse.data.match(/posterImage: "(.*)",/); - item.itunes_item_image = (poster ? poster[1] : video.attr('poster')) || item.itunes_item_image; - - item.enclosure_type = 'video/mp4'; - item.enclosure_url = video.children('source').attr('src'); - item.description = ``; - } - - content('.gallery-e li a').each(function () { - item.description += ``; - }); - - return item; - } catch (e) { - return Promise.resolve(''); - } - }) - ) - ); - - return items; -}; - -module.exports = { - rootUrl, - fetch, -}; diff --git a/lib/routes/baidu/doodles.js b/lib/routes/baidu/doodles.js deleted file mode 100644 index 38be4f9a5..000000000 --- a/lib/routes/baidu/doodles.js +++ /dev/null @@ -1,27 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -module.exports = async (ctx) => { - const response = await got({ - method: 'get', - url: 'http://logo.baidu.com/main/show_data/0/0/0/0', - }); - - const $ = cheerio.load(response.data); - - ctx.state.data = { - title: '百度趣画', - link: 'http://logo.baidu.com/', - item: $('.col') - .map((index, item) => { - item = $(item); - - return { - title: `${item.find('.title').text()}-${item.find('.date').text()}`, - description: ``, - link: item.find('.more a').attr('href'), - }; - }) - .get(), - }; -}; diff --git a/lib/routes/dilbert/strip.js b/lib/routes/dilbert/strip.js deleted file mode 100644 index e4cae5bcb..000000000 --- a/lib/routes/dilbert/strip.js +++ /dev/null @@ -1,54 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); -const Parser = require('rss-parser'); -const parser = new Parser(); - -async function load(link, id) { - const response = await got.get(link); - const $ = cheerio.load(response.data); - - const context = $('.comic-item-container > .meta-info-container'); - const img = context.find('img.img-comic'); - const transcript = context.find('.comic-transcript p').html(); - - const title = img.attr('alt').replace('Dilbert by Scott Adams', id); - const src = img.attr('src'); - - let description = ``; - if (transcript) { - description += `

${transcript}

`; - } - - return { - title, - description, - }; -} - -module.exports = async (ctx) => { - const title = 'Dilbert Daily Strip'; - const feed_url = 'http://feed.dilbert.com/dilbert/daily_strip'; - - const feed = await parser.parseURL(feed_url); - const items = await Promise.all( - feed.items.slice(0, 7).map(async (item) => { - const link = item.link; - - const single = { - pubDate: item.pubDate, - link, - }; - - const other = await ctx.cache.tryGet(link, () => load(link, item.id)); - - return Promise.resolve(Object.assign({}, single, other)); - }) - ); - - ctx.state.data = { - title, - link: 'https://dilbert.com', - description: title, - item: items, - }; -}; diff --git a/lib/routes/elitebabes/index.js b/lib/routes/elitebabes/index.js deleted file mode 100644 index 83118a3dd..000000000 --- a/lib/routes/elitebabes/index.js +++ /dev/null @@ -1,30 +0,0 @@ -const utils = require('./utils'); - -const categories = { - hot: { - url: 'trending', - title: 'Hot', - }, - popular: { - url: 'most-viewed', - title: 'Popular', - }, - recent: { - url: 'latest-updates', - title: 'Recent', - }, -}; - -module.exports = async (ctx) => { - const category = ctx.params.category || ''; - const title = `${category ? `${categories[category].title} - ` : ''}Elite Babes`; - - const currentUrl = `${utils.rootUrl}/${category ? categories[category].url : ''}`; - - ctx.state.data = { - title, - link: currentUrl, - itunes_author: title, - item: await utils.fetch(ctx.cache, currentUrl), - }; -}; diff --git a/lib/routes/elitebabes/search.js b/lib/routes/elitebabes/search.js deleted file mode 100644 index 7f782b795..000000000 --- a/lib/routes/elitebabes/search.js +++ /dev/null @@ -1,15 +0,0 @@ -const utils = require('./utils'); - -module.exports = async (ctx) => { - const keyword = ctx.params.keyword || ''; - const title = `${keyword ? `Search ${keyword} - ` : ''}Elite Babes`; - - const currentUrl = `${utils.rootUrl}/${keyword ? `?s=${keyword}` : ''}`; - - ctx.state.data = { - title, - link: currentUrl, - itunes_author: title, - item: await utils.fetch(ctx.cache, currentUrl), - }; -}; diff --git a/lib/routes/elitebabes/utils.js b/lib/routes/elitebabes/utils.js deleted file mode 100644 index 125f22f51..000000000 --- a/lib/routes/elitebabes/utils.js +++ /dev/null @@ -1,88 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -const rootUrl = 'https://www.elitebabes.com'; - -const fetch = async (cache, currentUrl) => { - const response = await got({ - method: 'get', - url: currentUrl, - }); - - const $ = cheerio.load(response.data); - - $('.clip-a, .displayblock').remove(); - - const list = $('.gallery-a li') - .slice(0, 50) - .map((_, item) => { - item = $(item).children('a').eq(0); - const image = item.find('img').eq(0); - - return { - link: item.attr('href'), - title: item.attr('title') || image.attr('alt'), - itunes_item_image: image.attr('src').replace('_200', '_400'), - pubDate: (item.next()[0] ? new Date(item.next().text()) : new Date()).toUTCString(), - }; - }) - .get(); - - const items = await Promise.all( - list.map((item) => - cache.tryGet(item.link, async () => { - try { - const detailResponse = await got({ - method: 'get', - url: item.link, - }); - const content = cheerio.load(detailResponse.data); - - content('input, .link-btn, .m-pagination').remove(); - content('.mobile-hide, .wide-hide').remove(); - - if (item.link.indexOf(`${rootUrl}/model/`) === 0) { - item.author = content('.fn').text(); - item.description = content('#content').html(); - return item; - } - - const authors = []; - const video = content('video'); - - item.description = ''; - - if (video.length > 0) { - const poster = detailResponse.data.match(/posterImage: "(.*)",/); - item.itunes_item_image = (poster ? poster[1] : video.attr('poster')) || item.itunes_item_image; - - item.enclosure_type = 'video/mp4'; - item.enclosure_url = video.children('source').attr('src'); - item.description = ``; - } - - content('.link-btn h2 a').each(function () { - authors.push(content(this).text()); - }); - - item.author = authors.join(', '); - - content('.list-justified2 li a').each(function () { - item.description += ``; - }); - - return item; - } catch (e) { - return Promise.resolve(''); - } - }) - ) - ); - - return items; -}; - -module.exports = { - rootUrl, - fetch, -}; diff --git a/lib/routes/elitebabes/videos.js b/lib/routes/elitebabes/videos.js deleted file mode 100644 index a5d14d59d..000000000 --- a/lib/routes/elitebabes/videos.js +++ /dev/null @@ -1,26 +0,0 @@ -const utils = require('./utils'); - -const sorts = { - popular: { - url: '', - title: 'Popular', - }, - recent: { - url: 'latest', - title: 'Recent', - }, -}; - -module.exports = async (ctx) => { - const sort = ctx.params.sort || ''; - const title = `${sort ? sorts[sort].title : 'Popular'} videos - Elite Babes`; - - const currentUrl = `${utils.rootUrl}/videos${sort ? `?sort=${sorts[sort].url}` : ''}`; - - ctx.state.data = { - title, - link: currentUrl, - itunes_author: title, - item: await utils.fetch(ctx.cache, currentUrl), - }; -}; diff --git a/lib/routes/girlimg/album.js b/lib/routes/girlimg/album.js deleted file mode 100644 index 8997135b5..000000000 --- a/lib/routes/girlimg/album.js +++ /dev/null @@ -1,57 +0,0 @@ -const got = require('@/utils/got'); -const CryptoJS = require('crypto-js'); -const password = 'gefdzfdef'; - -module.exports = async (ctx) => { - const tag = ctx.params.tag ? ctx.params.tag : 'all'; - const mode = ctx.params.mode ? ctx.params.mode : 'simple'; - const limit = 'simple' === mode ? 20 : 10; - - const url = `https://girlimg.epio.app/api/articles?lang=en-us&filter={"where":{"tag":"${tag}","lang":"en-us"},"limit":20,"skip":0}`; - - const index_json = await fetchUrl(url); - - const items = await Promise.all( - index_json.slice(0, limit).map(async (item) => { - const simple = { - title: item.title, - link: `https://girlimg.epio.app/article/detail/${item._id}`, - pubDate: new Date(item.release_date).toUTCString(), - }; - let details; - if ('simple' === mode) { - details = { - description: item.cover, - }; - } else { - details = await ctx.cache.tryGet(item._id, async () => { - const data = await fetchUrl(`https://girlimg.epio.app/api/articles/${item._id}?lang=en-us`); - return { - description: data.content, - }; - }); - } - return Promise.resolve(Object.assign({}, simple, details)); - }) - ); - ctx.state.data = { - title: 'girlimg - album', - link: `https://girlimg.epio.app`, - item: items, - }; -}; - -async function fetchUrl(url) { - const encrypt_json = ( - await got({ - method: 'get', - url, - headers: { - Referer: 'https://girlimg.epio.app/', - }, - }) - ).data; - - const bytes = CryptoJS.AES.decrypt(encrypt_json.string, password); - return JSON.parse(bytes.toString(CryptoJS.enc.Utf8)); -} diff --git a/lib/routes/gracg/user.js b/lib/routes/gracg/user.js deleted file mode 100644 index 86c149be6..000000000 --- a/lib/routes/gracg/user.js +++ /dev/null @@ -1,65 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -module.exports = async (ctx) => { - const url = ctx.params.love ? `https://www.gracg.com/${ctx.params.user}/love` : `https://www.gracg.com/${ctx.params.user}`; - const response = await got({ - method: 'get', - url, - }); - const html = response.body; - const $ = cheerio.load(html); - const data = $('.TheWorksList').find('li'); - - if (data.length === 0) { - ctx.state.data = { - title: `${ctx.params.user} 的涂鸦王国作品`, - link: `https://gracg.com/${ctx.params.user}`, - description: `${ctx.params.user} 的涂鸦王国作品`, - }; - } else { - const name = $('.userbox .username').text(); - const item = await Promise.all( - data - .slice(0, 10) - .map(async (i, el) => { - const link = $(el).find('.imgbox a').attr('href'); - const pics = await ctx.cache.tryGet(link, async () => { - const res = await got.get(link); - const $1 = cheerio.load(res.body); - return $1('.workPage-images img') - .map((i, el) => $1(el).attr('src')) - .get(); - }); - const description = generateItemDesc(pics); - return { - title: $(el).find('.infobox .titles').text(), - description, - pubDate: new Date($(el).find('.infobox .time').text()).toUTCString(), - link, - }; - }) - .get() - ); - - ctx.state.data = { - title: `${name} 的涂鸦王国作品`, - link: `https://gracg.com/${ctx.params.user}`, - description: `${name} 的涂鸦王国作品`, - item, - }; - } -}; - -/** - * 根据图片链接生成 html - * @param {Array} pics - * @return {String} itemDesc - */ -function generateItemDesc(pics) { - const itemDesc = pics.reduce((acc, pic) => { - acc += ` { - const url = ctx.params.type ? `https://ja.hentai-cosplays.com/search/${ctx.params.type}/${encodeURIComponent(ctx.params.name)}/` : 'https://ja.hentai-cosplays.com/search/'; - const items = await processFeed(url); - ctx.state.data = { - title: `${ctx.params.name || '新着コスプレ一覧'} - エロコスプレ`, - link: url, - item: items, - }; -}; diff --git a/lib/routes/jdlingyu/index.js b/lib/routes/jdlingyu/index.js deleted file mode 100644 index cad3101c3..000000000 --- a/lib/routes/jdlingyu/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -const baseUrl = 'https://www.jdlingyu.mobi/'; -const viewProps = { - tuji: '图集', - as: '文章', -}; - -module.exports = async (ctx) => { - const type = ctx.params.type || 'tuji'; - const url = baseUrl + type; - const response = await got({ - method: 'get', - url, - }); - const $ = cheerio.load(response.data); - - const items = await Promise.all( - $('#post-list > ul.b2_gap > li') - .get() - .map(async (div) => { - const a = $(div).find('.post-info > h2 > a'); - const link = a.attr('href'); - const description = await ctx.cache.tryGet(link, async () => { - const response = await got.get(link); - const $ = cheerio.load(response.data); - return $('.entry-content > p').html(); - }); - return Promise.resolve({ - title: a.text(), - description, - author: $(div).find('.post-header .users').text(), - link, - pubDate: new Date($(div).find('.post-header time').attr('datetime')).toUTCString(), - }); - }) - ); - ctx.state.data = { - title: `${viewProps[type]} - 绝对领域`, - link: url, - description: `${viewProps[type]} - 绝对领域`, - item: items, - }; -}; diff --git a/lib/routes/loveheaven/update.js b/lib/routes/loveheaven/update.js deleted file mode 100644 index 96177b0bc..000000000 --- a/lib/routes/loveheaven/update.js +++ /dev/null @@ -1,45 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); -const chrono = require('chrono-node'); - -const base = 'https://loveheaven.net/'; - -module.exports = async (ctx) => { - const slug = ctx.params.slug; - - const url = `https://loveheaven.net/manga-${slug.replace(/^manga-/, '').replace(/\.html$/, '')}.html`; - - const response = await got.get(url); - const $ = cheerio.load(response.data); - - const manga_name = $('.manga-info > h1').text(); - const manga_other_names = $('.manga-info > li:nth-child(3)').text(); - const manga_author = $('a.btn-info') - .map(function () { - return $(this).text(); - }) - .get() - .join(', '); - const manga_cover = $('img.thumbnail').attr('src'); - - const list = $('.tab-text .table > tbody > tr').get(); - - ctx.state.data = { - title: `${manga_name} - LoveHeaven`, - description: manga_other_names, - link: url, - image: manga_cover, - item: list.slice(0, 20).map((item) => { - item = $(item); - const entry = item.find('a'); - const humanized_date = item.find('time').text(); - return { - title: entry.text(), - author: manga_author, - description: ``, - link: base + entry.attr('href'), - pubDate: humanized_date ? chrono.parseDate(humanized_date) : new Date(), - }; - }), - }; -}; diff --git a/lib/routes/mzitu/category.js b/lib/routes/mzitu/category.js deleted file mode 100644 index 7af3bef98..000000000 --- a/lib/routes/mzitu/category.js +++ /dev/null @@ -1,26 +0,0 @@ -const got = require('@/utils/got'); -const { getItem } = require('./util'); - -const map = { - xinggan: '性感妹子', - japan: '日本妹子', - taiwan: '台湾妹子', - mm: '清纯妹子', -}; - -module.exports = async (ctx) => { - const { category } = ctx.params; - - const url = `https://www.mzitu.com/${category}`; - const response = await got({ - method: 'get', - url, - }); - const items = await getItem(ctx, response.data); - - ctx.state.data = { - title: `妹子图-${map[category]} `, - link: url, - item: items, - }; -}; diff --git a/lib/routes/mzitu/home.js b/lib/routes/mzitu/home.js deleted file mode 100644 index b736b3f89..000000000 --- a/lib/routes/mzitu/home.js +++ /dev/null @@ -1,32 +0,0 @@ -const got = require('@/utils/got'); -const { getItem } = require('./util'); - -module.exports = async (ctx) => { - const { type = '' } = ctx.params; - let url; - let title = '妹子图'; - - if (type === 'hot') { - title += '-最热'; - url = 'https://www.mzitu.com/hot/'; - } else if (type === 'best') { - title += '-推荐'; - url = 'https://www.mzitu.com/best/'; - } else { - title += '-最新'; - url = 'https://www.mzitu.com/'; - } - - const response = await got({ - method: 'get', - url, - }); - - const items = await getItem(ctx, response.data); - - ctx.state.data = { - title, - link: url, - item: items, - }; -}; diff --git a/lib/routes/mzitu/post.js b/lib/routes/mzitu/post.js deleted file mode 100644 index 7bca9cb99..000000000 --- a/lib/routes/mzitu/post.js +++ /dev/null @@ -1,41 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -module.exports = async (ctx) => { - const { id } = ctx.params; - - const link = `http://www.mzitu.com/${id}`; - const response = await got({ - method: 'get', - url: link, - }); - const $ = cheerio.load(response.data); - const page_lengh = $('div.pagenavi > a:nth-last-child(2) > span').text(); - const title = $('h2.main-title').text(); - - const pages = Array.from({ length: page_lengh }, (v, i) => i); - - ctx.state.data = { - title, - link, - item: await Promise.all( - pages.map(async (page) => { - const page_link = link + '/' + (page + 1).toString(); - - const response = await got({ - method: 'get', - url: page_link, - }); - const $ = cheerio.load(response.data); - const item_link = $('div.main-image img').attr('src'); - const item_title = `${title} (${page + 1})`; - const description = ``; - return { - title: item_title, - link: page_link, - description, - }; - }) - ), - }; -}; diff --git a/lib/routes/mzitu/tag.js b/lib/routes/mzitu/tag.js deleted file mode 100644 index 385e6e37e..000000000 --- a/lib/routes/mzitu/tag.js +++ /dev/null @@ -1,25 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); -const { getItem } = require('./util'); - -module.exports = async (ctx) => { - let tag = ctx.params.tag; - tag = tag === undefined || tag === 'undefined' ? '' : tag; - - const link = `https://www.mzitu.com/tag/${tag}`; - const response = await got({ - method: 'get', - url: link, - }); - const $ = cheerio.load(response.data); - const items = await getItem(ctx, response.data); - - let name = $('div.currentpath').text(); - name = name.split('»')[1]; - - ctx.state.data = { - title: name, - link, - item: items, - }; -}; diff --git a/lib/routes/mzitu/tags.js b/lib/routes/mzitu/tags.js deleted file mode 100644 index 0b9e67103..000000000 --- a/lib/routes/mzitu/tags.js +++ /dev/null @@ -1,23 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -module.exports = async (ctx) => { - const link = 'https://www.mzitu.com/zhuanti'; - - const response = await got({ - method: 'get', - url: link, - }); - const $ = cheerio.load(response.data); - const list = $('div.postlist > dl > dd').get(); - - ctx.state.data = { - title: '妹子图专题', - link, - description: '妹子图美女专题栏目,为您精心准备各种美女图片专题,包括名站美女写真,妹子特点分类,美女大全等专题。', - item: list.map((item) => ({ - title: $(item).find('img').attr('alt'), - link: $(item).find('a').attr('href'), - })), - }; -}; diff --git a/lib/routes/mzitu/util.js b/lib/routes/mzitu/util.js deleted file mode 100644 index da5389934..000000000 --- a/lib/routes/mzitu/util.js +++ /dev/null @@ -1,51 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -exports.getItem = (ctx, data) => { - const $ = cheerio.load(data); - const list = $('#pins li').get().slice(0, 5); - - return Promise.all( - list.map(async (item) => { - const title = $(item).find('span > a').text(); - const item_link = $(item).find('span > a').attr('href'); - - const cache = await ctx.cache.get(item_link); - let description; - if (cache) { - description = cache; - } else { - const response = await got({ - method: 'get', - url: item_link, - }); - const $ = cheerio.load(response.data); - const page_lengh = $('div.pagenavi > a:nth-last-child(2) > span').text(); - - const pages = Array.from({ length: page_lengh }, (v, i) => i); - const description_list = await Promise.all( - pages.map(async (page) => { - const page_link = item_link + '/' + (page + 1).toString(); - - const response = await got({ - method: 'get', - url: page_link, - }); - const $ = cheerio.load(response.data); - - return `
`; - }) - ); - - description = description_list.join(''); - ctx.cache.set(item_link, description); - } - - return { - title, - description, - link: item_link, - }; - }) - ); -}; diff --git a/lib/routes/zhutix/latest.js b/lib/routes/zhutix/latest.js deleted file mode 100644 index 4c20403e7..000000000 --- a/lib/routes/zhutix/latest.js +++ /dev/null @@ -1,41 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -module.exports = async (ctx) => { - const currentUrl = 'https://zhutix.com/'; - const response = await got({ - method: 'get', - url: currentUrl, - }); - const $ = cheerio.load(response.data); - const list = $('#main div.grid-bor div.content-card') - .slice(0, 10) - .map((_, item) => { - item = $(item); - const a = item.find('a'); - return { - title: a.text(), - link: a.attr('href'), - pubDate: new Date(item.find('i.feng-liulanjilu').parent().text()).toUTCString(), - }; - }) - .get(); - - const items = await Promise.all( - list.map((item) => - ctx.cache.tryGet(item.link, async () => { - const res = await got({ method: 'get', url: item.link }); - const content = cheerio.load(res.data); - - item.description = content('#entry-content').html(); - return item; - }) - ) - ); - - ctx.state.data = { - title: '致美化 - 最新主题', - link: currentUrl, - item: items, - }; -}; diff --git a/lib/v2/35photo/actual.js b/lib/v2/35photo/actual.js deleted file mode 100644 index c9c132fd7..000000000 --- a/lib/v2/35photo/actual.js +++ /dev/null @@ -1,7 +0,0 @@ -const { rootUrl, ProcessItems } = require('./utils'); - -module.exports = async (ctx) => { - const currentUrl = `${rootUrl}/new/actual`; - - ctx.state.data = await ProcessItems(currentUrl); -}; diff --git a/lib/v2/35photo/author.js b/lib/v2/35photo/author.js deleted file mode 100644 index 10bdbaf8b..000000000 --- a/lib/v2/35photo/author.js +++ /dev/null @@ -1,9 +0,0 @@ -const { rootUrl, ProcessItems } = require('./utils'); - -module.exports = async (ctx) => { - const id = ctx.params.id; - - const currentUrl = `${rootUrl}/${id}`; - - ctx.state.data = await ProcessItems(currentUrl); -}; diff --git a/lib/v2/35photo/genre.js b/lib/v2/35photo/genre.js deleted file mode 100644 index 66da8f11e..000000000 --- a/lib/v2/35photo/genre.js +++ /dev/null @@ -1,10 +0,0 @@ -const { rootUrl, ProcessItems } = require('./utils'); - -module.exports = async (ctx) => { - const id = ctx.params.id; - - const currentUrl = `${rootUrl}/genre_${id}`; - const apiUrl = `${rootUrl}/show_block.php?type=getNextPageData&page=genre&community_id=${id}`; - - ctx.state.data = await ProcessItems(currentUrl, apiUrl); -}; diff --git a/lib/v2/35photo/interesting.js b/lib/v2/35photo/interesting.js deleted file mode 100644 index be4c36d6a..000000000 --- a/lib/v2/35photo/interesting.js +++ /dev/null @@ -1,7 +0,0 @@ -const { rootUrl, ProcessItems } = require('./utils'); - -module.exports = async (ctx) => { - const currentUrl = `${rootUrl}/new/interesting`; - - ctx.state.data = await ProcessItems(currentUrl); -}; diff --git a/lib/v2/35photo/maintainer.js b/lib/v2/35photo/maintainer.js deleted file mode 100644 index 4d0902933..000000000 --- a/lib/v2/35photo/maintainer.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - '/actual': ['nczitzk'], - '/author/:id': ['nczitzk'], - '/genre/:id': ['nczitzk'], - '/interesting': ['nczitzk'], - '/map': ['nczitzk'], - '/new': ['nczitzk'], -}; diff --git a/lib/v2/35photo/map.js b/lib/v2/35photo/map.js deleted file mode 100644 index 8e2550ec0..000000000 --- a/lib/v2/35photo/map.js +++ /dev/null @@ -1,7 +0,0 @@ -const { rootUrl, ProcessItems } = require('./utils'); - -module.exports = async (ctx) => { - const currentUrl = `${rootUrl}/new/map`; - - ctx.state.data = await ProcessItems(currentUrl); -}; diff --git a/lib/v2/35photo/new.js b/lib/v2/35photo/new.js deleted file mode 100644 index ff962b546..000000000 --- a/lib/v2/35photo/new.js +++ /dev/null @@ -1,7 +0,0 @@ -const { rootUrl, ProcessItems } = require('./utils'); - -module.exports = async (ctx) => { - const currentUrl = `${rootUrl}/new`; - - ctx.state.data = await ProcessItems(currentUrl); -}; diff --git a/lib/v2/35photo/radar.js b/lib/v2/35photo/radar.js deleted file mode 100644 index c46af775e..000000000 --- a/lib/v2/35photo/radar.js +++ /dev/null @@ -1,43 +0,0 @@ -module.exports = { - '35photo.pro': { - _name: '35PHOTO', - '.': [ - { - title: 'New photos', - docs: 'https://docs.rsshub.app/routes/picture#35photo-new-photos', - source: ['/new', '/'], - target: '/35photo/new', - }, - { - title: 'Featured photos', - docs: 'https://docs.rsshub.app/routes/picture#35photo-featured-photos', - source: ['/new/actual', '/'], - target: '/35photo/actual', - }, - { - title: 'New interesting', - docs: 'https://docs.rsshub.app/routes/picture#35photo-new-interesting', - source: ['/new/interesting', '/'], - target: '/35photo/interesting', - }, - { - title: 'Photos on the world map', - docs: 'https://docs.rsshub.app/routes/picture#35photo-photos-on-the-world-map', - source: ['/new/map', '/'], - target: '/35photo/map', - }, - { - title: 'Genre', - docs: 'https://docs.rsshub.app/routes/picture#35photo-genre', - source: ['/'], - target: (params, url) => `/35photo/genre/${url.match(/genre_(\d+)/)[1]}`, - }, - { - title: 'Author', - docs: 'https://docs.rsshub.app/routes/picture#35photo-author', - source: ['/:id', '/'], - target: '/35photo/author/:id', - }, - ], - }, -}; diff --git a/lib/v2/35photo/router.js b/lib/v2/35photo/router.js deleted file mode 100644 index 0975e35a3..000000000 --- a/lib/v2/35photo/router.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = function (router) { - router.get('/actual', require('./actual')); - router.get('/author/:id', require('./author')); - router.get('/genre/:id', require('./genre')); - router.get('/interesting', require('./interesting')); - router.get('/map', require('./map')); - router.get('/new', require('./new')); -}; diff --git a/lib/v2/35photo/utils.js b/lib/v2/35photo/utils.js deleted file mode 100644 index fc0dac096..000000000 --- a/lib/v2/35photo/utils.js +++ /dev/null @@ -1,57 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -const rootUrl = 'https://35photo.pro'; - -module.exports = { - rootUrl, - ProcessItems: async (currentUrl, apiUrl) => { - let $, response; - - response = await got({ - method: 'get', - url: currentUrl, - }); - - const data = response.data; - - $ = cheerio.load(data); - - const title = $('h1').text(); - - if (apiUrl) { - response = await got({ - method: 'get', - url: `${apiUrl}&lastId=${$('div.countLike').last().attr('photo-id')}`, - }); - - $ = cheerio.load(data + response.data.data); - } - - const items = $('.item') - .toArray() - .map((item) => { - item = $(item); - - const image = item.find('.showPrevPhoto'); - - return { - title: image.attr('title').replace(/Photographer\\'s photo - /, ''), - link: image.parent().attr('href'), - author: item.next().find('.userName').text().replace(/© /, ''), - category: image - .attr('alt') - .replace(/photo preview/g, '') - .split(/,|#/) - .map((c) => c.trim()), - description: ``, - }; - }); - - return { - title: `${title} - 35PHOTO`, - link: currentUrl, - item: items, - }; - }, -}; diff --git a/lib/v2/dbmv/index.js b/lib/v2/dbmv/index.js deleted file mode 100644 index 6d99a209d..000000000 --- a/lib/v2/dbmv/index.js +++ /dev/null @@ -1,64 +0,0 @@ -const got = require('@/utils/got'); -const cherrio = require('cheerio'); -const { parseDate } = require('@/utils/parse-date'); -const timezone = require('@/utils/timezone'); - -module.exports = async (ctx) => { - const { category = '' } = ctx.params; - let url; - - if (category !== '') { - url = 'https://www.buxiuse.com/?cid=' + category; - } else { - url = 'https://www.buxiuse.com'; - } - - const response = await got({ - url, - headers: { - Referer: 'https://www.buxiuse.com', - }, - }); - - const data = response.data; - const $ = cherrio.load(data); - - let resultItem = $('li.span3 img') - .toArray() - .map((item) => { - item = $(item); - const img_url = item.attr('src'); - return { - title: item.attr('title'), - link: item.parent().attr('href'), - description: ``, - guid: img_url, - }; - }); - - resultItem = await Promise.all( - resultItem.map((item) => - ctx.cache.tryGet(item.link, async () => { - const detailResponse = await got({ - url: item.link, - headers: { - Referer: url, - }, - }); - const detailData = detailResponse.data; - const $ = cherrio.load(detailData); - - item.author = $('li.name').text(); - item.pubDate = timezone(parseDate($('div.info abbr').attr('title')), +8); - return item; - }) - ) - ); - - ctx.state.data = { - title: $('title').text(), - link: url, - item: resultItem, - description: '不羞涩 | 真实的图片分享交友社区', - }; -}; diff --git a/lib/v2/dbmv/maintainer.js b/lib/v2/dbmv/maintainer.js deleted file mode 100644 index b9119095d..000000000 --- a/lib/v2/dbmv/maintainer.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - '/:category?': ['kba977'], -}; diff --git a/lib/v2/dbmv/radar.js b/lib/v2/dbmv/radar.js deleted file mode 100644 index 99b51a176..000000000 --- a/lib/v2/dbmv/radar.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - 'buxiuse.com': { - _name: '不羞涩', - '.': [ - { - title: '分类', - docs: 'https://docs.rsshub.app/routes/picture#bu-xiu-se', - source: '/', - target: (_params, url) => `/dbmv${new URL(url).searchParams.has('cid') ? `/${new URL(url).searchParams.get('cid')}` : ''}`, - }, - ], - }, -}; diff --git a/lib/v2/dbmv/router.js b/lib/v2/dbmv/router.js deleted file mode 100644 index 9885c36f1..000000000 --- a/lib/v2/dbmv/router.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = (router) => { - router.get('/:category?', require('./index')); -}; diff --git a/lib/v2/google/router.js b/lib/v2/google/router.js index ff5da9051..b3064cf1c 100644 --- a/lib/v2/google/router.js +++ b/lib/v2/google/router.js @@ -6,6 +6,4 @@ module.exports = function (router) { router.get('/fonts/:sort?', require('./fonts')); router.get('/news/:category/:locale', require('./news')); router.get('/scholar/:query', require('./scholar')); - router.get('/sites/recentChanges/:id', require('./sitesRecentChanges')); - router.get('/sites/:id', require('./sites')); }; diff --git a/lib/v2/google/sitesRecentChanges.js b/lib/v2/google/sitesRecentChanges.js deleted file mode 100644 index de5d308d6..000000000 --- a/lib/v2/google/sitesRecentChanges.js +++ /dev/null @@ -1,51 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); -const { parseDate } = require('@/utils/parse-date'); - -module.exports = async (ctx) => { - const id = ctx.params.id; - - const rootUrl = 'https://sites.google.com'; - const currentUrl = `${rootUrl}/site/${id}/activity.xml`; - const response = await got({ - method: 'get', - url: currentUrl, - }); - - const $ = cheerio.load(response.data); - - let items = $('entry') - .toArray() - .map((item) => { - item = $(item); - - return { - title: item.find('summary').text(), - link: item.find('summary a').attr('href'), - pubDate: parseDate(item.find('updated').text()), - author: item.find('author name').text(), - }; - }); - - items = await Promise.all( - items.map((item) => - ctx.cache.tryGet(item.link, async () => { - const detailResponse = await got({ - method: 'get', - url: item.link, - }); - const content = cheerio.load(detailResponse.data); - - item.description = content('#sites-canvas').html(); - - return item; - }) - ) - ); - - ctx.state.data = { - title: $('feed title').first().text(), - link: currentUrl, - item: items, - }; -}; diff --git a/lib/v2/meituclub/latest.js b/lib/v2/meituclub/latest.js deleted file mode 100644 index e05eec2b5..000000000 --- a/lib/v2/meituclub/latest.js +++ /dev/null @@ -1,41 +0,0 @@ -const path = require('path'); -const cheerio = require('cheerio'); -const got = require('@/utils/got'); -const { art } = require('@/utils/render'); -const { parseDate } = require('@/utils/parse-date'); -const timezone = require('@/utils/timezone'); - -const HOME_URL = 'https://www.meituclub.com/'; - -module.exports = async (ctx) => { - const response = await got({ - method: 'get', - url: HOME_URL, - }); - - const data = response.data; - - const $ = cheerio.load(data); - const list = $('#index-tab-main .posts-item.card'); - - ctx.state.data = { - title: '妹图社 - 最新', - link: HOME_URL, - item: list - .map((index, item) => { - item = $(item); - const img = item.find('.item-thumbnail').find('img'); - const heading = item.find('.item-heading').find('a'); - return { - title: heading.text(), - description: art(path.join(__dirname, 'templates/description.art'), { - src: img.attr('data-src'), - alt: img.attr('alt'), - }), - link: heading.attr('href'), - pubDate: timezone(parseDate(item.find('.item-meta').find('.icon-circle').attr('title'), 'YYYY-MM-DD HH:mm:ss'), +8), - }; - }) - .get(), - }; -}; diff --git a/lib/v2/meituclub/maintainer.js b/lib/v2/meituclub/maintainer.js deleted file mode 100644 index 0a784e3fc..000000000 --- a/lib/v2/meituclub/maintainer.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - '/latest': ['ocleo1'], -}; diff --git a/lib/v2/meituclub/radar.js b/lib/v2/meituclub/radar.js deleted file mode 100644 index c2fbee36d..000000000 --- a/lib/v2/meituclub/radar.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - 'meituclub.com': { - _name: '妹图社', - '.': [ - { - title: '最新', - docs: 'https://docs.rsshub.app/routes/picture#mei-tu-she-zui-xin', - source: ['/'], - target: '/meituclub/latest', - }, - ], - }, -}; diff --git a/lib/v2/meituclub/router.js b/lib/v2/meituclub/router.js deleted file mode 100644 index c7599855e..000000000 --- a/lib/v2/meituclub/router.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = function (router) { - router.get('/latest', require('./latest')); -}; diff --git a/lib/v2/meituclub/templates/description.art b/lib/v2/meituclub/templates/description.art deleted file mode 100644 index c961f7a31..000000000 --- a/lib/v2/meituclub/templates/description.art +++ /dev/null @@ -1 +0,0 @@ -{{ alt }} \ No newline at end of file diff --git a/website/docs/routes/picture.mdx b/website/docs/routes/picture.mdx index db905f424..b86598e33 100644 --- a/website/docs/routes/picture.mdx +++ b/website/docs/routes/picture.mdx @@ -165,20 +165,6 @@ -## BabeHub {#babehub} - -### Category {#babehub-category} - - - | Home | Most Viewed | Picture Archive | Video Archive | - | ---- | ----------- | --------------- | ------------- | - | | most-viewed | picture | video | - - -### Search {#babehub-search} - - - ## Bing Wallpaper {#bing-wallpaper} ### Daily Wallpaper {#bing-wallpaper-daily-wallpaper} @@ -218,14 +204,6 @@ -## Dilbert Comic Strip {#dilbert-comic-strip} - -### Dilbert Comic Strip {#dilbert-comic-strip-dilbert-comic-strip} - - - 通过提取漫画,提供比官方源更佳的阅读体验。 - - ## E-Hentai {#e-hentai} For RSS content, specify options in the `routeParams` parameter in query string format to control additional functionality @@ -247,28 +225,6 @@ For RSS content, specify options in the `routeParams` parameter in query string -## Elite Babes {#elite-babes} - -### Home {#elite-babes-home} - - - | Home | Hot | Popular | Recent | - | ---- | --- | ------- | ------ | - | | hot | popular | recent | - - -### Videos {#elite-babes-videos} - - - | Popular | Recent | - | ------- | ------ | - | popular | recent | - - -### Search {#elite-babes-search} - - - ## Fantia {#fantia} ### Search {#fantia-search} @@ -329,12 +285,6 @@ For RSS content, specify options in the `routeParams` parameter in query string -## GirlImg {#girlimg} - -### album {#girlimg-album} - - - ## GoComics {#gocomics} ### Comic Strips {#gocomics-comic-strips} @@ -353,12 +303,6 @@ For RSS content, specify options in the `routeParams` parameter in query string -## Hentai Cosplay {#hentai-cosplay} - -### 最新图片 {#hentai-cosplay-zui-xin-tu-pian} - - - ## Konachan Anime Wallpapers {#konachan-anime-wallpapers} :::tip @@ -378,17 +322,11 @@ For RSS content, specify options in the `routeParams` parameter in query string - 1 year: [https://rsshub.app/konachan/post/popular\_recent/1y](https://rsshub.app/konachan/post/popular_recent/1y) -## LoveHeaven {#loveheaven} - -### Manga Updates {#loveheaven-manga-updates} - - - ## Mic Mic Idol {#mic-mic-idol} ### Latest {#mic-mic-idol-latest} - + ### 标签 {#mic-mic-idol-biao-qian} @@ -532,28 +470,12 @@ For example [Latest Wallpapers](https://wallhaven.cc/latest), the route turning - 1 year: [https://rsshub.app/yande.re/post/popular\_recent/1y](https://rsshub.app/yande.re/post/popular_recent/1y) -## 百度趣画 {#bai-du-qu-hua} - -### 更新 {#bai-du-qu-hua-geng-xin} - - - ## 北京天文馆 {#bei-jing-tian-wen-guan} ### 每日一图 {#bei-jing-tian-wen-guan-mei-ri-yi-tu} -## 不羞涩 {#bu-xiu-se} - -### 分类 {#bu-xiu-se-fen-lei} - - - | 大胸妹 | 小翘臀 | 黑丝袜 | 美腿控 | 有颜值 | 大杂烩 | - | ------ | ------ | ------ | ------ | ------ | ------ | - | 2 | 6 | 7 | 3 | 4 | 5 | - - ## 煎蛋 {#jian-dan} ### 板块 {#jian-dan-ban-kuai} @@ -576,16 +498,6 @@ For example [Latest Wallpapers](https://wallhaven.cc/latest), the route turning -## 绝对领域 {#jue-dui-ling-yu} - -### 图集文章 {#jue-dui-ling-yu-tu-ji-wen-zhang} - - - -| 图集 | 文章 | -| ---- | ---- | -| tuji | as | - ## 酷 18 {#ku-18} ### 分站 {#ku-18-fen-zhan} @@ -610,38 +522,6 @@ For example [Latest Wallpapers](https://wallhaven.cc/latest), the route turning -## 妹图社 {#mei-tu-she} - -### 最新 {#mei-tu-she-zui-xin} - - - -## 妹子图 {#mei-zi-tu} - -### 首页(最新) {#mei-zi-tu-shou-ye-zui-xin} - - - -### 分类 {#mei-zi-tu-fen-lei} - - - | 性感妹子 | 日本妹子 | 台湾妹子 | 清纯妹子 | - | -------- | -------- | -------- | -------- | - | xinggan | japan | taiwan | mm | - - -### 所有专题 {#mei-zi-tu-suo-you-zhuan-ti} - - - -### 专题详情 {#mei-zi-tu-zhuan-ti-xiang-qing} - - - -### 详情 {#mei-zi-tu-xiang-qing} - - - ## 喷嚏 {#pen-ti} ### 图卦 {#pen-ti-tu-gua} @@ -657,15 +537,3 @@ For example [Latest Wallpapers](https://wallhaven.cc/latest), the route turning ### 频道 {#qi-pa-mai-jia-xiu-pin-dao} - -## 涂鸦王国 {#tu-ya-wang-guo} - -### 用户上传作品和用户喜欢作品 {#tu-ya-wang-guo-yong-hu-shang-chuan-zuo-pin-he-yong-hu-xi-huan-zuo-pin} - - - -## 致美化 {#zhi-mei-hua} - -### 最新主题 {#zhi-mei-hua-zui-xin-zhu-ti} - -