Skip to content

Commit

Permalink
fix(radar)(route): Pixiv search & Radar rules (DIYgod#7700)
Browse files Browse the repository at this point in the history
  • Loading branch information
yindaheng98 authored Jun 27, 2021
1 parent 150883c commit 61d9e2d
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 12 deletions.
12 changes: 7 additions & 5 deletions assets/radar-rules.js
Original file line number Diff line number Diff line change
Expand Up @@ -140,24 +140,26 @@
{
title: '用户收藏',
docs: 'https://docs.rsshub.app/social-media.html#pixiv',
source: '/bookmark.php',
target: (params, url) => `/pixiv/user/bookmarks/${new URL(url).searchParams.get('id')}`,
source: '/users/:id/bookmarks/artworks',
target: '/pixiv/user/bookmarks/:id',
},
{
title: '用户动态',
docs: 'https://docs.rsshub.app/social-media.html#pixiv',
source: '/member.php',
target: (params, url) => `/pixiv/user/${new URL(url).searchParams.get('id')}`,
source: '/users/:id',
target: '/pixiv/user/:id',
},
{
title: '排行榜',
docs: 'https://docs.rsshub.app/social-media.html#pixiv',
source: '/ranking.php',
target: (params, url) => `/pixiv/ranking/${new URL(url).searchParams.get('mode') || 'daily'}`,
},
{
title: '关键词',
docs: 'https://docs.rsshub.app/social-media.html#pixiv',
source: '/search.php',
source: ['/tags/:keyword', '/tags/:keyword/:type?'],
target: (params, url) => `/pixiv/search/:keyword/${new URL(url).searchParams.get('order')}/${new URL(url).searchParams.get('mode')}`,
},
{
title: '关注的新作品',
Expand Down
8 changes: 7 additions & 1 deletion docs/en/social-media.md
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,13 @@ These feed do not include boosts (a.k.a. reblogs). RSSHub provides a feed for us

### Keyword

<RouteEn author="DIYgod" example="/pixiv/search/麻衣/popular/2" path="/pixiv/search/:keyword/:order?/:r18?" :paramsDesc="['keyword', 'rank mode, empty or other for time order, popular for popular order', 'filte R18 content, 0 to no filter, 1 to only not R18, 2 to only R18, default to 0']" radar="1" rssbud="1"/>
<RouteEn author="DIYgod" example="/pixiv/search/麻衣/popular/2" path="/pixiv/search/:keyword/:order?/:mode?" :paramsDesc="['keyword', 'rank mode, empty or other for time order, popular for popular order', 'filte R18 content']" radar="1" rssbud="1">

| only not R18 | only R18 | no filter |
| ----------------- | ------------------------- | ------------------------- |
| safe | r18 | empty or other |

</RouteEn>

### Following timeline

Expand Down
7 changes: 6 additions & 1 deletion docs/social-media.md
Original file line number Diff line number Diff line change
Expand Up @@ -529,8 +529,13 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性

### 关键词

<Route author="DIYgod" example="/pixiv/search/麻衣/popular/2" path="/pixiv/search/:keyword/:order?/:r18?" :paramsDesc="['关键词', '排序方式,popular 按热门度排序,空或其他任意值按时间排序', '过滤 R18 内容,0 为不过滤,1 为只看非 R18 内容,2 为只看 R18 内容,默认为 0']" radar="1" rssbud="1"/>
<Route author="DIYgod" example="/pixiv/search/麻衣/popular/2" path="/pixiv/search/:keyword/:order?/:mode?" :paramsDesc="['关键词', '排序方式,popular 按热门度排序,空或其他任意值按时间排序', '过滤方式']" radar="1" rssbud="1">

| 只看非 R18 内容 | 只看 R18 内容 | 不过滤 |
| ----------------- | ------------------------- | ------------------------- |
| safe | r18 | 空或其他任意值 |

</Route>
### 关注的新作品

<Route author="ClarkeCheng" example="/pixiv/user/illustfollows" path="/pixiv/user/illustfollows" radar="1" rssbud="1" selfhost="1"/>
Expand Down
2 changes: 1 addition & 1 deletion lib/router.js
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ router.get('/pixiv/user/bookmarks/:id', require('./routes/pixiv/bookmarks'));
router.get('/pixiv/user/illustfollows', require('./routes/pixiv/illustfollow'));
router.get('/pixiv/user/:id', require('./routes/pixiv/user'));
router.get('/pixiv/ranking/:mode/:date?', require('./routes/pixiv/ranking'));
router.get('/pixiv/search/:keyword/:order?/:r18?', require('./routes/pixiv/search'));
router.get('/pixiv/search/:keyword/:order?/:mode?', require('./routes/pixiv/search'));

// pixiv-fanbox
router.get('/fanbox/:user?', require('./routes/fanbox/main'));
Expand Down
17 changes: 16 additions & 1 deletion lib/routes/pixiv/ranking.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,27 @@ const links = {
week_r18g: 'https://www.pixiv.net/ranking.php?mode=r18g',
};

const alias = {
daily: 'day',
weekly: 'week',
monthly: 'month',
male: 'day_male',
female: 'day_female',
original: 'week_original',
rookie: 'week_rookie',
daily_r18: 'day_r18',
male_r18: 'day_male_r18',
female_r18: 'day_female_r18',
weekly_r18: 'week_r18',
r18g: 'week_r18g',
};

module.exports = async (ctx) => {
if (!config.pixiv || !config.pixiv.refreshToken) {
throw 'pixiv RSS is disabled due to the lack of <a href="https://docs.rsshub.app/install/#%E9%83%A8%E5%88%86-rss-%E6%A8%A1%E5%9D%97%E9%85%8D%E7%BD%AE">relevant config</a>';
}

const mode = ctx.params.mode;
const mode = alias[ctx.params.mode] ? alias[ctx.params.mode] : ctx.params.mode;
const date = ctx.params.date ? new Date(ctx.params.date) : new Date();

if (!getToken()) {
Expand Down
6 changes: 3 additions & 3 deletions lib/routes/pixiv/search.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ module.exports = async (ctx) => {

const keyword = ctx.params.keyword;
const order = ctx.params.order || 'date';
const r18 = ctx.params.r18;
const mode = ctx.params.mode;

if (!getToken()) {
throw 'pixiv not login';
Expand All @@ -24,9 +24,9 @@ module.exports = async (ctx) => {
}

let illusts = response.data.illusts;
if (r18 === '1') {
if (mode === 'safe' || mode === '1') {
illusts = illusts.filter((item) => item.x_restrict === 0);
} else if (r18 === '2') {
} else if (mode === 'r18' || mode === '2') {
illusts = illusts.filter((item) => item.x_restrict === 1);
}

Expand Down

0 comments on commit 61d9e2d

Please sign in to comment.