From 6d898277a027fc435b2181af5c48cfed06ae447c Mon Sep 17 00:00:00 2001 From: DIYgod Date: Wed, 20 Dec 2023 01:52:09 +0800 Subject: [PATCH] feat: remove notOperational routes - multimedia --- assets/radar-rules.js | 27 --- lib/radar-rules.js | 62 ------- lib/router.js | 58 ------ lib/routes/changku/index.js | 39 ----- lib/routes/ddrk/index.js | 2 +- lib/routes/ddrk/list.js | 2 +- lib/routes/dysfz/index.js | 20 --- lib/routes/gaoqingla/latest.js | 37 ---- lib/routes/mp4ba/index.js | 133 -------------- lib/routes/mqube/latest.js | 21 --- lib/routes/mqube/tag.js | 23 --- lib/routes/mqube/top.js | 21 --- lib/routes/mqube/user.js | 25 --- lib/routes/nfmovies/index.js | 58 ------ lib/routes/ningmeng/song.js | 77 -------- lib/routes/piaohua/hot.js | 37 ---- lib/routes/rs05/rs05.js | 35 ---- lib/routes/s-hentai/index.js | 64 ------- lib/routes/sankakucomplex/post.js | 50 ------ lib/routes/shinybbs/index.js | 60 ------- lib/routes/shinybbs/latest.js | 57 ------ lib/routes/shinybbs/p.js | 38 ---- lib/routes/tencent/video/playlist.js | 46 ----- lib/routes/wanwansub/index.js | 57 ------ lib/routes/wanwansub/info.js | 44 ----- lib/routes/yahoo-jp-tv/index.js | 21 --- lib/routes/zimuku/index.js | 2 +- lib/routes/zimuzu/resource.js | 19 -- lib/routes/zimuzu/top.js | 27 --- lib/v2/aliyundrive/files.js | 59 ------- lib/v2/aliyundrive/maintainer.js | 3 - lib/v2/aliyundrive/radar.js | 13 -- lib/v2/aliyundrive/router.js | 3 - lib/v2/gaze/maintainer.js | 3 - lib/v2/gaze/radar.js | 13 -- lib/v2/gaze/router.js | 3 - lib/v2/gaze/templates/update.art | 4 - lib/v2/gaze/update.js | 27 --- lib/v2/ibc/maintainer.js | 4 - lib/v2/ibc/maitta.js | 32 ---- lib/v2/ibc/radar.js | 19 -- lib/v2/ibc/radio.js | 73 -------- lib/v2/ibc/router.js | 4 - lib/v2/ibc/templates/description.art | 6 - lib/v2/mtime/maintainer.js | 3 - lib/v2/mtime/news.js | 52 ------ lib/v2/mtime/radar.js | 13 -- lib/v2/mtime/router.js | 3 - lib/v2/prestige-av/maintainer.js | 3 - lib/v2/prestige-av/radar.js | 18 -- lib/v2/prestige-av/router.js | 3 - lib/v2/prestige-av/series.js | 42 ----- lib/v2/tencent/radar.js | 17 -- website/docs/routes/multimedia.mdx | 252 +-------------------------- 54 files changed, 11 insertions(+), 1823 deletions(-) delete mode 100644 lib/routes/changku/index.js delete mode 100644 lib/routes/dysfz/index.js delete mode 100644 lib/routes/gaoqingla/latest.js delete mode 100644 lib/routes/mp4ba/index.js delete mode 100644 lib/routes/mqube/latest.js delete mode 100644 lib/routes/mqube/tag.js delete mode 100644 lib/routes/mqube/top.js delete mode 100644 lib/routes/mqube/user.js delete mode 100644 lib/routes/nfmovies/index.js delete mode 100644 lib/routes/ningmeng/song.js delete mode 100644 lib/routes/piaohua/hot.js delete mode 100644 lib/routes/rs05/rs05.js delete mode 100644 lib/routes/s-hentai/index.js delete mode 100644 lib/routes/sankakucomplex/post.js delete mode 100644 lib/routes/shinybbs/index.js delete mode 100644 lib/routes/shinybbs/latest.js delete mode 100644 lib/routes/shinybbs/p.js delete mode 100644 lib/routes/tencent/video/playlist.js delete mode 100644 lib/routes/wanwansub/index.js delete mode 100644 lib/routes/wanwansub/info.js delete mode 100644 lib/routes/yahoo-jp-tv/index.js delete mode 100644 lib/routes/zimuzu/resource.js delete mode 100644 lib/routes/zimuzu/top.js delete mode 100644 lib/v2/aliyundrive/files.js delete mode 100644 lib/v2/aliyundrive/maintainer.js delete mode 100644 lib/v2/aliyundrive/radar.js delete mode 100644 lib/v2/aliyundrive/router.js delete mode 100644 lib/v2/gaze/maintainer.js delete mode 100644 lib/v2/gaze/radar.js delete mode 100644 lib/v2/gaze/router.js delete mode 100644 lib/v2/gaze/templates/update.art delete mode 100644 lib/v2/gaze/update.js delete mode 100644 lib/v2/ibc/maintainer.js delete mode 100644 lib/v2/ibc/maitta.js delete mode 100644 lib/v2/ibc/radar.js delete mode 100644 lib/v2/ibc/radio.js delete mode 100644 lib/v2/ibc/router.js delete mode 100644 lib/v2/ibc/templates/description.art delete mode 100644 lib/v2/mtime/maintainer.js delete mode 100644 lib/v2/mtime/news.js delete mode 100644 lib/v2/mtime/radar.js delete mode 100644 lib/v2/mtime/router.js delete mode 100644 lib/v2/prestige-av/maintainer.js delete mode 100644 lib/v2/prestige-av/radar.js delete mode 100644 lib/v2/prestige-av/router.js delete mode 100644 lib/v2/prestige-av/series.js diff --git a/assets/radar-rules.js b/assets/radar-rules.js index 1b1039d4e8..0cef7ad4dc 100644 --- a/assets/radar-rules.js +++ b/assets/radar-rules.js @@ -119,15 +119,6 @@ 'govopendata.com': { _name: '新闻联播文字版', cn: [{ title: '新闻联播文字版', docs: 'https://docs.rsshub.app/routes/traditional-media#xin-wen-lian-bo-wen-zi-ban', source: '/xinwenlianbo', target: '/xinwenlianbo/index' }] }, 'steampowered.com': { _name: 'Steam', store: [{ title: 'search', docs: 'https://docs.rsshub.app/routes/game#steam', source: '/search/', target: (params, url) => `/steam/search/${new URL(url).searchParams}` }] }, 'suzhou.gov.cn': { _name: '苏州市政府', www: [{ title: '政府新闻', docs: 'https://docs.rsshub.app/routes/government#su-zhou-shi-ren-min-zheng-fu', source: '/szsrmzf/:uid/nav_list.', target: '/gov/suzhou/news/:uid' }] }, - 'mqube.net': { - _name: 'MQube', - www: [ - { title: '全站最近更新', docs: 'https://docs.rsshub.app/routes/multimedia#mqube', source: '/', target: '/mqube/latest' }, - { title: '全站每日排行', docs: 'https://docs.rsshub.app/routes/multimedia#mqube', source: '/', target: '/mqube/top' }, - { title: '个人最近更新', docs: 'https://docs.rsshub.app/routes/multimedia#mqube', source: '/user/:user', target: '/mqube/user/:user' }, - { title: '标签最近更新', docs: 'https://docs.rsshub.app/routes/multimedia#mqube', source: '/search/tag/:tag', target: '/mqube/tag/:tag' }, - ], - }, 'last.fm': { _name: 'Last.fm', www: [ @@ -136,24 +127,6 @@ { title: '站内 Top 榜单', docs: 'https://docs.rsshub.app/routes/multimedia#last-fm', source: '/charts', target: '/lastfm/top' }, ], }, - 'ddrk.me': { - _name: '低端影视', - www: [ - { title: '首页', docs: 'https://docs.rsshub.app/routes/multimedia#di-duan-ying-shi', source: '/', target: '/ddrk/index' }, - { title: '标签', docs: 'https://docs.rsshub.app/routes/multimedia#di-duan-ying-shi', source: '/tag/:tag', target: '/ddrk/tag/:tag' }, - { title: '分类', docs: 'https://docs.rsshub.app/routes/multimedia#di-duan-ying-shi', source: ['/category/:category', '/category/:uplevel/:category'], target: '/ddrk/category/:category' }, - { - title: '影视剧集更新', - docs: 'https://docs.rsshub.app/routes/multimedia#di-duan-ying-shi', - source: ['/:name', '/:name/:season'], - target: (params) => { - if (params.name !== 'category' && params.name !== 'tag' && params.name !== 'ddrklogin' && params.name !== 'about' && params.name !== 'deleted') { - return `/ddrk/update/${params.name}${params.season ? '/' + params.season : ''}`; - } - }, - }, - ], - }, 'hackerone.com': { _name: 'HackerOne', '.': [{ title: 'HackerOne Hacker Activity', docs: 'https://docs.rsshub.app/routes/other#hackerone-hacker-activity', source: '/hacktivity', target: '/hackerone/hacktivity' }] }, 'cowlevel.net': { _name: '奶牛关', '.': [{ title: '元素文章', docs: 'https://docs.rsshub.app/routes/game#nai-niu-guan', source: ['/element/:id', '/element/:id/article'], target: '/cowlevel/element/:id' }] }, 'beijing.gov.cn': { wjw: [{ title: '北京卫生健康委员会', docs: 'https://docs.rsshub.app/routes/government#bei-jing-shi-wei-sheng-jian-kang-wei-yuan-hui', source: '/xwzx_20031/:caty', target: '/gov/beijing/mhc/:caty' }] }, diff --git a/lib/radar-rules.js b/lib/radar-rules.js index 4469579955..61ccec19be 100644 --- a/lib/radar-rules.js +++ b/lib/radar-rules.js @@ -310,35 +310,6 @@ module.exports = { }, ], }, - 'mqube.net': { - _name: 'MQube', - www: [ - { - title: '全站最近更新', - docs: 'https://docs.rsshub.app/routes/multimedia#mqube', - source: '/', - target: '/mqube/latest', - }, - { - title: '全站每日排行', - docs: 'https://docs.rsshub.app/routes/multimedia#mqube', - source: '/', - target: '/mqube/top', - }, - { - title: '个人最近更新', - docs: 'https://docs.rsshub.app/routes/multimedia#mqube', - source: '/user/:user', - target: '/mqube/user/:user', - }, - { - title: '标签最近更新', - docs: 'https://docs.rsshub.app/routes/multimedia#mqube', - source: '/search/tag/:tag', - target: '/mqube/tag/:tag', - }, - ], - }, 'last.fm': { _name: 'Last.fm', www: [ @@ -362,39 +333,6 @@ module.exports = { }, ], }, - 'ddrk.me': { - _name: '低端影视', - www: [ - { - title: '首页', - docs: 'https://docs.rsshub.app/routes/multimedia#di-duan-ying-shi', - source: '/', - target: '/ddrk/index', - }, - { - title: '标签', - docs: 'https://docs.rsshub.app/routes/multimedia#di-duan-ying-shi', - source: '/tag/:tag', - target: '/ddrk/tag/:tag', - }, - { - title: '分类', - docs: 'https://docs.rsshub.app/routes/multimedia#di-duan-ying-shi', - source: ['/category/:category', '/category/:uplevel/:category'], - target: '/ddrk/category/:category', - }, - { - title: '影视剧集更新', - docs: 'https://docs.rsshub.app/routes/multimedia#di-duan-ying-shi', - source: ['/:name', '/:name/:season'], - target: (params) => { - if (params.name !== 'category' && params.name !== 'tag' && params.name !== 'ddrklogin' && params.name !== 'about' && params.name !== 'deleted') { - return `/ddrk/update/${params.name}${params.season ? '/' + params.season : ''}`; - } - }, - }, - ], - }, 'hackerone.com': { _name: 'HackerOne', '.': [ diff --git a/lib/router.js b/lib/router.js index edfa5fb513..be80f28ae5 100644 --- a/lib/router.js +++ b/lib/router.js @@ -381,10 +381,6 @@ router.get('/iplay/home', lazyloadRouteHandler('./routes/iplay/home')); // xclient.info router.get('/xclient/app/:name', lazyloadRouteHandler('./routes/xclient/app')); -// 电影首发站 -router.get('/dysfz', lazyloadRouteHandler('./routes/dysfz/index')); -router.get('/dysfz/index', lazyloadRouteHandler('./routes/dysfz/index')); // 废弃 - // きららファンタジア router.get('/kirara/news', lazyloadRouteHandler('./routes/kirara/news')); @@ -392,9 +388,6 @@ router.get('/kirara/news', lazyloadRouteHandler('./routes/kirara/news')); router.get('/dytt', lazyloadRouteHandler('./routes/dytt/index')); router.get('/dytt/index', lazyloadRouteHandler('./routes/dytt/index')); // 废弃 -// 人生05电影网 -router.get('/rs05/rs05', lazyloadRouteHandler('./routes/rs05/rs05')); - // 趣头条 router.get('/qutoutiao/category/:cid', lazyloadRouteHandler('./routes/qutoutiao/category')); @@ -454,9 +447,6 @@ router.get('/sogou/doodles', lazyloadRouteHandler('./routes/sogou/doodles')); // 香港天文台 router.get('/hko/weather', lazyloadRouteHandler('./routes/hko/weather')); -// sankakucomplex -router.get('/sankakucomplex/post', lazyloadRouteHandler('./routes/sankakucomplex/post')); - // 技术头条 router.get('/blogread/newest', lazyloadRouteHandler('./routes/blogread/newest')); @@ -477,9 +467,6 @@ router.get('/xiachufang/popular/:timeframe?', lazyloadRouteHandler('./routes/xia // 经济观察报 router.get('/eeo/:column?/:category?', lazyloadRouteHandler('./routes/eeo/index')); -// 腾讯视频 -router.get('/tencentvideo/playlist/:id', lazyloadRouteHandler('./routes/tencent/video/playlist')); - // Vol router.get('/vol/:mode?', lazyloadRouteHandler('./routes/vol/lastupdate')); // 咚漫 @@ -523,10 +510,6 @@ router.get('/cpu/home', lazyloadRouteHandler('./routes/universities/cpu/home')); router.get('/cpu/jwc', lazyloadRouteHandler('./routes/universities/cpu/jwc')); router.get('/cpu/yjsy', lazyloadRouteHandler('./routes/universities/cpu/yjsy')); -// 字幕组 -router.get('/zimuzu/resource/:id?', lazyloadRouteHandler('./routes/zimuzu/resource')); -router.get('/zimuzu/top/:range/:type', lazyloadRouteHandler('./routes/zimuzu/top')); - // 字幕库 router.get('/zimuku/:type?', lazyloadRouteHandler('./routes/zimuku/index')); @@ -684,9 +667,6 @@ router.get('/vgtime/news', lazyloadRouteHandler('./routes/vgtime/news.js')); router.get('/vgtime/release', lazyloadRouteHandler('./routes/vgtime/release')); router.get('/vgtime/keyword/:keyword', lazyloadRouteHandler('./routes/vgtime/keyword')); -// MP4吧 -router.get('/mp4ba/:param', lazyloadRouteHandler('./routes/mp4ba')); - // anitama router.get('/anitama/:channel?', lazyloadRouteHandler('./routes/anitama/channel')); @@ -753,9 +733,6 @@ router.get('/bupt/funbox', lazyloadRouteHandler('./routes/universities/bupt/funb // 广东海洋大学 router.get('/gdoujwc', lazyloadRouteHandler('./routes/universities/gdou/jwc/jwtz')); -// 中国高清网 -router.get('/gaoqingla/:tag?', lazyloadRouteHandler('./routes/gaoqingla/latest')); - // 马良行 router.get('/mlhang', lazyloadRouteHandler('./routes/mlhang/latest')); @@ -840,9 +817,6 @@ router.get('/bing', lazyloadRouteHandler('./routes/bing/index')); // Maxjia News - DotA 2 router.get('/maxnews/dota2', lazyloadRouteHandler('./routes/maxnews/dota2')); -// 柠檬 - 私房歌 -router.get('/ningmeng/song', lazyloadRouteHandler('./routes/ningmeng/song')); - // AlgoCasts router.get('/algocasts', lazyloadRouteHandler('./routes/algocasts/all')); @@ -1064,9 +1038,6 @@ router.get('/nciae/xsxx', lazyloadRouteHandler('./routes/universities/nciae/xsxx // cfan router.get('/cfan/news', lazyloadRouteHandler('./routes/cfan/news')); -// 奈菲影视 -router.get('/nfmovies/:id?', lazyloadRouteHandler('./routes/nfmovies/index')); - // engadget router.get('/engadget/:lang?', lazyloadRouteHandler('./routes/engadget/home')); @@ -1216,9 +1187,6 @@ router.get('/chrome/webstore/extensions/:id', lazyloadRouteHandler('./routes/chr // RTHK router.get('/rthk-news/:lang/:category', lazyloadRouteHandler('./routes/rthk-news/index')); -// Yahoo!テレビ -router.get('/yahoo-jp-tv/:query', lazyloadRouteHandler('./routes/yahoo-jp-tv/index')); - // Yahoo! by Author router.get('/yahoo-author/:author', lazyloadRouteHandler('./routes/yahoo-author/index')); @@ -1281,12 +1249,6 @@ router.get('/coronavirus/yahoo-japan/:tdfk?', lazyloadRouteHandler('./routes/cor // 南京林业大学教务处 router.get('/njfu/jwc/:category?', lazyloadRouteHandler('./routes/universities/njfu/jwc')); -// MQube -router.get('/mqube/user/:user', lazyloadRouteHandler('./routes/mqube/user')); -router.get('/mqube/tag/:tag', lazyloadRouteHandler('./routes/mqube/tag')); -router.get('/mqube/latest', lazyloadRouteHandler('./routes/mqube/latest')); -router.get('/mqube/top', lazyloadRouteHandler('./routes/mqube/top')); - // Letterboxd router.get('/letterboxd/user/diary/:username', lazyloadRouteHandler('./routes/letterboxd/userdiary')); router.get('/letterboxd/user/followingdiary/:username', lazyloadRouteHandler('./routes/letterboxd/followingdiary')); @@ -1490,9 +1452,6 @@ router.get('/umass/amherst/csnews', lazyloadRouteHandler('./routes/umass/amherst router.get('/umass/amherst/ipoevents', lazyloadRouteHandler('./routes/umass/amherst/ipoevents')); router.get('/umass/amherst/ipostories', lazyloadRouteHandler('./routes/umass/amherst/ipostories')); -// 飘花电影网 -router.get('/piaohua/hot', lazyloadRouteHandler('./routes/piaohua/hot')); - // 快媒体 router.get('/kuai', lazyloadRouteHandler('./routes/kuai/index')); router.get('/kuai/:id', lazyloadRouteHandler('./routes/kuai/id')); @@ -1582,10 +1541,6 @@ router.get('/dcinside/board/:id', lazyloadRouteHandler('./routes/dcinside/board' // 荔枝FM router.get('/lizhi/user/:id', lazyloadRouteHandler('./routes/lizhi/user')); -// 场库 -router.get('/changku', lazyloadRouteHandler('./routes/changku/index')); -router.get('/changku/cate/:postid', lazyloadRouteHandler('./routes/changku/index')); - // 上海市生态环境局 router.get('/gov/shanghai/sthj', lazyloadRouteHandler('./routes/gov/shanghai/sthj')); @@ -2047,12 +2002,6 @@ router.get('/tingshen', lazyloadRouteHandler('./routes/tingshen/tingshen')); // 中华人民共和国人力资源和社会保障部 router.get('/gov/mohrss/sbjm/:category?', lazyloadRouteHandler('./routes/gov/mohrss/sbjm')); -// 深影译站 -router.get('/shinybbs/latest', lazyloadRouteHandler('./routes/shinybbs/latest')); -router.get('/shinybbs/p/:id', lazyloadRouteHandler('./routes/shinybbs/p')); -router.get('/shinybbs/page/:id?', lazyloadRouteHandler('./routes/shinybbs/index')); -router.get('/shinybbs', lazyloadRouteHandler('./routes/shinybbs/index')); - // 天眼查 router.get('/tianyancha/hot', lazyloadRouteHandler('./routes/tianyancha/hot')); @@ -2145,10 +2094,6 @@ router.get('/topbook/today', lazyloadRouteHandler('./routes/topbook/today')); // Melon router.get('/melon/chart/:category?', lazyloadRouteHandler('./routes/melon/chart')); -// 弯弯字幕组 -router.get('/wanwansub/info/:id', lazyloadRouteHandler('./routes/wanwansub/info')); -router.get('/wanwansub/:id?', lazyloadRouteHandler('./routes/wanwansub/index')); - // FIX 字幕侠 // router.get('/zimuxia/portfolio/:id', lazyloadRouteHandler('./routes/zimuxia/portfolio')); // router.get('/zimuxia/:category?', lazyloadRouteHandler('./routes/zimuxia/index')); @@ -2239,9 +2184,6 @@ router.get('/uwants/:fid', lazyloadRouteHandler('./routes/uwants')); // Now新聞 router.get('/now/news/rank', lazyloadRouteHandler('./routes/now/rank')); -// s-hentai -router.get('/s-hentai/:id?', lazyloadRouteHandler('./routes/s-hentai')); - // etherscan router.get('/etherscan/transactions/:address', lazyloadRouteHandler('./routes/etherscan/transactions')); diff --git a/lib/routes/changku/index.js b/lib/routes/changku/index.js deleted file mode 100644 index e1501c87a0..0000000000 --- a/lib/routes/changku/index.js +++ /dev/null @@ -1,39 +0,0 @@ -const got = require('@/utils/got'); -module.exports = async (ctx) => { - const url = ctx.params.postid ? `https://app.vmovier.com/apiv3/post/getPostInCate?p=1&size=10&cateid=${ctx.params.postid}` : `https://app.vmovier.com/apiv3/index/getIndexPosts/lastid/`; - const config = { - headers: { - 'user-agent': 'VmovierApp 5.7.7 / Android 10 / WIFI / 1080*2175 / 2.75', - 'content-type': 'application/x-www-form-urlencoded', - }, - }; - const res = await got({ - method: 'get', - url, - }); - const list = res.data.data.list ? res.data.data.list : res.data.data; - const items = await Promise.all( - list.map(async (list) => { - const title = list.title; - const link = `https://app.vmovier.com/apiv3/post/view?postid=${list.postid}`; - const description = await ctx.cache.tryGet(link, async () => { - const res = await got.get(link, config); - const playurl = res.data.data.content_video[0].progressive[0].url; - const desc = `

${res.data.data.intro}

`; - return desc; - }); - return Promise.resolve({ - title, - description, - author: list.creator_username, - link: `https://www.vmovier.com/${list.postid}`, - }); - }) - ); - ctx.state.data = { - title: `${ctx.params.postid ? list[0].cate[0].catename : '每日精选'}-场库`, - link: url, - description: '场库_高品质短片分享平台', - item: items, - }; -}; diff --git a/lib/routes/ddrk/index.js b/lib/routes/ddrk/index.js index 70a352a5cd..6ae8af31a7 100644 --- a/lib/routes/ddrk/index.js +++ b/lib/routes/ddrk/index.js @@ -5,7 +5,7 @@ module.exports = async (ctx) => { const name = ctx.params.name; const season = ctx.params.season; - let link = `https://ddrk.me/${name}/`; + let link = `https://ddys.pro/${name}/`; if (season) { link += `${season}/`; diff --git a/lib/routes/ddrk/list.js b/lib/routes/ddrk/list.js index 97d8651d3c..7d7407705b 100644 --- a/lib/routes/ddrk/list.js +++ b/lib/routes/ddrk/list.js @@ -3,7 +3,7 @@ const cheerio = require('cheerio'); const md5 = require('@/utils/md5'); module.exports = async (ctx) => { - const url = ctx.params.tag ? `https://ddrk.me/tag/${encodeURIComponent(ctx.params.tag)}/` : ctx.params.category ? `https://ddrk.me/category/${ctx.params.category}/` : 'https://ddrk.me/'; + const url = ctx.params.tag ? `https://ddys.pro/tag/${encodeURIComponent(ctx.params.tag)}/` : ctx.params.category ? `https://ddrk.me/category/${ctx.params.category}/` : 'https://ddys.pro/'; const response = await got(url); const $ = cheerio.load(response.data); diff --git a/lib/routes/dysfz/index.js b/lib/routes/dysfz/index.js deleted file mode 100644 index d978537331..0000000000 --- a/lib/routes/dysfz/index.js +++ /dev/null @@ -1,20 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -module.exports = async (ctx) => { - const responseData = (await got.get(`http://www.wuhaozhan.net/movie/list/?p=1`)).data; - const $ = cheerio.load(responseData); - const list = $('.pure-u-16-24').get(); - const data = { - title: '电影首发站', - link: 'http://www.wuhaozhan.net/movie/list/', - description: '高清电影', - item: list.map((item) => ({ - title: $(item).find('h2').text(), - description: $(item).find('.l-des').text(), - pubDate: new Date($(item).find('.dt').text()).toUTCString(), - link: $(item).find('.l-a').attr('href'), - })), - }; - ctx.state.data = data; -}; diff --git a/lib/routes/gaoqingla/latest.js b/lib/routes/gaoqingla/latest.js deleted file mode 100644 index 34e73727a9..0000000000 --- a/lib/routes/gaoqingla/latest.js +++ /dev/null @@ -1,37 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -module.exports = async (ctx) => { - const tag = ['bluray', '1080p', '720p', '3d', 'webdl'].includes(ctx.params.tag) ? ctx.params.tag : ''; - - const { data } = await got({ - method: 'get', - url: `http://gaoqing.la/${tag}`, - }); - - const $ = cheerio.load(data); - const list = $('#post_container > li .thumbnail > a'); - - let result = list - .map((_, ele) => { - const coverImg = $(ele).find('img').attr('src'); - const title = $(ele).attr('title'); - return { - title, - link: $(ele).attr('href'), - description: ` -

${title}

- - `.trim(), - }; - }) - .get(); - result = result.slice(0, 10); - - ctx.state.data = { - title: '中国高清网', - link: 'http://gaoqing.la', - description: $('meta[name="description"]').attr('content'), - item: result, - }; -}; diff --git a/lib/routes/mp4ba/index.js b/lib/routes/mp4ba/index.js deleted file mode 100644 index 722df02df1..0000000000 --- a/lib/routes/mp4ba/index.js +++ /dev/null @@ -1,133 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -const baseUrl = 'http://www.mp4ba.com'; - -class ParamType { - static get paramType() { - return { type: 0, search: 1 }; - } - - constructor(param) { - this._param = param; - - if (param.match(/\d{1,2}/)) { - this._type = ParamType.paramType.type; // 参数为1-2位数字即为类型RSS - } else { - this._type = ParamType.paramType.search; // 其他情况为搜索 - } - } - - get param() { - return this._param; - } - - get type() { - return this._type; - } - - get url() { - let url; - if (!this._url) { - switch (this._type) { - case ParamType.paramType.type: - url = `${baseUrl}/index/index/lists/catid/${this._param}.html`; - break; - case ParamType.paramType.search: - url = `${baseUrl}/index.php?m=search&q=${this._param}`; - break; - } - this._url = url; - } - return this._url; - } -} - -async function buildRss($, paramType, ctx) { - const $list = (selector) => $('.content').find(selector); // 列表对象 - const title = $('title').text(); - const typeString = title.substring(0, title.indexOf('_')); - let selectorPath1, - selectorPath2 = null; - - function buildDesc() { - let desc = ''; - switch (paramType.type) { - case ParamType.paramType.type: - desc = `${typeString}类型`; - selectorPath1 = '.detail .list ul li'; - selectorPath2 = 'a'; - break; - case ParamType.paramType.search: - desc = typeString; - selectorPath1 = '.search .search_content .sousuo'; - selectorPath2 = 'b a'; - break; - } - return desc; - } - - function buildItem($) { - return Promise.all( - $(selectorPath1) - .map(async (_, result) => { - const $ = cheerio.load(result); - const pubDate = new Date( - $('span') - .text() - .match(/\d{4}-\d{1,2}-\d{1,2}/) - ).toUTCString(); - const $a = $(selectorPath2); - const pageUrl = $a.attr('href'); - const { cache } = ctx; - const title = $a.text(); - const link = pageUrl; - const guid = pageUrl.match(/(\d+?).html/); - let description = null; - const enclosure_type = 'application/x-bittorrent'; - let $magnet = null; - - async function getDescription() { - const key = `Mp4Ba${pageUrl}`; - const value = await ctx.cache.get(key); - if (value) { - description = value; - const $ = cheerio.load(value); - $magnet = $('a[href^="magnet:?xt=urn:btih:"]'); - } else { - const pageData = (await got.get(pageUrl)).data; - const $page = cheerio.load(pageData); - const downloadAll = $page('#fadecon > .dow_con:nth-child(1)'); - const downloadBd = $page('#fadecon > .dow_con:nth-child(4)'); - const info_detail = $page('.content .article .box .info_con').find('.info_detail'); - const ar_banner = $page('.content .article .box .info_con').find('.ar_banner'); - $magnet = downloadAll.find('a[href^="magnet:?xt=urn:btih:"]'); - description = info_detail.html() + ar_banner.html() + downloadAll.html() + downloadBd.html(); - cache.set(key, description); - } - } - - await getDescription(); - const enclosure_url = $magnet.attr('href'); - return { title, link, description, enclosure_url, enclosure_type, guid, pubDate }; - }) - .get() - ); - } - - return { - title: `${typeString} - 高清MP4吧`, - link: paramType.url, - description: buildDesc(), - item: await buildItem($list), - }; -} - -module.exports = async (ctx) => { - const { params } = ctx; - const { param } = params; - const paramType = new ParamType(param); - const { data } = await got.get(encodeURI(paramType.url)); - const $ = cheerio.load(data); - ctx.state.data = await buildRss($, paramType, ctx); -}; diff --git a/lib/routes/mqube/latest.js b/lib/routes/mqube/latest.js deleted file mode 100644 index bb0b2b6374..0000000000 --- a/lib/routes/mqube/latest.js +++ /dev/null @@ -1,21 +0,0 @@ -const got = require('@/utils/got'); - -module.exports = async (ctx) => { - const url = 'https://mqube.net/'; - - const response = await got.get(url); - - const list = JSON.parse(response.data.match(/gon.item_list=(.*?);/)[1]) || []; - - ctx.state.data = { - title: `MQube 新着`, - link: url, - item: list.map((item) => ({ - title: item.title, - author: item.user.name, - description: `

${item.description.replace(/\n/g, '
')}`, - pubDate: new Date(item.created_at), - link: `https://mqube.net/play/${item.code}`, - })), - }; -}; diff --git a/lib/routes/mqube/tag.js b/lib/routes/mqube/tag.js deleted file mode 100644 index 8f05744548..0000000000 --- a/lib/routes/mqube/tag.js +++ /dev/null @@ -1,23 +0,0 @@ -const got = require('@/utils/got'); - -module.exports = async (ctx) => { - const tag = ctx.params.tag; - - const url = `https://mqube.net/search/tag/${encodeURIComponent(tag)}`; - - const response = await got.get(url); - - const list = JSON.parse(response.data.match(/gon.item_list=(.*?);/)[1]) || []; - - ctx.state.data = { - title: `MQube - ${tag}`, - link: url, - item: list.map((item) => ({ - title: item.title, - author: item.user.name, - description: `

${item.description.replace(/\n/g, '
')}`, - pubDate: new Date(item.created_at), - link: `https://mqube.net/play/${item.code}`, - })), - }; -}; diff --git a/lib/routes/mqube/top.js b/lib/routes/mqube/top.js deleted file mode 100644 index b9742fabaf..0000000000 --- a/lib/routes/mqube/top.js +++ /dev/null @@ -1,21 +0,0 @@ -const got = require('@/utils/got'); - -module.exports = async (ctx) => { - const url = 'https://mqube.net/'; - - const response = await got.get(url); - - const list = JSON.parse(response.data.match(/gon.right_riot_item_lists=(.*?);/)[1]) || []; - - ctx.state.data = { - title: `MQube デイリーランキング`, - link: url, - item: list.map((item) => ({ - title: item.title, - author: item.user.name, - description: `

${item.description.replace(/\n/g, '
')}`, - pubDate: new Date(item.created_at), - link: `https://mqube.net/play/${item.code}`, - })), - }; -}; diff --git a/lib/routes/mqube/user.js b/lib/routes/mqube/user.js deleted file mode 100644 index e4936a4b93..0000000000 --- a/lib/routes/mqube/user.js +++ /dev/null @@ -1,25 +0,0 @@ -const got = require('@/utils/got'); - -module.exports = async (ctx) => { - const user = ctx.params.user; - - const url = `https://mqube.net/user/${user}`; - - const response = await got.get(url); - - const list = JSON.parse(response.data.match(/gon.item_list=(.*?);/)[1]) || []; - - const username = list[0].user.name; - - ctx.state.data = { - title: `MQube - ${username}`, - link: url, - item: list.map((item) => ({ - title: item.title, - author: item.user.name, - description: `

${item.description.replace(/\n/g, '
')}`, - pubDate: new Date(item.created_at), - link: `https://mqube.net/play/${item.code}`, - })), - }; -}; diff --git a/lib/routes/nfmovies/index.js b/lib/routes/nfmovies/index.js deleted file mode 100644 index 29a29260d5..0000000000 --- a/lib/routes/nfmovies/index.js +++ /dev/null @@ -1,58 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -const host = 'https://www.nfmovies.com/'; -const mv_slot = 'https://www.nfmovies.com/video/?UID-0-0.html'; -const url_slot = 'https://www.nfmovies.com/list/?ID.html'; - -const idProps = { - 0: '首页', - 1: '电影', - 2: '电视剧', - 3: '综艺', - 4: '动漫', - 5: '奈菲独家', -}; - -module.exports = async (ctx) => { - const id = ctx.params.id || '0'; - let t_url = ''; - if (id === '0') { - t_url = host; - } else if (id === '5') { - t_url = 'https://www.nfmovies.com/search.php?searchtype=5&order=time&player=%E5%A5%88%E8%8F%B2%E7%8B%AC%E5%AE%B6%E9%AB%98%E6%B8%85%E7%89%87%E6%BA%90'; - } else { - t_url = url_slot.replace('ID', id); - } - - const response = await got({ - method: 'get', - url: t_url, - }); - - const $ = cheerio.load(response.data); - const items = []; - $('.col-md-2').each(function () { - const item = $(this); - const link = mv_slot.replace( - 'UID', - item - .find('a') - .attr('href') - .match(/\d{4,}/g) - ); - const src = host + item.children('a').attr('data-original'); - items.push({ - title: item.find('h5').text(), - description: `
` + item.html(), - link, - }); - }); - - ctx.state.data = { - title: `${idProps[id]} - 奈菲影视`, - link: t_url, - description: `${idProps[id]} - 奈菲影视-永久免费无广告的福利超清影视站,没有套路,完全免费!`, - item: items, - }; -}; diff --git a/lib/routes/ningmeng/song.js b/lib/routes/ningmeng/song.js deleted file mode 100644 index 86e962a0cc..0000000000 --- a/lib/routes/ningmeng/song.js +++ /dev/null @@ -1,77 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -const sourceTimezoneOffset = -8; -module.exports = async (ctx) => { - const url = 'http://www.ningmeng.name/archives/category/%E7%A7%81%E6%88%BF%E6%AD%8C'; - const res = await got.get(url); - const $$ = cheerio.load(res.data); - const postUrls = $$('.site-main .posts-wrapper .grid-item a.u-permalink') - .slice(0, 3) - .map((i, el) => $$(el).attr('href')) - .get(); - - const postItemGroups = await Promise.all( - postUrls.map(async (postUrl) => { - const cache = await ctx.cache.get(postUrl); - if (cache) { - return JSON.parse(cache); - } - - const postRes = await got.get(postUrl); - const $ = cheerio.load(postRes.data); - - let time = $('.iconfont.icon-shijian + span.count').text(); - time = time ? new Date(time) : new Date(); - time.setTime(time.getTime() + (sourceTimezoneOffset - time.getTimezoneOffset() / 60) * 60 * 60 * 1000); - const pubDate = time.toUTCString(); - - const content = $('.entry-content'); - - const mp3s = content.find('.karma-by-kadar__simple-player'); - const mp3Urls = mp3s.map((i, el) => $(el).attr('data-src')).get(); - - const images = content.find('img'); - const imageUrls = images.map((i, el) => $(el).attr('src')).get(); - - const playerTextRe = /\n*play_circle_filledpause_circle_filledvolume_downvolume_upvolume_off\n*/g; - const songSplitterRe = /—+.+—+/g; - const texts = content - .text() - .replace(songSplitterRe, '') - .split(playerTextRe) - .map((p) => p.trim().split(/\n+/)); - - const out = mp3Urls.map((mp3Url, i) => { - const ss = mp3Url.split('/'); - const filename = ss[ss.length - 1].split('.')[0]; - const [title, artist] = filename.split('-'); - const description = [``, `

${texts[i][0]}

`, `

${texts[i][1]}

`].join(); - - return { - title: unescape(title).trim(), - author: unescape(artist).trim(), - link: mp3Url, - guid: mp3Url, - description, - pubDate, - }; - }); - - ctx.cache.set(postUrl, JSON.stringify(out)); - - return out; - }) - ); - - let items = []; - postItemGroups.forEach((group) => { - items = items.concat(group); - }); - - ctx.state.data = { - title: '柠檬私房歌', - link: 'http://www.ningmeng.name', - item: items, - }; -}; diff --git a/lib/routes/piaohua/hot.js b/lib/routes/piaohua/hot.js deleted file mode 100644 index a9202691db..0000000000 --- a/lib/routes/piaohua/hot.js +++ /dev/null @@ -1,37 +0,0 @@ -const url = require('url'); -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -module.exports = async (ctx) => { - const link = 'https://www.piaohua.com/'; - const response = await got({ - method: 'get', - url: link, - }); - const $ = cheerio.load(response.data); - const list = $('ul.ul-imgtxt1.row li') - .map((_, item) => { - item = $(item); - return { - title: item.find('h3').text(), - link: url.resolve(link, item.find('a').attr('href')), - pubDate: new Date(item.find('span').text()).toUTCString(), - }; - }) - .get(); - - ctx.state.data = { - title: '飘花电影网 - 今日推荐', - link, - item: await Promise.all( - list.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('div.m-text1').html(); - return item; - }) - ) - ), - }; -}; diff --git a/lib/routes/rs05/rs05.js b/lib/routes/rs05/rs05.js deleted file mode 100644 index 3cacfb132f..0000000000 --- a/lib/routes/rs05/rs05.js +++ /dev/null @@ -1,35 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -module.exports = async (ctx) => { - const response = await got({ - method: 'get', - url: 'http://www.wuhaozhan.net/movie/list/', - headers: { - Referer: 'http://www.wuhaozhan.net/movie/list/', - }, - }); - - const data = response.data; - - const $ = cheerio.load(data); - const list = $('.pure-g .l-box'); - ctx.state.data = { - title: '人生05电影更新列表', - link: 'http://www.wuhaozhan.net/movie/list/', - description: '人生05电影更新列表', - item: - list && - list - .map((index, item) => { - item = $(item); - return { - title: item.find('.pr h1 a').text(), - description: item.find('.pr h2').text() + '', - pubDate: item.find('.pr .dt').text(), - link: item.find('.l-a').attr('href'), - }; - }) - .get(), - }; -}; diff --git a/lib/routes/s-hentai/index.js b/lib/routes/s-hentai/index.js deleted file mode 100644 index 8aaaa34e29..0000000000 --- a/lib/routes/s-hentai/index.js +++ /dev/null @@ -1,64 +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 || 'ready-to-download'; - - const rootUrl = 'https://s-hentai.org'; - const currentUrl = `${rootUrl}/${id === 'ready-to-download' ? id : `menu/${id}`}`; - - const response = await got({ - method: 'get', - url: currentUrl, - }); - - const $ = cheerio.load(response.data); - - const list = $('.block-product') - .slice(0, ctx.query.limit ? parseInt(ctx.query.limit) : 20) - .map((_, item) => { - item = $(item); - - const a = item.find('.name-product a'); - - return { - title: a.text(), - link: a.attr('href'), - pubDate: parseDate(item.find('.post-date').text().trim().split(' ')[0], 'YYYY年MM月DD日'), - }; - }) - .get(); - - const items = await Promise.all( - list.map((item) => - ctx.cache.tryGet(item.link, async () => { - const detailResponse = await got({ - method: 'get', - url: item.link, - }); - - const content = cheerio.load(detailResponse.data); - - const images = content('#sync1'); - const description = content('#description-deital'); - - content('.single-support').remove(); - - item.enclosure_url = content('.file-download-comment a').eq(0).attr('href'); - item.enclosure_type = 'application/x-bittorrent'; - - item.description = (images ? images.html() : '') + content('.detial-short').html() + (description ? description.html() : ''); - item.category = detailResponse.data.match(/(.*)<\/a>/g).map((category) => category.match(/>(.*) { - const response = await got({ - method: 'get', - url: 'https://idol.sankakucomplex.com/post/atom', - }); - - const $ = cheerio.load(response.data); - - ctx.state.data = { - title: 'Posts | Idol Complex - Idol & Cosplay Images', - link: 'https://idol.sankakucomplex.com/', - item: $('entry') - .map((index, item) => { - item = $(item); - - const title = item.find('title').text(); - const link = `https:${item.find('link').attr('href')}`; - const pubDate = new Date(item.find('updated').text()).toUTCString(); - const author = item.find('author name').text(); - const summary = item.find('summary').text(); - const id = 'x-rss'; - const $2 = cheerio.load(`
${item.find('content').html()}
`); - - $2('a').each((index, item) => { - item = $2(item); - item.attr('href', `https:${item.attr('href')}`); - }); - $2('img').each((index, item) => { - item = $2(item); - item.attr('src', `https:${item.attr('src')}`); - item.attr('referrerpolicy', 'no-referrer'); - }); - - const content = $2(`#${id}`).html(); - const description = `${summary}
${content}`; - - return { - title, - link, - pubDate, - author, - description, - }; - }) - .get(), - }; -}; diff --git a/lib/routes/shinybbs/index.js b/lib/routes/shinybbs/index.js deleted file mode 100644 index f935c9461d..0000000000 --- a/lib/routes/shinybbs/index.js +++ /dev/null @@ -1,60 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -module.exports = async (ctx) => { - const id = ctx.params.id || ''; - - const rootUrl = 'https://sub.shinybbs.vip'; - const currentUrl = `${rootUrl}/?page_id=${id}`; - const response = await got({ - method: 'get', - url: currentUrl, - }); - - const $ = cheerio.load(response.data); - - const list = $('.elementor-button-link, .kb-gallery-item-link') - .slice(0, 10) - .map((_, item) => { - item = $(item); - return { - link: item.attr('href'), - }; - }) - .get(); - - const items = await Promise.all( - list.map((item) => - ctx.cache.tryGet(item.link, async () => { - const detailResponse = await got({ - method: 'get', - url: item.link, - }); - const content = cheerio.load(detailResponse.data); - - content('.elementor-section').last().remove(); - content('.elementor-section').last().remove(); - - content('.elementor-tabs-wrapper').remove(); - - item.title = content('.post-title').text(); - item.description = content('.elementor-inner, .post-content').html(); - item.pubDate = new Date(content('.post-date').text().replace(/年|月/g, '-').replace('日', '')).toUTCString(); - - item.enclosure_type = 'application/x-bittorrent'; - - const enclosureUrl = content('.elementor-tab-content a').last().attr('href'); - - item.enclosure_url = enclosureUrl ? enclosureUrl.replace('http://magnet', 'magnet') : ''; - - return item; - }) - ) - ); - - ctx.state.data = { - title: $('title').text(), - link: currentUrl, - item: items, - }; -}; diff --git a/lib/routes/shinybbs/latest.js b/lib/routes/shinybbs/latest.js deleted file mode 100644 index 41df9c3685..0000000000 --- a/lib/routes/shinybbs/latest.js +++ /dev/null @@ -1,57 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -module.exports = async (ctx) => { - const rootUrl = 'https://sub.shinybbs.vip'; - const currentUrl = `${rootUrl}/?page_id=152`; - const response = await got({ - method: 'get', - url: currentUrl, - }); - - const $ = cheerio.load(response.data); - - const list = $('.wp-block-latest-posts__list li a') - .slice(0, 10) - .map((_, item) => { - item = $(item); - return { - title: item.text(), - link: item.attr('href'), - pubDate: new Date(item.next('time').attr('datetime')).toUTCString(), - }; - }) - .get(); - - const items = await Promise.all( - list.map((item) => - ctx.cache.tryGet(item.link, async () => { - const detailResponse = await got({ - method: 'get', - url: item.link, - }); - const content = cheerio.load(detailResponse.data); - - content('.elementor-section').last().remove(); - content('.elementor-section').last().remove(); - - content('.elementor-tabs-wrapper').remove(); - - item.description = content('.elementor-inner').html(); - item.enclosure_type = 'application/x-bittorrent'; - - const enclosureUrl = content('.elementor-tab-content a').last().attr('href'); - - item.enclosure_url = enclosureUrl ? enclosureUrl.replace('http://magnet', 'magnet') : ''; - - return item; - }) - ) - ); - - ctx.state.data = { - title: $('title').text(), - link: currentUrl, - item: items, - }; -}; diff --git a/lib/routes/shinybbs/p.js b/lib/routes/shinybbs/p.js deleted file mode 100644 index 853af59f28..0000000000 --- a/lib/routes/shinybbs/p.js +++ /dev/null @@ -1,38 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -module.exports = async (ctx) => { - const id = ctx.params.id; - - const rootUrl = 'https://sub.shinybbs.vip'; - const currentUrl = `${rootUrl}/?p=${id}`; - const response = await got({ - method: 'get', - url: currentUrl, - }); - - const $ = cheerio.load(response.data); - - $('.elementor-section').last().remove(); - $('.elementor-section').last().remove(); - - $('.elementor-tabs-wrapper').remove(); - - const items = $('.elementor-tab-content a') - .map((_, item) => { - item = $(item); - return { - title: item.text(), - link: item.attr('href'), - enclosure_url: item.attr('href'), - enclosure_type: 'application/x-bittorrent', - }; - }) - .get(); - - ctx.state.data = { - title: `${$('.post-title').text()} - 深影译站`, - link: currentUrl, - item: items.reverse(), - }; -}; diff --git a/lib/routes/tencent/video/playlist.js b/lib/routes/tencent/video/playlist.js deleted file mode 100644 index a6cb95df34..0000000000 --- a/lib/routes/tencent/video/playlist.js +++ /dev/null @@ -1,46 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -module.exports = async (ctx) => { - const { id } = ctx.params; - const link = `https://v.qq.com/detail/${id[0]}/${id}.html`; - const page = await got.get(link); - const $ = cheerio.load(page.data); - - let vtype = 4; - // 支持地址 https://v.qq.com/detail/8/84842.html - let items = null; - if (id[0] === '8') { - vtype = 1; - const episodes = await got.get(`https://s.video.qq.com/get_playsource?id=${id}&plat=2&type=${vtype}&data_type=2&video_type=3&range=1&plname=qq&otype=json&num_mod_cnt=20&callback=a&_t=${Date.now()}`); - const playList = JSON.parse(episodes.data.slice(2, -1)).playlist[0].videoPlayList; - items = playList.map((video) => { - const video_id = video.playUrl.split('=')[1]; - const info = { - title: video.title, - link: video.playUrl, - description: ` - - `, - }; - return info; - }); - } else { - const episodes = await got.get(`https://s.video.qq.com/get_playsource?id=${id}&plat=2&type=${vtype}&data_type=2&video_type=3&range=1&plname=qq&otype=json&num_mod_cnt=20&callback=a&_t=${Date.now()}`); - const playList = JSON.parse(episodes.data.slice(2, -1)).PlaylistItem.videoPlayList; - items = playList.map((video) => ({ - title: video.title, - link: video.playUrl, - description: ` - - `, - })); - } - - ctx.state.data = { - title: $('title').text(), - link, - description: $('meta[name=description]').attr('content'), - item: items, - }; -}; diff --git a/lib/routes/wanwansub/index.js b/lib/routes/wanwansub/index.js deleted file mode 100644 index 3406695d80..0000000000 --- a/lib/routes/wanwansub/index.js +++ /dev/null @@ -1,57 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -module.exports = async (ctx) => { - const id = ctx.params.id || '139'; - - const rootUrl = 'http://wanwansub.com'; - const currentUrl = `${rootUrl}/node/${id}`; - const response = await got({ - method: 'get', - url: currentUrl, - }); - - const $ = cheerio.load(response.data); - - const list = $('.pg-item a') - .slice(0, 10) - .map((_, item) => { - item = $(item); - return { - title: item.text(), - link: `${rootUrl}${item.attr('href')}`, - }; - }) - .get(); - - const items = await Promise.all( - list.map((item) => - ctx.cache.tryGet(item.link, async () => { - const detailResponse = await got({ - method: 'get', - url: item.link, - }); - const content = cheerio.load(detailResponse.data); - - content('.button').remove(); - - const links = detailResponse.data.match(/
磁力<\/a>/g); - - if (links) { - item.enclosure_type = 'application/x-bittorrent'; - item.enclosure_url = links.pop().match(/磁力<\/a>/)[1]; - } - - item.description = content('.content-box').html(); - - return item; - }) - ) - ); - - ctx.state.data = { - title: $('title').text(), - link: currentUrl, - item: items, - }; -}; diff --git a/lib/routes/wanwansub/info.js b/lib/routes/wanwansub/info.js deleted file mode 100644 index 7cd978654b..0000000000 --- a/lib/routes/wanwansub/info.js +++ /dev/null @@ -1,44 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -module.exports = async (ctx) => { - const id = ctx.params.id; - - const rootUrl = 'http://wanwansub.com'; - const currentUrl = `${rootUrl}/info/${id}`; - const response = await got({ - method: 'get', - url: currentUrl, - }); - - const $ = cheerio.load(response.data); - - const items = $('.lightbox-image') - .nextAll('p') - .slice(3) - .map((_, item) => { - const i = {}; - - item = $(item); - - item.find('a').each(function () { - if ($(this).text() === '磁力') { - i.enclosure_url = $(this).attr('href'); - i.enclosure_type = 'application/x-bittorrent'; - } - }); - - i.description = `

${item.html()}

`; - i.title = item.text().split(' ')[0]; - i.link = currentUrl; - - return i; - }) - .get(); - - ctx.state.data = { - title: $('title').text(), - link: currentUrl, - item: items, - }; -}; diff --git a/lib/routes/yahoo-jp-tv/index.js b/lib/routes/yahoo-jp-tv/index.js deleted file mode 100644 index 6b29fe9207..0000000000 --- a/lib/routes/yahoo-jp-tv/index.js +++ /dev/null @@ -1,21 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); -const querystring = require('querystring'); - -module.exports = async (ctx) => { - const query = querystring.stringify({ q: ctx.params.query }); - const link = `https://tv.yahoo.co.jp/search/?${query}`; - const response = await got(link); - const $ = cheerio.load(response.body); - const [title] = $('.search_result').find('p').text().split(':'); - const item = $('.programlist li') - .map((index, item) => { - const $item = $(item); - const title = `${$item.find('.leftarea').text().replace(/\n/g, '')} ${$item.find('.yjLS').text()}`; - const link = `https://tv.yahoo.co.jp${$item.find('div.rightarea p.yjLS.pb5p a').attr('href')}`; - const description = $item.find('p.yjMS:nth-child(3)').text(); - return { title, description, link }; - }) - .get(); - ctx.state.data = { title, link, item }; -}; diff --git a/lib/routes/zimuku/index.js b/lib/routes/zimuku/index.js index 915f835a19..2031493779 100644 --- a/lib/routes/zimuku/index.js +++ b/lib/routes/zimuku/index.js @@ -3,7 +3,7 @@ const cheerio = require('cheerio'); module.exports = async (ctx) => { const { type = 'mv' } = ctx.params; - const baseUrl = 'https://www.zimuku.org'; + const baseUrl = 'https://srtku.com'; const url = `${baseUrl}/newsubs?t=${type}`; const response = await got(url); const $ = cheerio.load(response.data); diff --git a/lib/routes/zimuzu/resource.js b/lib/routes/zimuzu/resource.js deleted file mode 100644 index 64ec5d8de1..0000000000 --- a/lib/routes/zimuzu/resource.js +++ /dev/null @@ -1,19 +0,0 @@ -const parser = require('@/utils/rss-parser'); - -module.exports = async (ctx) => { - const { id = 0 } = ctx.params; - const feed = await parser.parseURL(`http://rss.rrys.tv/rss/feed/${id}`); - feed.items.map((item) => { - item.link = null; - item.enclosure_url = item.magnet; - item.enclosure_type = 'application/x-bittorrent'; - return item; - }); - - ctx.state.data = { - title: feed.title, - link: feed.link, - description: feed.description, - item: feed.items, - }; -}; diff --git a/lib/routes/zimuzu/top.js b/lib/routes/zimuzu/top.js deleted file mode 100644 index babd83b006..0000000000 --- a/lib/routes/zimuzu/top.js +++ /dev/null @@ -1,27 +0,0 @@ -const cheerio = require('cheerio'); -const got = require('@/utils/got'); - -module.exports = async (ctx) => { - const { range, type } = ctx.params; - - const url = `http://www.rrys2019.com/html/top/${range}_${type}_list.html`; - const response = await got(url); - - const $ = cheerio.load(response.data); - const list = $('li.clearfix'); - - ctx.state.data = { - title: `${$('.title').text().trim()}-字幕组`, - link: url, - item: list - .map((_, item) => { - item = $(item); - return { - title: item.find('.info a').first().text(), - description: item.find('.info p').first().html() + '
' + item.find('.a1 p').html() + '
' + ``, - link: item.find('.info a').first().attr('href'), - }; - }) - .get(), - }; -}; diff --git a/lib/v2/aliyundrive/files.js b/lib/v2/aliyundrive/files.js deleted file mode 100644 index c23d2a1678..0000000000 --- a/lib/v2/aliyundrive/files.js +++ /dev/null @@ -1,59 +0,0 @@ -const got = require('@/utils/got'); - -module.exports = async (ctx) => { - const { share_id, parent_file_id } = ctx.params; - const url = `https://www.aliyundrive.com/s/${share_id}${parent_file_id ? `/folder/${parent_file_id}` : ''}`; - - const headers = { - referer: 'https://www.aliyundrive.com/', - origin: 'https://www.aliyundrive.com', - 'x-canary': 'client=web,app=share,version=v2.3.1', - }; - - const shareRes = await got.post('https://api.aliyundrive.com/adrive/v3/share_link/get_share_by_anonymous', { - params: { - share_id, - }, - json: { - share_id, - }, - headers, - }); - - const tokenRes = await got.post('https://api.aliyundrive.com/v2/share_link/get_share_token', { - headers, - json: { - share_id, - }, - }); - const share_token = tokenRes.data.share_token; - - const listRes = await got.post('https://api.aliyundrive.com/adrive/v2/file/list_by_share', { - headers: { - ...headers, - 'x-share-token': share_token, - }, - json: { - limit: 100, - order_by: 'created_at', - order_direction: 'DESC', - parent_file_id: parent_file_id || 'root', - share_id, - }, - }); - - const result = listRes.data.items.map((item) => ({ - title: item.name, - description: item.name + (item.thumbnail ? `` : ''), - link: url, - pubDate: item.created_at, - updated: item.updated_at, - guid: item.file_id, - })); - - ctx.state.data = { - title: `${shareRes.data.display_name || `${share_id}${parent_file_id ? `-${parent_file_id}` : ''}`}-阿里云盘`, - link: url, - item: result, - }; -}; diff --git a/lib/v2/aliyundrive/maintainer.js b/lib/v2/aliyundrive/maintainer.js deleted file mode 100644 index c412a619a4..0000000000 --- a/lib/v2/aliyundrive/maintainer.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - '/files/:share_id/:parent_file_id?': ['DIYgod'], -}; diff --git a/lib/v2/aliyundrive/radar.js b/lib/v2/aliyundrive/radar.js deleted file mode 100644 index c501f565fc..0000000000 --- a/lib/v2/aliyundrive/radar.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - 'aliyundrive.com': { - _name: '阿里云盘', - www: [ - { - title: '文件列表', - docs: 'https://docs.rsshub.app/routes/programming#a-li-yun-pan', - source: ['/s/:share_id', '/s/:share_id/folder/:parent_file_id'], - target: '/aliyundrive/files/:share_id/:parent_file_id?', - }, - ], - }, -}; diff --git a/lib/v2/aliyundrive/router.js b/lib/v2/aliyundrive/router.js deleted file mode 100644 index faa28adf49..0000000000 --- a/lib/v2/aliyundrive/router.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = (router) => { - router.get('/files/:share_id/:parent_file_id?', require('./files')); -}; diff --git a/lib/v2/gaze/maintainer.js b/lib/v2/gaze/maintainer.js deleted file mode 100644 index 863472a9b4..0000000000 --- a/lib/v2/gaze/maintainer.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - '/update/:mid': ['zytomorrow'], -}; diff --git a/lib/v2/gaze/radar.js b/lib/v2/gaze/radar.js deleted file mode 100644 index cca5edb5ec..0000000000 --- a/lib/v2/gaze/radar.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - 'gaze.run': { - _name: '注视影视', - '.': [ - { - title: '更新通知', - docs: 'https://docs.rsshub.app/routes//multimedia#gaze-run', - source: ['/play/:mid'], - target: (params) => `/gaze/update/${params.mid}`, - }, - ], - }, -}; diff --git a/lib/v2/gaze/router.js b/lib/v2/gaze/router.js deleted file mode 100644 index 49eaf43c52..0000000000 --- a/lib/v2/gaze/router.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = function (router) { - router.get('/update/:mid', require('./update')); -}; diff --git a/lib/v2/gaze/templates/update.art b/lib/v2/gaze/templates/update.art deleted file mode 100644 index 919f938ec1..0000000000 --- a/lib/v2/gaze/templates/update.art +++ /dev/null @@ -1,4 +0,0 @@ -
diff --git a/lib/v2/gaze/update.js b/lib/v2/gaze/update.js deleted file mode 100644 index ad59a69a9d..0000000000 --- a/lib/v2/gaze/update.js +++ /dev/null @@ -1,27 +0,0 @@ -const got = require('@/utils/got'); -const { art } = require('@/utils/render'); -const path = require('path'); -const { parseDate } = require('@/utils/parse-date'); -const timezone = require('@/utils/timezone'); - -// 站长提供的API -const rootUrl = 'https://gaze.run/3e47b75000b0924b6c9ba5759a7cf15d'; - -module.exports = async (ctx) => { - const mid = ctx.params.mid; - const response = await got.post(rootUrl, { form: { mid } }); - const data = response.data.data; - - ctx.state.data = { - title: `gaze.run影视更新通知 - ${data.name}`, - link: `https://gaze.run/play/${mid}`, - item: [ - { - title: `${data.name}-第${data.episodes}集`, - description: art(path.resolve(__dirname, './templates/update.art'), { data }), - link: `https://gaze.run/play/${mid}`, - pubDate: timezone(parseDate(data.update_time), +8), - }, - ], - }; -}; diff --git a/lib/v2/ibc/maintainer.js b/lib/v2/ibc/maintainer.js deleted file mode 100644 index ff579a5d34..0000000000 --- a/lib/v2/ibc/maintainer.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - '/maitta': ['fengkx'], - '/radio/:id?': ['nczitzk'], -}; diff --git a/lib/v2/ibc/maitta.js b/lib/v2/ibc/maitta.js deleted file mode 100644 index 3a06ba04e8..0000000000 --- a/lib/v2/ibc/maitta.js +++ /dev/null @@ -1,32 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); -const url = 'https://www.ibc.co.jp/radio/maitta/audio/'; -const { parseDate } = require('@/utils/parse-date'); - -module.exports = async (ctx) => { - const res = await got(url); - const $ = cheerio.load(res.data); - const items = $('.up').toArray(); - ctx.state.data = { - title: 'IBCラジオ イヤーマイッタマイッタ|IBC岩手放送', - link: 'http://www.ibc.co.jp/radio/maitta/audio', - description: $('meta[name=description]').attr('content'), - itunes_author: '水越アナと大塚アナ', - image: 'https://cdn.ibc.co.jp/radio/maitta/audio/images/header.png', - language: 'ja', - item: items.map((item) => { - item = $(item); - const link = new URL(item.find('a').attr('href'), url).href; - const uid = link.match(/\/(\d+)\/$/)[1]; - return { - title: item.find('h3').text(), - description: item.find('.audio_intro').text().trim(), - link, - pubDate: parseDate(item.find('.onair_date').text().split('日')[0].replace(/年|月/g, '-')), - itunes_item_image: 'https://assets.blubrry.com/coverart/300/357155.png', - enclosure_url: `https://media-data.cdn.ibc.co.jp/out/sound/28_${uid}/28_${uid}.mp3`, // 音频链接 - enclosure_type: 'audio/mpeg', - }; - }), - }; -}; diff --git a/lib/v2/ibc/radar.js b/lib/v2/ibc/radar.js deleted file mode 100644 index bfc531e011..0000000000 --- a/lib/v2/ibc/radar.js +++ /dev/null @@ -1,19 +0,0 @@ -module.exports = { - 'ibc.co.jp': { - _name: 'IBC 岩手放送', - '.': [ - { - title: 'イヤーマイッタマイッタ', - docs: 'https://docs.rsshub.app/routes/multimedia#ibc-yan-shou-fang-song', - source: ['/radio/maitta/audio', '/'], - target: '/ibc/maitta', - }, - { - title: 'ラジオ', - docs: 'https://docs.rsshub.app/routes/multimedia#ibc-yan-shou-fang-song', - source: ['/radio/:id/audio', '/'], - target: '/ibc/radio/:id?', - }, - ], - }, -}; diff --git a/lib/v2/ibc/radio.js b/lib/v2/ibc/radio.js deleted file mode 100644 index 3b10610e39..0000000000 --- a/lib/v2/ibc/radio.js +++ /dev/null @@ -1,73 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); -const timezone = require('@/utils/timezone'); -const { parseDate } = require('@/utils/parse-date'); -const { art } = require('@/utils/render'); -const path = require('path'); - -module.exports = async (ctx) => { - const id = ctx.params.id ?? 'maitta'; - const limit = ctx.query.limit ? parseInt(ctx.query.limit) : 150; - - const rootUrl = 'https://www.ibc.co.jp'; - const currentUrl = `${rootUrl}/radio/${id}/audio/`; - - let response = await got({ - method: 'get', - url: currentUrl, - }); - - let $ = cheerio.load(response.data); - - const image = $('meta[property="og:image"]').attr('content'); - - let radioId = $('link[title="RSS"]').attr('href')?.split('/rss/').pop().replace(/\/$/, '') ?? ''; - - let items = $('.audio_list section').toArray(); - - if (!radioId) { - const item = $(items[0]); - - response = await got({ - method: 'get', - url: new URL(item.find('a').attr('href'), rootUrl).href, - }); - - $ = cheerio.load(response.data); - - radioId = $('audio') - .attr('src') - .match(/\/sound\/(\d+)_/)[1]; - } - - items = items.slice(0, limit).map((item) => { - item = $(item); - - const link = new URL(item.find('a').attr('href'), rootUrl).href; - const audioId = link.match(/\/aitem\/(\d+)/)[1]; - const audio = `https://media-data.cdn.ibc.co.jp/out/sound/${radioId}_${audioId}/${radioId}_${audioId}.mp3`; - - return { - link, - title: item.find('h3').text(), - pubDate: timezone(parseDate(item.find('.update_date').text(), 'YYYY年MM月DD日'), +9), - enclosure_url: audio, - enclosure_type: 'audio/mpeg', - itunes_item_image: image, - description: art(path.join(__dirname, 'templates/description.art'), { - description: item.find('.audio_intro').text(), - audio, - }), - }; - }); - - ctx.state.data = { - title: $('title').text() || `IBC岩手放送|${$('.programinfo h3').text()}`, - link: currentUrl, - item: items, - description: $('meta[property="og:description"]').attr('content'), - itunes_author: 'IBC岩手放送', - image, - allowEmpty: true, - }; -}; diff --git a/lib/v2/ibc/router.js b/lib/v2/ibc/router.js deleted file mode 100644 index 775e1b992e..0000000000 --- a/lib/v2/ibc/router.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = (router) => { - router.get('/maitta', require('./maitta')); - router.get('/radio/:id?', require('./radio')); -}; diff --git a/lib/v2/ibc/templates/description.art b/lib/v2/ibc/templates/description.art deleted file mode 100644 index 565c5f2f8b..0000000000 --- a/lib/v2/ibc/templates/description.art +++ /dev/null @@ -1,6 +0,0 @@ -{{ if description }} -

{{ description }}

-{{ /if }} -{{ if audio }} - -{{ /if }} \ No newline at end of file diff --git a/lib/v2/mtime/maintainer.js b/lib/v2/mtime/maintainer.js deleted file mode 100644 index 80ea9ed532..0000000000 --- a/lib/v2/mtime/maintainer.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - '/news': ['TsSmartTT'], -}; diff --git a/lib/v2/mtime/news.js b/lib/v2/mtime/news.js deleted file mode 100644 index fa48d54ba0..0000000000 --- a/lib/v2/mtime/news.js +++ /dev/null @@ -1,52 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); -const timezone = require('@/utils/timezone'); -const { parseDate } = require('@/utils/parse-date'); -const asyncPool = require('tiny-async-pool'); - -module.exports = async (ctx) => { - const link = 'http://news.mtime.com'; - const response = await got(link, { - https: { - rejectUnauthorized: false, - }, - }); - const $ = cheerio.load(response.data); - const list = $('ul.left-cont.fix li') - .toArray() - .map((item) => { - item = $(item); - return { - title: item.find('h4 a').text(), - link: item.find('h4 a').attr('href'), - }; - }); - - const items = []; - for await (const item of asyncPool(4, list, (item) => - ctx.cache.tryGet(item.link, async () => { - const detailResponse = await got(item.link); - const content = cheerio.load(detailResponse.data); - - content('.DRE-subject-wrapper').remove(); - - item.author = content('.editor').text().replace('编辑:', ''); - item.description = content('.body').first().html(); - item.pubDate = timezone(parseDate(content('.userCreateTime').text()), 8); - item.category = content('.keyword a') - .toArray() - .map((item) => content(item).text()); - - return item; - }) - )) { - items.push(item); - } - - ctx.state.data = { - title: $('head title').text().trim(), - link, - image: 'http://static1.mtime.cn/favicon.ico', - item: items, - }; -}; diff --git a/lib/v2/mtime/radar.js b/lib/v2/mtime/radar.js deleted file mode 100644 index 968a6d07a8..0000000000 --- a/lib/v2/mtime/radar.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - 'mtime.com': { - _name: '时光网', - news: [ - { - title: '时光新闻', - docs: 'https://docs.rsshub.app/routes/multimedia#shi-guang-wang', - source: '/', - target: '/mtime/news', - }, - ], - }, -}; diff --git a/lib/v2/mtime/router.js b/lib/v2/mtime/router.js deleted file mode 100644 index 69a5972f6a..0000000000 --- a/lib/v2/mtime/router.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = function (router) { - router.get('/news', require('./news')); -}; diff --git a/lib/v2/prestige-av/maintainer.js b/lib/v2/prestige-av/maintainer.js deleted file mode 100644 index d80b41bf19..0000000000 --- a/lib/v2/prestige-av/maintainer.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - '/series/:mid/:sort?': ['minimalistrojan'], -}; diff --git a/lib/v2/prestige-av/radar.js b/lib/v2/prestige-av/radar.js deleted file mode 100644 index d2db6d0e65..0000000000 --- a/lib/v2/prestige-av/radar.js +++ /dev/null @@ -1,18 +0,0 @@ -module.exports = { - 'prestige-av.com': { - _name: 'Prestige 蚊香社', - '.': [ - { - title: '系列作品', - docs: 'https://docs.rsshub.app/routes/multimedia#prestige-wen-xiang-she', - source: ['/goods/goods_list.php'], - target: (_params, url) => { - const link = new URL(url); - if (link.searchParams.get('mode') === 'series') { - return link.searchParams.has('sort') ? `/prestige-av/series/${link.searchParams.get('mid')}/${link.searchParams.get('sort')}` : `/prestige-av/series/${link.searchParams.get('mid')}`; - } - }, - }, - ], - }, -}; diff --git a/lib/v2/prestige-av/router.js b/lib/v2/prestige-av/router.js deleted file mode 100644 index c0f6782948..0000000000 --- a/lib/v2/prestige-av/router.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = (router) => { - router.get('/series/:mid/:sort?', require('./series')); -}; diff --git a/lib/v2/prestige-av/series.js b/lib/v2/prestige-av/series.js deleted file mode 100644 index 2897d5acc6..0000000000 --- a/lib/v2/prestige-av/series.js +++ /dev/null @@ -1,42 +0,0 @@ -const cheerio = require('cheerio'); - -module.exports = async (ctx) => { - const browser = await require('@/utils/puppeteer')(); - - const id = ctx.params.mid; - const sort = ctx.params.sort ?? 'near'; - - const page = await browser.newPage(); - const link = `https://www.prestige-av.com/goods/goods_list.php?mode=series&mid=${id}&count=100&sort=${sort}`; - await page.setRequestInterception(true); - page.on('request', (request) => { - request.resourceType() === 'document' || request.resourceType() === 'script' ? request.continue() : request.abort(); - }); - await page.goto(link); - await page.waitForSelector('.buttons'); - await page.click('#AC'); - await page.waitForSelector('#body_goods'); - const html = await page.evaluate(() => document.documentElement.innerHTML); - browser.close(); - - const $ = cheerio.load(html); - const list = $('div#body_goods li'); - - ctx.state.data = { - title: `【Prestige】${$('div[class=search_title_layout_01]').children('h1').first().text().replace('シリーズ ▶ ', '').replace(/\s*/g, '')}`, - description: $('meta[name=Description]').attr('content'), - link: `https://www.prestige-av.com/goods/goods_list.php?mode=series&mid=${id}&sort=${sort}`, - item: - list && - list - .map((index, item) => { - item = $(item); - return { - title: item.find('span.title').text().replace(/\s*/g, ''), - description: item.find('div.spec_layout').children('p').first().text().replace(/\s*/g, '') + '
' + ``, - link: item.find('a').attr('href'), - }; - }) - .get(), - }; -}; diff --git a/lib/v2/tencent/radar.js b/lib/v2/tencent/radar.js index 69567bfa01..ce16e6f3ee 100644 --- a/lib/v2/tencent/radar.js +++ b/lib/v2/tencent/radar.js @@ -37,23 +37,6 @@ module.exports = { target: '/tencent/pvp/newsindex/all', }, ], - v: [ - { - title: '视频 - 播放列表', - docs: 'https://docs.rsshub.app/routes/multimedia#teng-xun-shi-pin', - source: '/x/cover/:id', - target: (params) => { - const id = params.id.match('(.*).html')[1]; - return id ? `/tencentvideo/playlist/${id}` : ''; - }, - }, - { - title: '视频 - 播放列表', - docs: 'https://docs.rsshub.app/routes/multimedia#teng-xun-shi-pin', - source: '/x/cover/:id/:detail', - target: '/tencentvideo/playlist/:id', - }, - ], 'wiki.connect': [ { title: 'QQ 互联 SDK 更新日志', diff --git a/website/docs/routes/multimedia.mdx b/website/docs/routes/multimedia.mdx index b2942a5615..f6f5b4f347 100644 --- a/website/docs/routes/multimedia.mdx +++ b/website/docs/routes/multimedia.mdx @@ -485,22 +485,6 @@ Official RSS: [https://eztv.io/ezrss.xml](https://eztv.io/ezrss.xml) -## IBC 岩手放送 {#ibc-yan-shou-fang-song} - -### イヤーマイッタマイッタ {#ibc-yan-shou-fang-song-%E3%82%A4%E3%83%A4%E3%83%BC%E3%83%9E%E3%82%A4%E3%83%83%E3%82%BF%E3%83%9E%E3%82%A4%E3%83%83%E3%82%BF} - - - -### ラジオ {#ibc-yan-shou-fang-song-%E3%83%A9%E3%82%B8%E3%82%AA} - - - :::tip - If you subscribe to [イヤーマイッタマイッタ](https://www.ibc.co.jp/radio/maitta/audio), the URL is `https://www.ibc.co.jp/radio/maitta/audio`. Intercept `maitta` between `https://www.ibc.co.jp/radio/` and `/audio/` as an argument, then the route will be [`/ibc/radio/maitta`](https://rsshub.app/ibc/radio/maitta). - - If you subscribe to [火曜ワイド「境界トラブル解決ラジオ!](https://www.ibc.co.jp/radio/TochiKyokai/audio), the URL is `https://www.ibc.co.jp/radio/TochiKyokai/audio`. Intercept `TochiKyokai` between `https://www.ibc.co.jp/radio/` and `/audio/` as an argument, then the route is [`/ibc/radio/TochiKyokai`](https://rsshub.app/ibc/radio/TochiKyokai). - ::: - - ## JavBus {#javbus} :::warning @@ -873,48 +857,6 @@ JavDB 有多个备用域名,本路由默认使用永久域名 `https://javdb.c | uploads | favorites | listens | stream | -## Mp4Ba {#mp4ba} - -### 影视分类 {#mp4ba-ying-shi-fen-lei} - - - **类型参考这里** - - | 电影 | 连续剧 | 动画 | 综艺 | 纪录片 | - | ---- | ------ | ---- | ---- | ------ | - | 6 | 7 | 15 | 20 | 24 | - - | 动作片 | 喜剧片 | 爱情片 | 科幻片 | 恐怖片 | - | ------ | ------ | ------ | ------ | ------ | - | 8 | 9 | 10 | 11 | 12 | - - | 剧情片 | 战争片 | 国产剧 | 港台剧 | 日韩剧 | 欧美剧 | - | ------ | ------ | ------ | ------ | ------ | ------ | - | 13 | 14 | 16 | 17 | 18 | 19 | - - -### 影视搜索 {#mp4ba-ying-shi-sou-suo} - - - -## MQube {#mqube} - -### 全站最近更新 {#mqube-quan-zhan-zui-jin-geng-xin} - - - -### 全站每日排行 {#mqube-quan-zhan-mei-ri-pai-hang} - - - -### 个人最近更新 {#mqube-ge-ren-zui-jin-geng-xin} - - - -### 标签最近更新 {#mqube-biao-qian-zui-jin-geng-xin} - - - ## Netflav {#netflav} ### Index {#netflav-index} @@ -1055,38 +997,6 @@ JavDB 有多个备用域名,本路由默认使用永久域名 `https://javdb.c - `jp` (Japanese), for Pornhub in Japan [https://jp.pornhub.com](https://jp.pornhub.com) etc. -## PRESTIGE (プレステージ 蚊香社) {#prestige-%E3%83%97%E3%83%AC%E3%82%B9%E3%83%86%E3%83%BC%E3%82%B8-wen-xiang-she} - -### シリーズ {#prestige-%E3%83%97%E3%83%AC%E3%82%B9%E3%83%86%E3%83%BC%E3%82%B8-wen-xiang-she-%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA} - - - | 人気順 | 新着順 | 発売日順 | タイトル順 | 価格の安い順 | 価格の高い順 | - | ------- | ------ | -------- | ---------- | ------------ | ------------ | - | popular | near | date | title | low | high | - - -## rs05 人生 05 电影 {#rs05-ren-sheng-05-dian-ying} - -### rs05 电影列表 {#rs05-ren-sheng-05-dian-ying-rs05-dian-ying-lie-biao} - - - -## s-hentai {#s-hentai} - -### Category {#s-hentai-category} - - - | Doujin | HCG | Games・Animes | Voices・ASMR | Ready to Download | - | ------ | --- | ------------- | ------------ | ----------------- | - | 1 | 2 | 3 | 4 | ready-to-download | - - -## Sankaku Complex {#sankaku-complex} - -### Post {#sankaku-complex-post} - - - ## sexinsex {#sexinsex} ### 分区帖子 {#sexinsex-fen-qu-tie-zi} @@ -1135,7 +1045,7 @@ JavDB 有多个备用域名,本路由默认使用永久域名 `https://javdb.c ### 字幕 {#sub-hd-zi-mu} - + | 最新字幕 | 热门字幕 | 剧集字幕 | 电影字幕 | | -------- | -------- | -------- | -------- | | new | top | tv | movie | @@ -1213,24 +1123,12 @@ Refer to [https://developers.themoviedb.org/3/getting-started/languages](https:/ -## Yahoo! テレビ {#yahoo!-%E3%83%86%E3%83%AC%E3%83%93} - -### 番組検索 {#yahoo!-%E3%83%86%E3%83%AC%E3%83%93-fan-zu-jian-suo} - - - ## 阿基米德 FM {#a-ji-mi-de-fm} ### 播客 {#a-ji-mi-de-fm-bo-ke} -## 阿里云盘 {#a-li-yun-pan} - -### 文件列表 {#a-li-yun-pan-wen-jian-lie-biao} - - - ## 爱奇艺 {#ai-qi-yi} ### 用户视频 {#ai-qi-yi-yong-hu-shi-pin} @@ -1345,55 +1243,23 @@ Refer to [https://developers.themoviedb.org/3/getting-started/languages](https:/ ::: -## 场库 {#chang-ku} - -### 今日精选 {#chang-ku-jin-ri-jing-xuan} - - - -### 分类 {#chang-ku-fen-lei} - - - | 创意 | 励志 | 搞笑 | 广告 | 汽车 | 旅行 | - | ---- | ---- | ---- | ---- | ---- | ---- | - | 6 | 7 | 8 | 13 | 92 | 11 | - - | 爱情 | 剧情 | 运动 | 动画 | 音乐 | 科幻 | - | ---- | ---- | ---- | ---- | ---- | ---- | - | 12 | 17 | 10 | 16 | 18 | 23 | - - | 预告 | 记录 | 混剪 | 游戏 | 时尚 | 实验 | - | ---- | ---- | ---- | ---- | ---- | ---- | - | 43 | 24 | 44 | 104 | 88 | 45 | - - | 生活 | - | ---- | - | 78 | - - ## 低端影视 {#di-duan-ying-shi} ### 影视剧集更新 {#di-duan-ying-shi-ying-shi-ju-ji-geng-xin} - + ### 首页 {#di-duan-ying-shi-shou-ye} - + ### 分类 {#di-duan-ying-shi-fen-lei} - + ### 标签 {#di-duan-ying-shi-biao-qian} - - -## 电影首发站 {#dian-ying-shou-fa-zhan} - -### 电影 {#dian-ying-shou-fa-zhan-dian-ying} - - + ## 电影天堂 {#dian-ying-tian-tang} @@ -1405,7 +1271,7 @@ Refer to [https://developers.themoviedb.org/3/getting-started/languages](https:/ ### 最新电影 {#gao-qing-dian-tai-zui-xin-dian-ying} - + ## 故事 FM {#gu-shi-fm} @@ -1453,22 +1319,6 @@ Refer to [https://developers.themoviedb.org/3/getting-started/languages](https:/ -## 奈菲影视 {#nai-fei-ying-shi} - -### 分区 {#nai-fei-ying-shi-fen-qu} - - - | 首页 | 电影 | 电视剧 | 综艺 | 动漫 | 奈菲独家 | - | ---- | ---- | ------ | ---- | ---- | -------- | - | 0 | 1 | 2 | 3 | 4 | 5 | - - -## 柠檬 私房歌 (ningmeng.name) {#ning-meng-si-fang-ge-ningmeng-name} - -### 私房歌 {#ning-meng-si-fang-ge-ningmeng-name-si-fang-ge} - - - ## 片源网 {#pian-yuan-wang} ### 最新资源 {#pian-yuan-wang-zui-xin-zi-yuan} @@ -1485,12 +1335,6 @@ Refer to [https://developers.themoviedb.org/3/getting-started/languages](https:/ 搜索路由模仿 jackett 的搜索 api, 以提供给 nastools 使用,填写在 nastools 配置 indexer 中 -## 飘花电影网 {#piao-hua-dian-ying-wang} - -### 今日热门 {#piao-hua-dian-ying-wang-jin-ri-re-men} - - - ## 蜻蜓 FM {#qing-ting-fm} ### 专辑 {#qing-ting-fm-zhuan-ji} @@ -1549,60 +1393,12 @@ Refer to [https://developers.themoviedb.org/3/getting-started/languages](https:/ -## 深影译站 {#shen-ying-yi-zhan} - -### 首页 {#shen-ying-yi-zhan-shou-ye} - - - -### 剧集类型 {#shen-ying-yi-zhan-ju-ji-lei-xing} - - - | 英美剧 | 日韩剧 | 小语种 | - | ------ | ------ | ------ | - | 62 | 140 | 2 | - - -### 最新作品 {#shen-ying-yi-zhan-zui-xin-zuo-pin} - - - -### 指定剧集 {#shen-ying-yi-zhan-zhi-ding-ju-ji} - - - -## 时光网 {#shi-guang-wang} - -### 时光新闻 {#shi-guang-wang-shi-guang-xin-wen} - - - -## 腾讯视频 {#teng-xun-shi-pin} - -### 播放列表 {#teng-xun-shi-pin-bo-fang-lie-biao} - - - ## 听听 FM {#ting-ting-fm} ### 节目 {#ting-ting-fm-jie-mu} -## 弯弯字幕组 {#wan-wan-zi-mu-zu} - -### 分类 {#wan-wan-zi-mu-zu-fen-lei} - - - | ALL | 英语小分队 | 日语小分队 | 韩语小分队 | 葡语小分队 | 西语小分队 | 法语小分队 | 意语小分队 | 德语小分队 | 泰语小分队 | 其他语种 | - | --- | ---------- | ---------- | ---------- | ---------- | ---------- | ---------- | ---------- | ---------- | ---------- | -------- | - | 139 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 153 | 117 | 154 | - - -### 剧集 {#wan-wan-zi-mu-zu-ju-ji} - - - ## 网易云音乐 {#wang-yi-yun-yin-yue} :::tip @@ -1731,16 +1527,6 @@ Refer to [https://developers.themoviedb.org/3/getting-started/languages](https:/ | nba | zuqiu | -## 中国高清网 {#zhong-guo-gao-qing-wang} - -### 电影 {#zhong-guo-gao-qing-wang-dian-ying} - - - -| 全部 | 蓝光 | 1080P | 720P | 3D | WEB-DL | -| ---- | ------ | ----- | ---- | -- | ------ | -| 留空 | bluray | 1080p | 720p | 3d | webdl | - ## 中文播客榜 {#zhong-wen-bo-ke-bang} :::tip @@ -1767,12 +1553,6 @@ Refer to [https://developers.themoviedb.org/3/getting-started/languages](https:/ -## 注视影视 {#zhu-shi-ying-shi} - -### 更新通知 {#zhu-shi-ying-shi-geng-xin-tong-zhi} - - - ## 追新番 {#zhui-xin-fan} ### 最近更新 {#zhui-xin-fan-zui-jin-geng-xin} @@ -1783,7 +1563,7 @@ Refer to [https://developers.themoviedb.org/3/getting-started/languages](https:/ ### 字幕列表 {#zi-mu-ku-zi-mu-lie-biao} - + 类型 | 最新电影 | 最新美剧 | @@ -1791,27 +1571,11 @@ Refer to [https://developers.themoviedb.org/3/getting-started/languages](https:/ | mv | tv | -## 字幕组(ZiMuZu.tv) {#zi-mu-zu-zimuzu-tv} - -### 影视 {#zi-mu-zu-zimuzu-tv-ying-shi} - -:::tip -跟官方提供的 RSS 相比:官方使用了不规范的 magnet 字段,无法被 BT 客户端识别并自动下载,其他数据相同 -::: - - - -### 排行榜 {#zi-mu-zu-zimuzu-tv-pai-hang-bang} - - - 例如,路由 `/zimuzu/top/week/movie` 应该输出 [http://www.rrys2019.com/html/top/week\_movie\_list.html](http://www.rrys2019.com/html/top/week_movie_list.html) 的排行榜单 - - ## 综艺秀 {#zong-yi-xiu} ### 综艺 {#zong-yi-xiu-zong-yi} - + 地区 | 台湾 | 韩国 | 大陆 |