mirror of
https://github.com/DIYgod/RSSHub.git
synced 2026-09-24 23:12:34 +08:00
Merge branch 'master' into master
This commit is contained in:
@@ -7,7 +7,8 @@
|
||||
},
|
||||
"env": {
|
||||
"node": true,
|
||||
"es6": true
|
||||
"es6": true,
|
||||
"browser": true
|
||||
},
|
||||
"rules": {
|
||||
"no-console": 2,
|
||||
@@ -52,6 +53,7 @@
|
||||
"prettier/prettier": 0,
|
||||
"no-await-in-loop": 2,
|
||||
"require-atomic-updates": 0,
|
||||
"no-prototype-builtins": 0
|
||||
"no-prototype-builtins": 0,
|
||||
"no-new-func": 2
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
patreon: DIYgod
|
||||
custom: ["https://afdian.net/@diygod", "https://diygod.me/images/zfb.jpg", "https://diygod.me/images/wx.jpg"]
|
||||
|
||||
@@ -7,15 +7,30 @@ about: 早起的小可爱有虫抓
|
||||
请确保已阅读 [文档](https://docs.rsshub.app) 内相关部分,并按照模版提供信息,否则 issue 将被立即关闭。
|
||||
|
||||
由于部分源网站反爬缘故,演示地址一些 rss 会返回 status code 403,该问题不是 RSSHub 所致,请勿提交 issue。
|
||||
|
||||
请填写内容进code block区域,一行一个。
|
||||
如果没有符合条件的内容,请填写`NOTEXIST`
|
||||
-->
|
||||
|
||||
- 完整路由地址,包含所有必选与可选参数
|
||||
#### 路由地址(不包含参数)
|
||||
|
||||
- 预期是什么
|
||||
```routes
|
||||
```
|
||||
|
||||
- 实际发生了什么
|
||||
#### 完整路由地址,包含所有必选与可选参数
|
||||
|
||||
- 部署相关信息
|
||||
```fullroutes
|
||||
```
|
||||
|
||||
#### 相关文档地址
|
||||
|
||||
- https://docs.rsshub.app/...
|
||||
|
||||
#### 预期是什么
|
||||
|
||||
#### 实际发生了什么
|
||||
|
||||
#### 部署相关信息
|
||||
|
||||
<!--
|
||||
如果是演示地址(rsshub.app)有此问题请删除此部分。
|
||||
|
||||
@@ -1,3 +1,11 @@
|
||||
<!--
|
||||
|
||||
请不要删除, 自行修改已有结构/注释, 这会导致自动检测失败;不符合要求的部分留空即可
|
||||
|
||||
Do not remove existing titles or structures: it breaks CI
|
||||
|
||||
-->
|
||||
|
||||
## 该 PR 相关 Issue / Involved issue
|
||||
|
||||
Close #
|
||||
@@ -5,9 +13,64 @@ Close #
|
||||
## 完整路由地址 / Example for the proposed route(s)
|
||||
|
||||
<!--
|
||||
|
||||
为方便测试,请附上完整路由地址,包括所有必选与可选参数,否则将导致 PR 被关闭。
|
||||
|
||||
To simplify the testing workflow, please include the complete route, with all required and optional parameters, otherwise your pull request will be closed.
|
||||
|
||||
请按照如下格式填写`routes`区域: 我们将会根据你的参数展开自动测试. 一行一个路由
|
||||
Please fill the `routes` block follow the format below, as we will perform automatic test based on this information. one route per line.
|
||||
|
||||
```
|
||||
/some/route
|
||||
/some/other/route
|
||||
```
|
||||
|
||||
如果与路由无关, 请写`NOROUTE`
|
||||
-->
|
||||
|
||||
<!-- 在下方填写, 请不要删除`routes`标识: CI验证需要. FILL BELOW and keep `routes` keyword -->
|
||||
```routes
|
||||
```
|
||||
|
||||
|
||||
## 新RSS检查列表 / New RSS Script Checklist
|
||||
|
||||
<!--
|
||||
|
||||
Please go over the checklist below before PR: this improve your PR pass rate.
|
||||
|
||||
Reference: https://docs.rsshub.app/en/joinus/
|
||||
|
||||
请在提交PR前检查以下事项: 这可以大大提升通过率
|
||||
|
||||
这些就是我们在审核时主要关注的事项, 敬请留意
|
||||
|
||||
参考: https://docs.rsshub.app/joinus
|
||||
|
||||
-->
|
||||
|
||||
- [ ] 这个PR中包含了新的路由吗? Does this PR add new route?
|
||||
- 如果有, 请完成检查列表. If yes, please finish the check list
|
||||
- **如果你的PR符合下方某个事项, 也请注明. If any of the checklist item meets your PR, please fill it out.**
|
||||
- [x] <- 这样打勾
|
||||
- [ ] 是否提供了文档? Documentation provided?
|
||||
- [ ] 是否提供了英文文档? EN Documentation provided?
|
||||
- [ ] 是否支持全文获取? Is this RSS Script support fulltext?
|
||||
- [ ] 如果全文获取中需要访问文章链接, 是否使用了缓存? If fulltext requires to fetch detail pages, is cache used in the process?
|
||||
- [缓存说明](https://docs.rsshub.app/joinus/#ti-jiao-xin-de-rsshub-gui-ze-bian-xie-jiao-ben-shi-yong-huan-cun) | [How to use cache](https://docs.rsshub.app/joinus/#ti-jiao-xin-de-rsshub-gui-ze-bian-xie-jiao-ben-shi-yong-huan-cun)
|
||||
- [ ] 目标是否有明显的反爬/频率限制? Is there any sign of anti-bot or rate limit?
|
||||
- [ ] 如果有, 是否有对应的措施? (延长缓存时间, 写文档说明, etc.) If yes, do your code reflect this sign? (e.g. write documentations, use long cache time)
|
||||
- [ ] 是否引入的新的包? Any new package introduced?
|
||||
- 如果有, 请说明原因. If yes, please state your reason
|
||||
- [ ] 是否使用了`Puppeteer`? Make use of `Puppeteer`?
|
||||
- 如果有, 请说明原因. If yes, please state your reason
|
||||
|
||||
|
||||
## 说明 / Note
|
||||
|
||||
<!--
|
||||
|
||||
Please state your reason/note here
|
||||
|
||||
请在这里描述你的原因或留下其他相关的说明
|
||||
|
||||
-->
|
||||
|
||||
@@ -16,6 +16,7 @@ on:
|
||||
|
||||
jobs:
|
||||
test:
|
||||
if: github.repository == "DIYgod/RSSHub"
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
-
|
||||
|
||||
@@ -13,7 +13,7 @@ jobs:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: '12'
|
||||
node-version: '14'
|
||||
- run: yarn install
|
||||
- run: npm run format
|
||||
- name: Commit files
|
||||
|
||||
@@ -8,14 +8,13 @@ on:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
if: github.repository == "DIYgod/RSSHub"
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: '12'
|
||||
node-version: '14'
|
||||
registry-url: 'https://registry.npmjs.org'
|
||||
- name: Release
|
||||
run: |
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
name: PR route test
|
||||
|
||||
# https://github.com/actions/first-interaction/issues/10#issuecomment-670968624
|
||||
# https://github.com/actions/first-interaction/issues/10#issuecomment-752360668
|
||||
# Reopen Included
|
||||
on:
|
||||
- pull_request_target
|
||||
|
||||
|
||||
jobs:
|
||||
testRoute:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Fetch affected routes
|
||||
id: fetchRoute
|
||||
uses: actions/github-script@v3
|
||||
with:
|
||||
# by default, JSON format returned
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
script: |
|
||||
const body = context.payload.pull_request.body
|
||||
const number = context.payload.pull_request.number
|
||||
const script = require(`${process.env.GITHUB_WORKSPACE}/scripts/workflow/test-route/identify.js`)
|
||||
return await script({github, context, core}, body, number)
|
||||
- name: Waiting for 200 from the Vercel Preview
|
||||
if: (env.TEST_CONTINUE)
|
||||
uses: patrickedqvist/wait-for-vercel-preview@master
|
||||
id: waitFor200
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
max_timeout: 300
|
||||
- name: Generate feedback
|
||||
if: (env.TEST_CONTINUE)
|
||||
uses: actions/github-script@v3
|
||||
env:
|
||||
TEST_BASEURL: ${{steps.waitFor200.outputs.url}}
|
||||
TEST_ROUTES: ${{ steps.fetchRoute.outputs.result }}
|
||||
with:
|
||||
github-token: ${{secrets.GITHUB_TOKEN}}
|
||||
script: |
|
||||
const link = process.env.TEST_BASEURL
|
||||
const routes = JSON.parse(process.env.TEST_ROUTES)
|
||||
const number = context.payload.pull_request.number
|
||||
core.info(`${link}, ${routes}, ${number}`)
|
||||
const script = require(`${process.env.GITHUB_WORKSPACE}/scripts/workflow/test-route/test.js`)
|
||||
return await script({github, context, core}, link, routes, number)
|
||||
@@ -6,7 +6,7 @@ on:
|
||||
|
||||
jobs:
|
||||
rebase:
|
||||
if: github.event.issue.pull_request != '' && contains(github.event.comment.body, '/rebase')
|
||||
if: github.event.issue.pull_request != '' && contains(github.event.comment.body, '/rebase') && github.event.comment.author_association == 'COLLABORATOR'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
-
|
||||
@@ -16,6 +16,6 @@ jobs:
|
||||
fetch-depth: 0
|
||||
-
|
||||
name: Automatic Rebase
|
||||
uses: cirrus-actions/rebase@1.3.1
|
||||
uses: cirrus-actions/rebase@1.4
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
GITHUB_TOKEN: ${{ secrets.TOKEN_SUPER }}
|
||||
@@ -4,8 +4,7 @@ on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-16.04
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
services:
|
||||
redis:
|
||||
@@ -16,7 +15,7 @@ jobs:
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [10.x, 12.x]
|
||||
node-version: [10.x, 12.x, 14.x]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
## Introduction
|
||||
|
||||
RSSHub is an open source, easy to use, and extensible RSS feed aggregator, it's capable of generating RSS feeds from pretty much everything.
|
||||
RSSHub is an open source, easy to use, and extensible RSS feed generator. It's capable of generating RSS feeds from pretty much everything.
|
||||
|
||||
RSSHub delivers millions of contents aggregated from all kinds of sources, our vibrant open source community is ensuring the deliver of RSSHub's new routes, new features and bug fixes.
|
||||
|
||||
@@ -32,7 +32,7 @@ RSSHub 是一个开源、简单易用、易于扩展的 RSS 生成器,可以
|
||||
### Special Sponsors
|
||||
|
||||
<div>
|
||||
<a href="https://rixcloud.app/rsshub" target="_blank"><img height="60px" src="https://i.imgur.com/TrgP3S1.png"></a> <a href="https://km.bytell.cn/wxcollect" target="_blank"><img height="60px" src="https://i.imgur.com/7sNM1yi.png"></a>
|
||||
<a href="https://sa.net/" target="_blank"><img height="60px" src="https://i.imgur.com/3rM8nWI.png"></a> <a href="https://km.bytell.cn/wxcollect" target="_blank"><img height="60px" src="https://i.imgur.com/7sNM1yi.png"></a>
|
||||
</div>
|
||||
|
||||
### Sponsors
|
||||
@@ -55,6 +55,7 @@ Logo designer [sheldonrrr](https://dribbble.com/sheldonrrr)
|
||||
|
||||
- [RSSHub Radar](https://github.com/DIYgod/RSSHub-Radar) | 一个可以帮助你快速发现和订阅当前网站 RSS 和 RSSHub 的浏览器扩展
|
||||
- [RSSBud](https://github.com/Cay-Zhang/RSSBud) ([TestFlight 公测](https://testflight.apple.com/join/rjCVzzHP)) | iOS 平台的 RSSHub Radar,专为移动生态优化
|
||||
- [RSSAid](https://github.com/lt94/RSSAid) | 基于 Flutter 构建的 Android 平台的 RSSHub Radar
|
||||
|
||||
## Join Us
|
||||
|
||||
@@ -92,8 +93,8 @@ Recurring donors will be rewarded via express issue response, or even have your
|
||||
|
||||
We accept donations via the following ways:
|
||||
|
||||
- [WeChat Pay](https://i.loli.net/2019/03/23/5c950ebbc373e.png)
|
||||
- [Alipay](https://i.loli.net/2019/03/23/5c950ebbc980e.png)
|
||||
- [WeChat Pay](https://diygod.me/images/wx.jpg)
|
||||
- [Alipay](https://diygod.me/images/zfb.jpg)
|
||||
- [Paypal](https://www.paypal.me/DIYgod)
|
||||
|
||||
## Author
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
# Security Policy
|
||||
|
||||
## Supported Version
|
||||
|
||||
Latest commits in master branch
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
If you believe you have found a security vulnerability in RSSHub, please let us know right away, you can email us at [i@diygod.me](mailto:i@diygod.me). We will investigate all legitimate reports and do our best to quickly fix the problem.
|
||||
+291
-9
@@ -96,7 +96,10 @@
|
||||
docs: 'https://docs.rsshub.app/social-media.html#wei-bo',
|
||||
source: ['/u/:id', '/:id'],
|
||||
target: (params, url, document) => {
|
||||
const uid = document && document.documentElement.innerHTML.match(/\$CONFIG\['oid']='(\d+)'/)[1];
|
||||
let uid = document?.documentElement.innerHTML.match(/\$CONFIG\['oid']='(\d+)'/)?.[1];
|
||||
if (!uid && !isNaN(params.id)) {
|
||||
uid = params.id;
|
||||
}
|
||||
return uid ? `/weibo/user/${uid}` : '';
|
||||
},
|
||||
},
|
||||
@@ -120,6 +123,17 @@
|
||||
},
|
||||
],
|
||||
},
|
||||
'weibo.cn': {
|
||||
_name: '微博',
|
||||
m: [
|
||||
{
|
||||
title: '博主',
|
||||
docs: 'https://docs.rsshub.app/social-media.html#wei-bo',
|
||||
source: ['/u/:uid', '/profile/:uid'],
|
||||
target: '/weibo/user/:uid',
|
||||
},
|
||||
],
|
||||
},
|
||||
'pixiv.net': {
|
||||
_name: 'Pixiv',
|
||||
www: [
|
||||
@@ -205,7 +219,7 @@
|
||||
],
|
||||
},
|
||||
'youtube.com': {
|
||||
_name: 'Youtube',
|
||||
_name: 'YouTube',
|
||||
www: [
|
||||
{
|
||||
title: '用户',
|
||||
@@ -248,6 +262,12 @@
|
||||
source: '/trending',
|
||||
target: '/github/trending/:since',
|
||||
},
|
||||
{
|
||||
title: 'Trending',
|
||||
docs: 'https://docs.rsshub.app/programming.html#github',
|
||||
source: '/topics',
|
||||
target: '/github/topics/:name/:qs?',
|
||||
},
|
||||
{
|
||||
title: '仓库 Issue',
|
||||
docs: 'https://docs.rsshub.app/programming.html#github',
|
||||
@@ -322,9 +342,10 @@
|
||||
{
|
||||
title: '用户文章',
|
||||
docs: 'https://docs.rsshub.app/social-media.html#zhi-hu',
|
||||
source: '/people/:id/posts',
|
||||
target: '/zhihu/people/posts/:id',
|
||||
source: '/:usertype/:id/posts',
|
||||
target: '/zhihu/posts/:usertype/:id',
|
||||
},
|
||||
|
||||
{
|
||||
title: '热榜',
|
||||
docs: 'https://docs.rsshub.app/social-media.html#zhi-hu',
|
||||
@@ -427,7 +448,7 @@
|
||||
},
|
||||
'ximalaya.com': {
|
||||
_name: '喜马拉雅',
|
||||
www: [
|
||||
'.': [
|
||||
{
|
||||
title: '专辑',
|
||||
docs: 'https://docs.rsshub.app/multimedia.html#xi-ma-la-ya',
|
||||
@@ -460,15 +481,45 @@
|
||||
},
|
||||
],
|
||||
},
|
||||
'juejin.im': {
|
||||
'juejin.cn': {
|
||||
_name: '掘金',
|
||||
'.': [
|
||||
{
|
||||
title: '标签',
|
||||
docs: 'https://docs.rsshub.app/programming.html#jue-jin-biao-qian',
|
||||
source: '/tag/:tag',
|
||||
target: '/juejin/tag/:tag',
|
||||
},
|
||||
{
|
||||
title: '小册',
|
||||
docs: 'https://docs.rsshub.app/programming.html#jue-jin-xiao-ce',
|
||||
source: '/books',
|
||||
target: '/juejin/books',
|
||||
},
|
||||
{
|
||||
title: '沸点',
|
||||
docs: 'https://docs.rsshub.app/programming.html#jue-jin-fei-dian',
|
||||
source: ['/pins/:type', '/pins/topic/:type'],
|
||||
target: (params) => (params.type !== 'recommended' ? '/juejin/pins/:type' : '/juejin/pins'),
|
||||
},
|
||||
{
|
||||
title: '专栏',
|
||||
docs: 'https://docs.rsshub.app/programming.html#jue-jin',
|
||||
source: '/user/:id/posts',
|
||||
docs: 'https://docs.rsshub.app/programming.html#jue-jin-zhuan-lan',
|
||||
source: ['/user/:id', '/user/:id/posts'],
|
||||
target: '/juejin/posts/:id',
|
||||
},
|
||||
{
|
||||
title: '收藏集',
|
||||
docs: 'https://docs.rsshub.app/programming.html#jue-jin-shou-cang-ji',
|
||||
source: ['/user/:id', '/user/:id/collections'],
|
||||
target: '/juejin/collections/:id',
|
||||
},
|
||||
{
|
||||
title: '单个收藏夹',
|
||||
docs: 'https://docs.rsshub.app/programming.html#jue-jin-dan-ge-shou-cang-jia',
|
||||
source: '/collection/:collectionId',
|
||||
target: '/juejin/collection/:collectionId',
|
||||
},
|
||||
],
|
||||
},
|
||||
'anime1.me': {
|
||||
@@ -1710,7 +1761,7 @@
|
||||
},
|
||||
'zhaishuyuan.com': {
|
||||
_name: '斋书苑',
|
||||
www: [
|
||||
'.': [
|
||||
{
|
||||
title: '最新章节',
|
||||
docs: 'https://docs.rsshub.app/reading.html#zhai-shu-yuan',
|
||||
@@ -2005,6 +2056,82 @@
|
||||
},
|
||||
],
|
||||
},
|
||||
'141jav.com': {
|
||||
_name: '141JAV BT',
|
||||
'.': [
|
||||
{
|
||||
title: '今日种子',
|
||||
docs: 'https://docs.rsshub.app/multimedia.html#141jav',
|
||||
source: '/',
|
||||
target: (params, url, document) => {
|
||||
const today = document.querySelector('div.card.mb-1.card-overview').getAttribute('data-date').replace(/-/g, '');
|
||||
return `/141jav/day/${today}`;
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '今日演员',
|
||||
docs: 'https://docs.rsshub.app/multimedia.html#141jav',
|
||||
source: '/',
|
||||
target: (params, url, document) => {
|
||||
const star = document.querySelector('div.card-content > div > a').getAttribute('href');
|
||||
return `/141jav${star}`;
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '页面种子',
|
||||
docs: 'https://docs.rsshub.app/multimedia.html#141jav',
|
||||
source: ['/:type', '/:type/:key', '/:type/:key/:morekey'],
|
||||
target: (params, url, document) => {
|
||||
const itype = params.morekey === undefined ? `${params.type}` : params.type === 'tag' ? 'tag' : 'day';
|
||||
let ikey = `${itype === 'day' ? params.type : ''}${params.key || ''}${itype === 'tag' && params.morekey !== undefined ? '%2F' : ''}${params.morekey || ''}`;
|
||||
if (ikey === '' && itype === 'tag') {
|
||||
ikey = document.querySelector('div.thumbnail.is-inline > a').getAttribute('href').replace('/tag/', '').replace('/', '%2F');
|
||||
} else if (ikey === '' && itype === 'actress') {
|
||||
ikey = document.querySelector('div.card > a').getAttribute('href').replace('/actress/', '');
|
||||
}
|
||||
return `/141jav/${itype}/${ikey}`;
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
'141ppv.com': {
|
||||
_name: '141ppv BT',
|
||||
'.': [
|
||||
{
|
||||
title: '今日种子',
|
||||
docs: 'https://docs.rsshub.app/multimedia.html#141pvp',
|
||||
source: '/',
|
||||
target: (params, url, document) => {
|
||||
const today = document.querySelector('div.card.mb-1.card-overview').getAttribute('data-date').replace(/-/g, '');
|
||||
return `/141ppv/day/${today}`;
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '今日演员',
|
||||
docs: 'https://docs.rsshub.app/multimedia.html#141ppv',
|
||||
source: '/',
|
||||
target: (params, url, document) => {
|
||||
const star = document.querySelector('div.card-content > div > a').getAttribute('href');
|
||||
return `/141ppv${star}`;
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '页面种子',
|
||||
docs: 'https://docs.rsshub.app/multimedia.html#141ppv',
|
||||
source: ['/:type', '/:type/:key', '/:type/:key/:morekey'],
|
||||
target: (params, url, document) => {
|
||||
const itype = params.morekey === undefined ? `${params.type}` : params.type === 'tag' ? 'tag' : 'day';
|
||||
let ikey = `${itype === 'day' ? params.type : ''}${params.key || ''}${itype === 'tag' && params.morekey !== undefined ? '%2F' : ''}${params.morekey || ''}`;
|
||||
if (ikey === '' && itype === 'tag') {
|
||||
ikey = document.querySelector('div.thumbnail.is-inline > a').getAttribute('href').replace('/tag/', '').replace('/', '%2F');
|
||||
} else if (ikey === '' && itype === 'actress') {
|
||||
ikey = document.querySelector('div.card > a').getAttribute('href').replace('/actress/', '');
|
||||
}
|
||||
return `/141ppv/${itype}/${ikey}`;
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
'sexinsex.net': {
|
||||
_name: 'sexinsex',
|
||||
'.': [
|
||||
@@ -2052,6 +2179,12 @@
|
||||
source: '/news',
|
||||
target: '/umass/amherst/ecenews',
|
||||
},
|
||||
{
|
||||
title: 'ECE Seminar',
|
||||
docs: 'http://docs.rsshub.app/en/university.html#umass-amherst',
|
||||
source: '/seminars',
|
||||
target: '/umass/amherst/eceseminar',
|
||||
},
|
||||
],
|
||||
'www.cics': [
|
||||
{
|
||||
@@ -2366,6 +2499,50 @@
|
||||
},
|
||||
],
|
||||
},
|
||||
'matataki.io': {
|
||||
_name: 'matataki',
|
||||
www: [
|
||||
{
|
||||
title: '最热作品',
|
||||
docs: 'https://docs.rsshub.app/new-media.html#matataki',
|
||||
source: '/article/',
|
||||
target: '/matataki/posts/hot',
|
||||
},
|
||||
{
|
||||
title: '最新作品',
|
||||
docs: 'https://docs.rsshub.app/new-media.html#matataki',
|
||||
source: '/article/latest',
|
||||
target: '/matataki/posts/latest',
|
||||
},
|
||||
{
|
||||
title: '作者创作',
|
||||
docs: 'https://docs.rsshub.app/new-media.html#matataki',
|
||||
source: '/user/:uid',
|
||||
target: (params) => `/matataki/users/${params.uid}/posts`,
|
||||
},
|
||||
{
|
||||
title: 'Fan票关联作品',
|
||||
docs: 'https://docs.rsshub.app/new-media.html#matataki',
|
||||
source: ['/token/:tokenId', '/token/:tokenId/circle'],
|
||||
target: (params) => `/matataki/tokens/${params.tokenId}/posts`,
|
||||
},
|
||||
{
|
||||
title: '标签关联作品',
|
||||
docs: 'https://docs.rsshub.app/new-media.html#matataki',
|
||||
source: ['/tag/:tagId'],
|
||||
target: (params, url) => {
|
||||
const tagName = new URL(url).searchParams.get('name');
|
||||
return `/matataki/tags/${params.tagId}/${tagName}/posts`;
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '收藏夹',
|
||||
docs: 'https://docs.rsshub.app/new-media.html#matataki',
|
||||
source: '/user/:uid/favlist/:fid',
|
||||
target: (params) => `/matataki/users/${params.uid}/favorites/${params.fid}/posts`,
|
||||
},
|
||||
],
|
||||
},
|
||||
'eventernote.com': {
|
||||
_name: 'Eventernote',
|
||||
www: [
|
||||
@@ -2377,4 +2554,109 @@
|
||||
},
|
||||
],
|
||||
},
|
||||
'instagram.com': {
|
||||
_name: 'Instagram',
|
||||
www: [
|
||||
{
|
||||
title: '用户',
|
||||
docs: 'https://docs.rsshub.app/social-media.html#instagram',
|
||||
source: '/:id',
|
||||
target: (params) => {
|
||||
if (params.id !== 'explore' && params.id !== 'developer') {
|
||||
return '/instagram/user/:id';
|
||||
}
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
'huya.com': {
|
||||
_name: '虎牙直播',
|
||||
'.': [
|
||||
{
|
||||
title: '直播间开播',
|
||||
docs: 'https://docs.rsshub.app/live.html#hu-ya-zhi-bo-zhi-bo-jian-kai-bo',
|
||||
source: '/:id',
|
||||
target: '/huya/live/:id',
|
||||
},
|
||||
],
|
||||
},
|
||||
'craigslist.org': {
|
||||
_name: 'Craigslist',
|
||||
'.': [
|
||||
{
|
||||
title: '商品搜索列表',
|
||||
docs: 'https://docs.rsshub.app/shopping.html#craigslist',
|
||||
},
|
||||
],
|
||||
},
|
||||
'saraba1st.com': {
|
||||
_name: 'Saraba1st',
|
||||
bbs: [
|
||||
{
|
||||
title: '帖子',
|
||||
docs: 'https://docs.rsshub.app/bbs.html#saraba1st',
|
||||
source: '/2b/:id',
|
||||
target: (params) => {
|
||||
const id = params.id.includes('thread') ? params.id.split('-')[1] : '';
|
||||
return id ? `/saraba1st/thread/${id}` : '';
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
'scboy.com': {
|
||||
_name: 'scboy 论坛',
|
||||
www: [
|
||||
{
|
||||
title: '帖子',
|
||||
docs: 'https://docs.rsshub.app/bbs.html#scboy',
|
||||
source: '',
|
||||
target: (params, url) => {
|
||||
const id = url.includes('thread') ? url.split('-')[1].split('.')[0] : '';
|
||||
return id ? `/scboy/thread/${id}` : '';
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
'cqut.edu.cn': {
|
||||
_name: '重庆理工大学',
|
||||
tz: [
|
||||
{
|
||||
title: '通知',
|
||||
docs: 'https://docs.rsshub.app/university.html#chong-qing-li-gong-da-xue',
|
||||
source: '/*',
|
||||
},
|
||||
],
|
||||
lib: [
|
||||
{
|
||||
title: '图书馆通知',
|
||||
docs: 'https://docs.rsshub.app/university.html#chong-qing-li-gong-da-xue',
|
||||
source: '/*',
|
||||
},
|
||||
],
|
||||
},
|
||||
'cqwu.net': {
|
||||
_name: '重庆文理学院',
|
||||
www: [
|
||||
{
|
||||
title: '通知',
|
||||
docs: 'https://docs.rsshub.app/university.html#chong-qing-wen-li-xue-yuan',
|
||||
source: '/:type',
|
||||
target: (params) => {
|
||||
if (params.type === 'channel_7721.html') {
|
||||
return '/cqwu/news/notify';
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '学术活动',
|
||||
docs: 'https://docs.rsshub.app/university.html#chong-qing-wen-li-xue-yuan',
|
||||
source: '/:type',
|
||||
target: (params) => {
|
||||
if (params.type === 'channel_7722.html') {
|
||||
return '/cqwu/news/academiceve';
|
||||
}
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
});
|
||||
|
||||
+2
-1
@@ -16,7 +16,8 @@ services:
|
||||
- browserless
|
||||
|
||||
browserless:
|
||||
image: browserless/chrome
|
||||
# See issue 6680
|
||||
image: browserless/chrome:1.43-chrome-stable
|
||||
restart: always
|
||||
|
||||
redis:
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
<template>
|
||||
<div class="routeBlock" :id="path">
|
||||
<p class="badge">
|
||||
<Badge text="支持 BT" type="tip" vertical="middle" v-if="supportBT"/> <Badge text="支持播客" type="tip" vertical="middle" v-if="supportPodcast"/> <Badge text="支持 Scihub" type="tip" vertical="middle" v-if="supportScihub"/> <a target="_blank" href="/faq.html" v-if="anticrawler"><Badge text="反爬严格" vertical="middle" type="warn"/></a> <a target="_blank" href="https://github.com/DIYgod/RSSHub-Radar" v-if="radar"><Badge text="支持浏览器扩展" vertical="middle" type="tip"/></a> <a target="_blank" href="https://github.com/Cay-Zhang/RSSBud" v-if="rssbud"><Badge text="支持 RSSBud" vertical="middle" type="tip"/></a>
|
||||
<Badge text="支持 BT" type="tip" vertical="middle" v-if="supportBT"/> <Badge text="支持播客" type="tip" vertical="middle" v-if="supportPodcast"/> <Badge text="支持 Scihub" type="tip" vertical="middle" v-if="supportScihub"/> <a target="_blank" href="/faq.html" v-if="anticrawler"><Badge text="反爬严格" vertical="middle" type="warn"/></a> <a target="_blank" href="https://github.com/DIYgod/RSSHub-Radar" v-if="radar"><Badge text="支持浏览器扩展" vertical="middle" type="tip"/></a> <a target="_blank" href="https://github.com/Cay-Zhang/RSSBud" v-if="rssbud"><Badge text="支持 RSSBud" vertical="middle" type="tip"/></a> <a target="_blank" href="https://docs.rsshub.app/install/" v-if="selfhost"><Badge text="仅支持自建" vertical="middle" type="warn"/></a>
|
||||
</p>
|
||||
<p class="author">
|
||||
作者: <a v-for="uid in author.split(' ')" :href="`https://github.com/${uid}`" target="_blank"> @{{ uid }} </a>
|
||||
</p>
|
||||
<p class="example">
|
||||
举例: <a :href="'https://rsshub.app'+ example " target="_blank">https://rsshub.app{{example}}</a>
|
||||
<span>举例:</span> <a :href="demoUrl" target="_blank">{{demoUrl}}</a> <img :src="'https://img.shields.io/website?label=status&style=flat-square&url=' + encodeURIComponent(encodeURI(demoUrl))">
|
||||
</p>
|
||||
<p class="path">
|
||||
路由: <code>{{ path }}</code>
|
||||
@@ -64,6 +64,10 @@ export default {
|
||||
type: String,
|
||||
default: null
|
||||
},
|
||||
selfhost: {
|
||||
type: String,
|
||||
default: null
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
renderMarkdown(item) {
|
||||
@@ -72,17 +76,11 @@ export default {
|
||||
});
|
||||
return md.render(item);
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
demoUrl: function () {
|
||||
return 'https://rsshub.app'+ this.example
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
li.params p {
|
||||
display: inline;
|
||||
}
|
||||
.routeBlock {
|
||||
margin: 1rem 0 2rem;
|
||||
}
|
||||
#app .page .badge.tip {
|
||||
background-color: #FFB74D;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
<template>
|
||||
<div class="routeBlock" :id="path">
|
||||
<p class="badge">
|
||||
<Badge text="support BT" type="tip" vertical="middle" v-if="supportBT"/> <Badge text="support podcast" type="tip" vertical="middle" v-if="supportPodcast"/> <a target="_blank" href="/en/faq.html" v-if="anticrawler"><Badge text="strict anti-crawler policy" vertical="middle" type="warn"/></a> <a target="_blank" href="https://github.com/DIYgod/RSSHub-Radar" v-if="radar"><Badge text="support browser extension" vertical="middle" type="tip"/></a> <a target="_blank" href="https://github.com/Cay-Zhang/RSSBud" v-if="rssbud"><Badge text="support rssbud" vertical="middle" type="tip"/></a>
|
||||
<Badge text="support BT" type="tip" vertical="middle" v-if="supportBT"/> <Badge text="support podcast" type="tip" vertical="middle" v-if="supportPodcast"/> <a target="_blank" href="/en/faq.html" v-if="anticrawler"><Badge text="strict anti-crawler policy" vertical="middle" type="warn"/></a> <a target="_blank" href="https://github.com/DIYgod/RSSHub-Radar" v-if="radar"><Badge text="support browser extension" vertical="middle" type="tip"/></a> <a target="_blank" href="https://github.com/Cay-Zhang/RSSBud" v-if="rssbud"><Badge text="support rssbud" vertical="middle" type="tip"/></a> <a target="_blank" href="https://docs.rsshub.app/en/install/" v-if="selfhost"><Badge text="self-host only" vertical="middle" type="warn"/></a>
|
||||
</p>
|
||||
<p class="author">
|
||||
Author: <a v-for="uid in author.split(' ')" :href="`https://github.com/${uid}`" target="_blank"> @{{ uid }} </a>
|
||||
</p>
|
||||
<p class="example">
|
||||
Example: <a :href="'https://rsshub.app'+ example " target="_blank">https://rsshub.app{{example}}</a>
|
||||
<span>Example:</span> <a :href="demoUrl" target="_blank">{{demoUrl}}</a> <img :src="'https://img.shields.io/website?label=status&style=flat-square&url=' + encodeURIComponent(encodeURI(demoUrl))">
|
||||
</p>
|
||||
<p class="path">
|
||||
Route: <code>{{ path }}</code>
|
||||
@@ -60,6 +60,10 @@ export default {
|
||||
type: String,
|
||||
default: null
|
||||
},
|
||||
selfhost: {
|
||||
type: String,
|
||||
default: null
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
renderMarkdown(item) {
|
||||
@@ -68,17 +72,11 @@ export default {
|
||||
});
|
||||
return md.render(item);
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
demoUrl: function () {
|
||||
return 'https://rsshub.app'+ this.example
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
li.params p {
|
||||
display: inline;
|
||||
}
|
||||
.routeBlock {
|
||||
margin: 1rem 0 2rem;
|
||||
}
|
||||
#app .page .badge.tip {
|
||||
background-color: #FFB74D;
|
||||
}
|
||||
</style>
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 416 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 136 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 613 KiB |
@@ -42,3 +42,28 @@ h3 {
|
||||
.sidebar-sub-headers a.sidebar-link {
|
||||
color: #F5712C;
|
||||
}
|
||||
|
||||
// for Route and RouteEn components
|
||||
li.params p {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.routeBlock {
|
||||
margin: 1rem 0 2rem;
|
||||
}
|
||||
|
||||
.routeBlock .example > * {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.routeBlock .example img {
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
#app .page .badge.tip {
|
||||
background-color: #FFB74D;
|
||||
}
|
||||
|
||||
#app .page .badge.warn {
|
||||
background-color: #ff774d;
|
||||
}
|
||||
|
||||
+1
-1
@@ -25,7 +25,7 @@ RSSHub 是一个开源、简单易用、易于扩展的 RSS 生成器,可以
|
||||
|
||||
### Special Sponsors
|
||||
|
||||
<a style="margin-right: 10px;" href="https://rixcloud.app/rsshub" target="_blank"><img alt="rixCloud" height="60px" src="https://cn-south-17-rsshub-16857749.oss.dogecdn.com/rixcloud.png"></a><a style="margin-right: 10px;" href="https://km.bytell.cn/wxcollect" target="_blank"><img alt="知拾收藏" height="60px" src="https://cn-south-17-rsshub-16857749.oss.dogecdn.com/bytell.png"></a>
|
||||
<a style="margin-right: 10px;" href="https://sa.net/" target="_blank"><img alt="Riven Cloud" height="60px" src="https://cn-south-17-rsshub-16857749.oss.dogecdn.com/rivencloudd.png"></a><a style="margin-right: 10px;" href="https://km.bytell.cn/wxcollect" target="_blank"><img alt="知拾收藏" height="60px" src="https://cn-south-17-rsshub-16857749.oss.dogecdn.com/bytell.png"></a>
|
||||
|
||||
### Sponsors
|
||||
|
||||
|
||||
+5
-1
@@ -288,7 +288,7 @@ pageClass: routes
|
||||
|
||||
### 风之动漫
|
||||
|
||||
<Route author="geeeeoff" path="/fzdm/manhua/:id" example="/fzdm/manhua/39" :paramsDesc="['漫画ID']"/>
|
||||
<Route author="geeeeoff zytomorrow" path="/fzdm/manhua/:id/:nums?" example="/fzdm/manhua/39/2" :paramsDesc="['漫画ID', '最新的n话, 默认为最新1话']" anticrawler="1"/>
|
||||
|
||||
## 海猫吧
|
||||
|
||||
@@ -332,6 +332,10 @@ pageClass: routes
|
||||
|
||||
<Route author="KenMizz" example="/ssmh" path="/ssmh/" />
|
||||
|
||||
### 分类更新
|
||||
|
||||
<Route author="Gandum2077" example="/ssmh/category/6" path="/ssmh/category/:cid" :paramsDesc="['分类的id,即对应 URL 中的数字']" />
|
||||
|
||||
## 鼠绘漫画
|
||||
|
||||
### 鼠绘漫画
|
||||
|
||||
+224
-12
@@ -108,6 +108,12 @@ pageClass: routes
|
||||
| ---- | ------------ | ---- | ----- |
|
||||
| jobs | translations | qa | links |
|
||||
|
||||
## LowEndTalk
|
||||
|
||||
### Discussion
|
||||
|
||||
<Route author="nczitzk" example="/lowendtalk/discussion/168480" path="/lowendtalk/discussion/:id?" :paramsDesc="['讨论 id']"/>
|
||||
|
||||
## MCBBS
|
||||
|
||||
### 版块
|
||||
@@ -168,12 +174,24 @@ pageClass: routes
|
||||
|
||||
### 帖子
|
||||
|
||||
<Route author="zengxs" example="/saraba1st/thread/1789863" path="/saraba1st/thread/:tid" :paramsDesc="['帖子 id']">
|
||||
<Route author="zengxs" example="/saraba1st/thread/1789863" path="/saraba1st/thread/:tid" :paramsDesc="['帖子 id']" radar="1">
|
||||
|
||||
帖子网址如果为 <https://bbs.saraba1st.com/2b/thread-1789863-1-1.html> 那么帖子 id 就是 `1789863`。
|
||||
|
||||
</Route>
|
||||
|
||||
## SCBOY 论坛
|
||||
|
||||
### 帖子
|
||||
|
||||
<Route author="totorowechat" example="/scboy/thread/188673" path="/scboy/thread/:tid" :paramsDesc="['帖子 tid']" radar="1">
|
||||
|
||||
帖子网址如果为 <https://www.scboy.com/?thread-188673.htm> 那么帖子 tid 就是 `1789863`。
|
||||
|
||||
访问水区需要添加环境变量 `SCBOY_BBS_TOKEN`, 详情见部署页面的配置模块。 `SCBOY_BBS_TOKEN`在 cookies 的`bbs_token`中。
|
||||
|
||||
</Route>
|
||||
|
||||
## V2EX
|
||||
|
||||
### 最热 / 最新主题
|
||||
@@ -204,6 +222,22 @@ pageClass: routes
|
||||
|
||||
<Route author="nczitzk" example="/91ddcc/stage/206" path="/91ddcc/stage/:stage" :paramsDesc="['驿站ID,在 URL 可以找到']"/>
|
||||
|
||||
## 超理论坛
|
||||
|
||||
### 板块
|
||||
|
||||
<Route author="nczitzk" example="/chaoli" path="/chaoli/:channel?" :paramsDesc="['板块,见下表,默认为全部']">
|
||||
|
||||
| 数学 | 物理 | 化学 | 生物 | 天文 | 技术 | 管理 | 公告 |
|
||||
| ---- | ------- | ---- | ------- | ----- | ---- | ----- | ------ |
|
||||
| math | physics | chem | biology | astro | tech | admin | announ |
|
||||
|
||||
| 其他 | 语言 | 社科 | 科幻 | 辑录 |
|
||||
| ------ | ---- | ------ | ------ | ----------- |
|
||||
| others | lang | socsci | sci-fi | collections |
|
||||
|
||||
</Route>
|
||||
|
||||
## 电鸭社区
|
||||
|
||||
### 工作机会
|
||||
@@ -226,7 +260,11 @@ pageClass: routes
|
||||
|
||||
### 虎扑 BBS 论坛
|
||||
|
||||
<Route author="LogicJake" example="/hupu/bbs/bxj/2" path="/hupu/bbs/:id/:order?" :paramsDesc="['板块 id,可在板块 URL 找到', '排序方式,1最新回帖(默认),2最新发帖,3精华帖']"/>
|
||||
<Route author="LogicJake" example="/hupu/bbs/bxj/2" path="/hupu/bbs/:id/:order?" :paramsDesc="['板块 id,可在板块 URL 找到', '排序方式,1最新回帖(默认),2最新发帖,3精华帖']">
|
||||
|
||||
此路由与旧的 `/hupu/bxj/:id/:order?` 等价,但推荐使用 `/hupu/bbs/:id/:order?`,旧路由可能会在未来被删除。
|
||||
|
||||
</Route>
|
||||
|
||||
### 分类
|
||||
|
||||
@@ -304,6 +342,7 @@ pageClass: routes
|
||||
| CrackMe | crackme |
|
||||
| Pwn | pwn |
|
||||
| WEB 安全 | web |
|
||||
| 外文翻译 | translate |
|
||||
| 全站 | all |
|
||||
|
||||
| 类型 | type |
|
||||
@@ -373,6 +412,24 @@ pageClass: routes
|
||||
|
||||
</Route>
|
||||
|
||||
## 品葱
|
||||
|
||||
### 发现
|
||||
|
||||
<Route author="zphw" example="/pincong/category/1/new" path="/pincong/category/:category?/:sort?" :paramsDesc="['分类,与官网分类 URL `category-` 后的数字对应,默认为全部', '排序方式,参数可见下表,默认为推荐']" anticrawler="1" />
|
||||
|
||||
| 最新 | 推荐 | 热门 |
|
||||
| ---- | --------- | ---- |
|
||||
| new | recommend | hot |
|
||||
|
||||
### 精选
|
||||
|
||||
<Route author="zphw" example="/pincong/hot" path="/pincong/hot/:category?" :paramsDesc="['分类,与官网分类 URL `category-` 后的数字对应,默认为全部']" anticrawler="1" />
|
||||
|
||||
### 话题
|
||||
|
||||
<Route author="zphw" example="/pincong/topic/美国" path="/pincong/topic/:topic?" :paramsDesc="['话题,可在官网获取']" anticrawler="1" />
|
||||
|
||||
## 三星盖乐世社区
|
||||
|
||||
### 最新帖子
|
||||
@@ -439,6 +496,12 @@ pageClass: routes
|
||||
|
||||
<Route author="u3u" example="/tieba/post/lz/5853240586" path="/tieba/post/lz/:id" :paramsDesc="['帖子 ID']"/>
|
||||
|
||||
### 用户帖子
|
||||
|
||||
<Route author="igxlin nczitzk" example="/tieba/user/斗鱼游戏君" path="/tieba/user/:uid" :paramsDesc="['用户 ID']" />
|
||||
|
||||
用户 ID 可以通过打开用户的主页后查看地址栏的 `un` 字段来获取。
|
||||
|
||||
## 万维读者
|
||||
|
||||
### 焦点新闻
|
||||
@@ -469,24 +532,142 @@ pageClass: routes
|
||||
|
||||
<Route author="DIYgod" example="/mi/bbs/board/18066617" path="/mi/bbs/board/:boardId" :paramsDesc="['圈子 id,可在圈子 URL 找到']" radar="1" rssbud="1"/>
|
||||
|
||||
## 小木虫论坛
|
||||
|
||||
### 期刊点评
|
||||
|
||||
<Route author="nczitzk" example="/muchong/journal" path="/muchong/journal/:type?" :paramsDesc="['类型,见下表']"/>
|
||||
|
||||
| SCI 期刊 | 中文期刊 |
|
||||
| -------- | -------- |
|
||||
| | cn |
|
||||
|
||||
### 分类
|
||||
|
||||
<Route author="nczitzk" example="/muchong/290" path="/muchong/:id/:type?/:sort?" :paramsDesc="['板块 id,可在板块页 URL 中找到', '子类别 id,可在板块页导航栏中找到,默认为 `all` 即 全部', '排序,可选 `order-tid` 即 发表排序,默认为 回帖排序']">
|
||||
|
||||
::: tip 提示
|
||||
|
||||
尚不支持需要登录访问的版块
|
||||
|
||||
:::
|
||||
|
||||
网络生活区
|
||||
|
||||
| 休闲灌水 | 虫友互识 | 文学芳草园 | 育儿交流 | 竞技体育 | 有奖起名 | 有奖问答 | 健康生活 |
|
||||
| -------- | -------- | ---------- | -------- | -------- | -------- | -------- | -------- |
|
||||
| 6 | 133 | 166 | 359 | 377 | 408 | 69 | 179 |
|
||||
|
||||
科研生活区
|
||||
|
||||
| 硕博家园 | 教师之家 | 博后之家 | English Cafe | 职场人生 | 专业外语 | 外语学习 | 导师招生 | 找工作 | 招聘信息布告栏 | 考研 | 考博 | 公务员考试 |
|
||||
| -------- | -------- | -------- | ------------ | -------- | -------- | -------- | -------- | ------ | -------------- | ---- | ---- | ---------- |
|
||||
| 198 | 199 | 342 | 328 | 405 | 432 | 126 | 430 | 185 | 346 | 127 | 197 | 280 |
|
||||
|
||||
学术交流区
|
||||
|
||||
| 论文投稿 | SCI 期刊点评 | 中文期刊点评 | 论文道贺祈福 | 论文翻译 | 基金申请 | 学术会议 | 会议与征稿布告栏 |
|
||||
| -------- | ------------ | ------------ | ------------ | -------- | -------- | -------- | ---------------- |
|
||||
| 125 | 见期刊路由 | 见期刊路由 | 307 | 278 | 234 | 299 | 345 |
|
||||
|
||||
出国留学区
|
||||
|
||||
| 留学生活 | 公派出国 | 访问学者 | 海外博后 | 留学 DIY | 签证指南 | 出国考试 | 海外院所点评 | 海外校友录 | 海归之家 |
|
||||
| -------- | -------- | -------- | -------- | -------- | -------- | -------- | ------------ | ---------- | -------- |
|
||||
| 336 | 131 | 386 | 385 | 334 | 335 | 337 | 399 | 见院校路由 | 428 |
|
||||
|
||||
化学化工区
|
||||
|
||||
| 有机交流 | 有机资源 | 高分子 | 无机 / 物化 | 分析 | 催化 | 工艺技术 | 化工设备 | 石油化工 | 精细化工 | 电化学 | 环境 | SciFinder/Reaxys |
|
||||
| -------- | -------- | ------ | ----------- | ---- | ---- | -------- | -------- | -------- | -------- | ------ | ---- | ---------------- |
|
||||
| 189 | 325 | 236 | 170 | 238 | 190 | 373 | 374 | 212 | 227 | 263 | 230 | 343 |
|
||||
|
||||
材料区
|
||||
|
||||
| 材料综合 | 材料工程 | 微米和纳米 | 晶体 | 金属 | 无机非金属 | 生物材料 | 功能材料 | 复合材料 |
|
||||
| -------- | -------- | ---------- | ---- | ---- | ---------- | -------- | -------- | -------- |
|
||||
| 378 | 379 | 233 | 262 | 301 | 213 | 286 | 364 | 365 |
|
||||
|
||||
计算模拟区
|
||||
|
||||
| 第一性原理 | 量子化学 | 计算模拟 | 分子模拟 | 仿真模拟 | 程序语言 |
|
||||
| ---------- | -------- | -------- | -------- | -------- | -------- |
|
||||
| 291 | 290 | 279 | 322 | 292 | 312 |
|
||||
|
||||
生物医药区
|
||||
|
||||
| 新药研发 | 药学 | 药品生产 | 分子生物 | 微生物 | 动植物 | 生物科学 | 医学 |
|
||||
| -------- | ---- | -------- | -------- | ------ | ------ | -------- | ---- |
|
||||
| 192 | 148 | 429 | 366 | 367 | 368 | 144 | 142 |
|
||||
|
||||
人文经济区
|
||||
|
||||
| 金融投资 | 人文社科 | 管理学 | 经济学 |
|
||||
| -------- | -------- | ------ | ------ |
|
||||
| 272 | 453 | 447 | 446 |
|
||||
|
||||
专业学科区
|
||||
|
||||
| 数理科学综合 | 机械 | 物理 | 数学 | 农林 | 食品 | 地学 | 能源 | 信息科学 | 土木建筑 | 航空航天 | 转基因 |
|
||||
| ------------ | ---- | ---- | ---- | ---- | ---- | ---- | ---- | -------- | -------- | -------- | ------ |
|
||||
| 452 | 370 | 228 | 323 | 371 | 207 | 261 | 372 | 145 | 147 | 434 | 438 |
|
||||
|
||||
注册执考区
|
||||
|
||||
| 化环类执考 | 医药类考试 | 土建类考试 | 经管类考试 | 其他类执考 |
|
||||
| ---------- | ---------- | ---------- | ---------- | ---------- |
|
||||
| 414 | 417 | 418 | 415 | 419 |
|
||||
|
||||
文献求助区
|
||||
|
||||
| 文献求助 | 外文书籍求助 | 标准与专利 | 检索知识 | 代理 Proxy 资源 |
|
||||
| -------- | ------------ | ---------- | -------- | --------------- |
|
||||
| 158 | 219 | 226 | 130 | 203 |
|
||||
|
||||
资源共享区
|
||||
|
||||
| 电脑软件 | 手机资源 | 科研工具 | 科研资料 | 课件资源 | 试题资源 | 资源求助 | 电脑使用 |
|
||||
| -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- |
|
||||
| 55 | 410 | 188 | 300 | 112 | 380 | 401 | 347 |
|
||||
|
||||
科研市场区
|
||||
|
||||
| 课堂列表 | 综合广告 | 试剂耗材抗体 | 仪器设备 | 测试定制合成 | 技术服务 | 留学服务 | 教育培训 | 个人求购专版 | 个人转让专版 | QQ 群 / 公众号专版 | 手机红包 | 金币购物 |
|
||||
| -------- | -------- | ------------ | -------- | ------------ | -------- | -------- | -------- | ------------ | ------------ | ------------------ | -------- | -------- |
|
||||
| 454 | 284 | 390 | 389 | 392 | 396 | 350 | 394 | 316 | 436 | 362 | 302 | 460 |
|
||||
|
||||
论坛事务区
|
||||
|
||||
| 木虫讲堂 | 论坛更新日志 | 论坛公告发布 | 我来提意见 | 版主交流 | 规章制度 | 论坛使用帮助 (只读) | 我与小木虫的故事 |
|
||||
| -------- | ------------ | ------------ | ---------- | -------- | -------- | ------------------- | ---------------- |
|
||||
| 468 | 437 | 5 | 321 | 134 | 317 | 215 | 376 |
|
||||
|
||||
版块孵化区
|
||||
|
||||
| 版块工场 |
|
||||
| -------- |
|
||||
| myf |
|
||||
|
||||
</Route>
|
||||
|
||||
## 一亩三分地
|
||||
|
||||
### 主题帖
|
||||
### 帖子
|
||||
|
||||
<Route author="NavePnow DIYgod" example="/1point3acres/post/hot" path="/1point3acres/post/:category" :paramsDesc="['分类 category, 见下表']"/>
|
||||
|
||||
| 热门帖子 | 最新帖子 |
|
||||
| -------- | -------- |
|
||||
| hot | new |
|
||||
|
||||
### 用户主题帖
|
||||
|
||||
<Route author="Maecenas" example="/1point3acres/user/1/threads" path="/1point3acres/user/:id/threads" :paramsDesc="['用户 id,可在 Instant 版网站的个人主页 URL 找到']"/>
|
||||
|
||||
### 回帖
|
||||
### 用户回帖
|
||||
|
||||
<Route author="Maecenas" example="/1point3acres/user/1/posts" path="/1point3acres/user/:id/posts" :paramsDesc="['用户 id,可在 Instant 版网站的个人主页 URL 找到']"/>
|
||||
|
||||
### 帖子 (手机端的最热与最新 Tab)
|
||||
|
||||
<Route author="NavePnow" example="/1point3acres/post/hot" path="/1point3acres/post/:category" :paramsDesc="['分类 category, 见下表']"/>
|
||||
|
||||
| 最热帖子 | 最新帖子 |
|
||||
| -------- | -------- |
|
||||
| hot | new |
|
||||
|
||||
### 录取结果
|
||||
|
||||
<Route author="NavePnow" example="/1point3acres/offer/12/null/CMU" path="/1point3acres/offer/:year?/:major?/:school?" :paramsDesc="['录取年份 id,空为null', '录取专业 id,空为null', '录取学校 id,空为null']">
|
||||
@@ -502,6 +683,37 @@ pageClass: routes
|
||||
:::
|
||||
</Route>
|
||||
|
||||
### 博客
|
||||
|
||||
<Route author="nczitzk" example="/1point3acres/blog" path="/1point3acres/blog/:category?" :paramsDesc="['分类,见下表,可在对应分类页 URL 中找到']">
|
||||
|
||||
| 分类 | 分类名 |
|
||||
| ---------- | --------------------------------------------------------------------- |
|
||||
| 全部 | |
|
||||
| 一亩三分地 | 一亩三分地 |
|
||||
| 论坛精华 | 一亩三分地 - 论坛精华 |
|
||||
| 咨询服务 | 咨询服务 |
|
||||
| 学校院系 | 学校院系信息 |
|
||||
| 找工求职 | 如何找工作 |
|
||||
| 美国经济 | 如何找工作 - 美国经济与就业 |
|
||||
| 杂谈其他 | 其他类别 |
|
||||
| 抄袭 | 其他类别 - 抄袭 |
|
||||
| 直播 | 其他类别 - 直播 |
|
||||
| 热门专业 | eecsmis 统计金工等热门专业 |
|
||||
| EECSMIS | eecsmis 统计金工等热门专业 - eecsmis 专业 |
|
||||
| 数据科学 | eecsmis 统计金工等热门专业 - 数据科学 |
|
||||
| 统计金工 | eecsmis 统计金工等热门专业 - 生物统计金融工程公共健康生物技术制药行业 |
|
||||
| 留学申请 | 留学申请信息 |
|
||||
| GT 考试 | 留学申请信息 - gt 考试 |
|
||||
| 定位 | 留学申请信息 - 定位 |
|
||||
| 文书写作 | 留学申请信息 - 文书写作 |
|
||||
| 面试 | 留学申请信息 - 面试 |
|
||||
| 移民绿卡 | 移民办绿卡 |
|
||||
| 美国学习 | 美国学习 |
|
||||
| 美国生活 | 美国生活 |
|
||||
|
||||
</Route>
|
||||
|
||||
## 直播吧
|
||||
|
||||
### 子论坛
|
||||
|
||||
@@ -10,12 +10,20 @@ pageClass: routes
|
||||
|
||||
<Route author="kt286" example="/archdaily" path="/archdaily"/>
|
||||
|
||||
## Benedict Evans
|
||||
|
||||
<Route author="emdoe" example="/benedictevans" path="/benedictevans"/>
|
||||
|
||||
## Google Sites
|
||||
|
||||
### 文章更新
|
||||
|
||||
<Route author="hoilc" example="/google/sites/outlierseconomics" path="/google/sites/:id" :paramsDesc="['Site ID, 可在 URL 中找到']" radar="1" rssbud="1"/>
|
||||
|
||||
## Gwern Branwen
|
||||
|
||||
<Route author="cerebrater" example="/gwern/newest" path="/gwern/:category" :paramsDesc="['網誌主頁的分類訊息']"/>
|
||||
|
||||
## Hedwig.pub
|
||||
|
||||
<Route author="zwithz" example="/blogs/hedwig/zmd" path="/blogs/hedwig/:type" :paramsDesc="['分类, 见下表']"/>
|
||||
@@ -72,6 +80,12 @@ pageClass: routes
|
||||
|
||||
<Route author="Maecenas" example="/blogs/paulgraham" path="/blogs/paulgraham"/>
|
||||
|
||||
## Phrack Magazine
|
||||
|
||||
### 文章
|
||||
|
||||
<Route author="CitrusIce" example="/phrack" path="/phrack" />
|
||||
|
||||
## WordPress
|
||||
|
||||
<Route author="Lonor" example="/blogs/wordpress/lawrence.code.blog" path="/blogs/wordpress/:domain/:https?" :paramsDesc="['WordPress 博客域名', '默认 https 协议。填写 `http`或`https`']"/>
|
||||
|
||||
@@ -122,6 +122,42 @@ Behance 用户主页 URL 获取用户名,如 <https://www.behance.net/mishapet
|
||||
|
||||
<Route author="MisteryMonster" example="/unit-image/films/vfx" path="/unit-image/films/:type?" :paramsDesc="['Films 下分类,`vfx`, `game-trailer`, `animation`, `commercials`, `making-of`']"/>
|
||||
|
||||
## 优设网
|
||||
|
||||
### 设计专题
|
||||
|
||||
<Route author="nczitzk" example="/uisdc/zt/design-history" path="/uisdc/zt/:title?" :paramsDesc="['专题名称,可在标签页的 URL 中找到,如 `design-history`;也可填入 `hot` 展示最热门专题,默认展示最新鲜专题']">
|
||||
|
||||
更多设计专题请参见 [优设专题](https://www.uisdc.com/zt)
|
||||
|
||||
</Route>
|
||||
|
||||
### 细节猎人
|
||||
|
||||
<Route author="nczitzk" example="/uisdc/topic/all" path="/uisdc/topic/:title?/:sort?" :paramsDesc="['标签名称,可在标签页的 URL 中找到', '排序方式,`hot` 指最热门,默认为最新鲜']">
|
||||
|
||||
更多细节标签请参见 [全部标签](https://www.uisdc.com/alltopics)
|
||||
|
||||
</Route>
|
||||
|
||||
### 设计话题
|
||||
|
||||
<Route author="nczitzk" example="/uisdc/talk" path="/uisdc/talk/:sort?" :paramsDesc="['排序方式,`hot` 指最热门,默认为最新鲜']"/>
|
||||
|
||||
### 行业新闻
|
||||
|
||||
<Route author="nczitzk" example="/uisdc/hangye" path="/uisdc/hangye/:caty?" :paramsDesc="['分类,见下表,默认为全部新闻']">
|
||||
|
||||
| 全部新闻 | 活动赛事 | 品牌资讯 | 新品推荐 |
|
||||
| -------- | --------------- | ---------- | ------------ |
|
||||
| | events-activity | brand-news | new-products |
|
||||
|
||||
</Route>
|
||||
|
||||
### 优设读报
|
||||
|
||||
<Route author="nczitzk" example="/uisdc/news" path="/uisdc/news"/>
|
||||
|
||||
## 站酷
|
||||
|
||||
### 推荐
|
||||
|
||||
+1
-1
@@ -25,7 +25,7 @@ RSSHub can be used with browser extension [RSSHub Radar](https://github.com/DIYg
|
||||
|
||||
### Special Sponsors
|
||||
|
||||
<a style="margin-right: 10px;" href="https://rixcloud.app/rsshub" target="_blank"><img height="60px" src="https://i.imgur.com/TrgP3S1.png"></a><a style="margin-right: 10px;" href="https://km.bytell.cn/wxcollect" target="_blank"><img height="60px" src="https://i.imgur.com/7sNM1yi.png"></a>
|
||||
<a style="margin-right: 10px;" href="https://sa.net/" target="_blank"><img height="60px" src="https://i.imgur.com/3rM8nWI.png"></a><a style="margin-right: 10px;" href="https://km.bytell.cn/wxcollect" target="_blank"><img height="60px" src="https://i.imgur.com/7sNM1yi.png"></a>
|
||||
|
||||
### Sponsors
|
||||
|
||||
|
||||
@@ -29,3 +29,21 @@ pageClass: routes
|
||||
| x | 7 |
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## LowEndTalk
|
||||
|
||||
### Discussion
|
||||
|
||||
<RouteEn author="nczitzk" example="/lowendtalk/discussion/168480" path="/lowendtalk/discussion/:id?" :paramsDesc="['Discussion id']"/>
|
||||
|
||||
## SCBOY forum
|
||||
|
||||
### Thread
|
||||
|
||||
<RouteEn author="totorowechat" example="/scboy/thread/188673" path="/scboy/thread/:tid" :paramsDesc="['thread tid']" radar="1">
|
||||
|
||||
If the url of the thread is <https://www.scboy.com/?thread-188673.htm> then tid would be `1789863`.
|
||||
|
||||
When accessing Joeyray's Bar, `SCBOY_BBS_TOKEN` needs to be filled in `environment`. See <https://docs.rsshub.app/en/install/#Deployment> for details. `SCBOY_BBS_TOKEN` is included in cookies with `bbs_token`.
|
||||
|
||||
</RouteEn>
|
||||
|
||||
@@ -31,3 +31,14 @@ pageClass: routes
|
||||
### Essays
|
||||
|
||||
<RouteEn author="Maecenas" example="/blogs/paulgraham" path="/blogs/paulgraham"/>
|
||||
|
||||
## Phrack Magazine
|
||||
|
||||
### Article
|
||||
|
||||
<RouteEn author="CitrusIce" example="/phrack" path="/phrack" />
|
||||
|
||||
## WordPress
|
||||
|
||||
<Route author="Lonor" example="/blogs/wordpress/lawrence.code.blog" path="/blogs/wordpress/:domain/:https?" :paramsDesc="['WordPress blog domain', 'use https by default. options: `http` or `https`']"/>
|
||||
|
||||
|
||||
@@ -4,6 +4,52 @@ pageClass: routes
|
||||
|
||||
# Gaming
|
||||
|
||||
## Blizzard
|
||||
|
||||
### News
|
||||
|
||||
<RouteEn author="nczitzk" example="/blizzard/news" path="/blizzard/news/:language?/:category?" :paramsDesc="['Language code, see below, en-US by default', 'Category, see below, All News by default']">
|
||||
|
||||
Categories
|
||||
|
||||
| Category | Slug |
|
||||
| ---------------------- | ------------------- |
|
||||
| All News | |
|
||||
| Diablo III | diablo3 |
|
||||
| Diablo IV | diablo4 |
|
||||
| Diablo: Immortal | diablo-immortal |
|
||||
| Hearthstone | hearthstone |
|
||||
| Heroes of the Storm | heroes-of-the-storm |
|
||||
| Overwatch | overwatch |
|
||||
| StarCraft: Remastered | starcraft |
|
||||
| StarCraft II | starcraft2 |
|
||||
| World of Warcraft | world-of-warcraft |
|
||||
| Warcraft III: Reforged | warcraft3 |
|
||||
| BlizzCon | blizzcon |
|
||||
| Inside Blizzard | blizzard |
|
||||
|
||||
Language codes
|
||||
|
||||
| Language | Code |
|
||||
| -------------- | ----- |
|
||||
| Deutsch | de-de |
|
||||
| English (US) | en-us |
|
||||
| English (EU) | en-gb |
|
||||
| Español (EU) | es-es |
|
||||
| Español (AL) | es-mx |
|
||||
| Français | fr-fr |
|
||||
| Italiano | it-it |
|
||||
| Português (AL) | pt-br |
|
||||
| Polski | pl-pl |
|
||||
| Русский | ru-ru |
|
||||
| 한국어 | ko-kr |
|
||||
| ภาษาไทย | th-th |
|
||||
| 日本語 | ja-jp |
|
||||
| 繁體中文 | zh-tw |
|
||||
| 简体中文 | zh-cn |
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## dekudeals
|
||||
|
||||
### Category
|
||||
@@ -16,6 +62,12 @@ pageClass: routes
|
||||
|
||||
<RouteEn author="Zyx-A" example="/epicgames/freegames" path="/epicgames/freegames"/>
|
||||
|
||||
## Konami
|
||||
|
||||
### PES Mobile Announcement
|
||||
|
||||
<RouteEn author="HenryQW" example="/konami/pesmobile/en/ios" path="/konami/pesmobile/:lang?/:os?" :paramsDesc="['language, obtained from the URL, eg. zh-cn, zh-tw, en', 'operating system,iOS or Android']"/>
|
||||
|
||||
## Metacritic
|
||||
|
||||
### Game Releases
|
||||
@@ -52,6 +104,14 @@ Sorting types, default to `date`:
|
||||
|
||||
<RouteEn author="Indexyz" example="/curseforge/files/jei" path="/curseforge/files/:project" :paramsDesc="['Progect shortname or `Project ID`. The short name of the project can be found in the address bar, for exmaple `https://minecraft.curseforge.com/projects/non-update` to `non-update`. `Project ID` can be found in `About This Project` in `Overview`']"/>
|
||||
|
||||
### Feed The Beast Modpack Updates
|
||||
|
||||
<RouteEn author="gucheen" example="/feed-the-beast/modpack/ftb_presents_direwolf20_1_16" path="/feed-the-beast/modpack/:modpackEntry" :paramsDesc="['entry name of modpack.']">
|
||||
| param | description |
|
||||
| ------| ------------ |
|
||||
| modpackEntry | The entry name of modpack, can be found in modpack\'s page link, for `https://www.feed-the-beast.com/modpack/ftb_presents_direwolf20_1_16`, use `ftb_presents_direwolf20_1_16`. |
|
||||
</RouteEn>
|
||||
|
||||
## Nintendo
|
||||
|
||||
### eShop New Game Releases
|
||||
@@ -114,6 +174,18 @@ For instance, in `https://store.steampowered.com/search/?specials=1&term=atelier
|
||||
|
||||
<RouteEn author="maple3142" example="/steam/news/282800" path="/steam/news/:appids" :paramsDesc="['game id']" radar="1" rssbud="1"/>
|
||||
|
||||
|
||||
::: tip
|
||||
|
||||
Steam provides some official RSS feeds:
|
||||
|
||||
- Game News: https://store.steampowered.com/feeds/news/app/412830/
|
||||
- Curator/Group/Publisher/Developer News: https://store.steampowered.com/feeds/news/group/35143931/
|
||||
|
||||
Game News use the AppID while the rest are only available in the Steam News UI, it seems.
|
||||
|
||||
:::
|
||||
|
||||
## SteamGifts
|
||||
|
||||
### Discussions
|
||||
|
||||
+40
-1
@@ -4,12 +4,51 @@ pageClass: routes
|
||||
|
||||
# Goverment
|
||||
|
||||
## Central Intelligence Agency
|
||||
|
||||
### Annual FOIA Reports
|
||||
|
||||
<RouteEn author="nczitzk" example="/cia/foia-annual-report" path="/cia/foia-annual-report"/>
|
||||
## Ministry of Foreign Affairs of Japan
|
||||
|
||||
### Press conference
|
||||
|
||||
<RouteEn author="sgqy" example="/go.jp/mofa" path="/go.jp/mofa"/>
|
||||
|
||||
## Supreme Court of the United States
|
||||
|
||||
### Arguments Audios
|
||||
|
||||
<RouteEn author="nczitzk" example="/us/supremecourt/argument_audio" path="/us/supremecourt/argument_audio/:year?" :paramsDesc="['Year, current year by default']"/>
|
||||
|
||||
## The United States Trade Representative
|
||||
|
||||
### Press Releases
|
||||
|
||||
<RouteEn author="nczitzk" example="/ustr/press-releases" path="/ustr/press-releases/:year?/:month?" :paramsDesc="['Year, current year by default', 'Month, empty by default, show contents in all year']">
|
||||
|
||||
::: tip Tip
|
||||
|
||||
Fill in the English expression for the month in the Month field, eg `December` for the 12th Month。
|
||||
|
||||
:::
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## U.S. Department of the Treasury
|
||||
|
||||
### Press Releases
|
||||
|
||||
<RouteEn author="nczitzk" example="/treasury/press-releases" path="/treasury/press-releases/:category?/:title?" :paramsDesc="['Category, see below, all by default', 'Title keywords, empty by default']">
|
||||
|
||||
Category
|
||||
|
||||
| Press Releases | Statements & Remarks | Readouts | Testimonies |
|
||||
| -------------- | -------------------- | -------- | ----------- |
|
||||
| all | statements-remarks | readouts | testimonies |
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## United Nations
|
||||
|
||||
### Security Council Vetoed a Resolution
|
||||
@@ -20,4 +59,4 @@ pageClass: routes
|
||||
|
||||
### Dispute settlement news
|
||||
|
||||
<RouteEn author="nczitzk" example="/wto/dispute-settlement" path="/wto/dispute-settlement/:year?" :paramsDesc="['Year, current year by default']"/>
|
||||
<RouteEn author="nczitzk" example="/wto/dispute-settlement" path="/wto/dispute-settlement/:year?" :paramsDesc="['Year, current year by default']"/>
|
||||
|
||||
@@ -104,6 +104,35 @@ $ docker run -d --name rsshub -p 1200:1200 -e CACHE_EXPIRE=3600 -e GITHUB_ACCESS
|
||||
|
||||
To configure more options please refer to [Configuration](#configuration).
|
||||
|
||||
# Ansible Deployment
|
||||
|
||||
This Ansible playbook includes RSSHub, Redis, browserless (uses Docker) and Caddy 2
|
||||
|
||||
Currently only support Ubuntu 20.04
|
||||
|
||||
Requires sudo privilege and virtualization capability (Docker will be automatically installed)
|
||||
|
||||
### Install
|
||||
|
||||
```bash
|
||||
sudo apt update
|
||||
sudo apt install ansible
|
||||
git clone https://github.com/DIYgod/RSSHub.git ~/RSSHub
|
||||
cd ~/RSSHub/scripts/ansible
|
||||
sudo ansible-playbook rsshub.yaml
|
||||
# When prompt to enter a domain name, enter the domain name that this machine/VM will use
|
||||
# For example, if your users use https://rsshub.exmaple.com to access your RSSHub instance, enter rsshub.exmaple.com (remove the https://)
|
||||
```
|
||||
|
||||
### Update
|
||||
|
||||
```bash
|
||||
cd ~/RSSHub/scripts/ansible
|
||||
sudo ansible-playbook rsshub.yaml
|
||||
# When prompt to enter a domain name, enter the domain name that this machine/VM will use
|
||||
# For example, if your users use https://rsshub.exmaple.com to access your RSSHub instance, enter rsshub.exmaple.com (remove the https://)
|
||||
```
|
||||
|
||||
## Manual Deployment
|
||||
|
||||
The most direct way to deploy `RSSHub`, you can follow the steps below to deploy`RSSHub` on your computer, server or anywhere.
|
||||
@@ -318,8 +347,6 @@ RSSHub supports two caching methods: memory and redis
|
||||
|
||||
`REDIS_URL`: Redis target address(invalid when `CACHE_TYPE` is set to memory), default to `redis://localhost:6379/`
|
||||
|
||||
`REDIS_PASSWORD`: Redis password(invalid when `CACHE_TYPE` is set to memory)
|
||||
|
||||
### Proxy Configurations
|
||||
|
||||
Partial routes have a strict anti-crawler policy, and can be configured to use proxy
|
||||
@@ -333,6 +360,9 @@ Partial routes have a strict anti-crawler policy, and can be configured to use p
|
||||
`PROXY_AUTH`: credentials to authenticate a user agent to proxy server, `Proxy-Authorization: Basic ${process.env.PROXY_AUTH}`
|
||||
|
||||
`PROXY_URL_REGEX`: regex for url of enabling proxy, default to `.*`
|
||||
### CORS Request
|
||||
|
||||
RSSHub by default reject CORS requests. This behavior can be modified via setting `ALLOW_ORIGIN: *` or `ALLOW_ORIGIN: www.example.com`.
|
||||
|
||||
### User Authentication Configurations
|
||||
|
||||
@@ -391,7 +421,9 @@ See the relation between access key/code and white/blacklisting.
|
||||
|
||||
`REQUEST_RETRY`: retries allowed for failed requests, default to `2`
|
||||
|
||||
`DEBUG_INFO`: display route information on homepage for debugging purpose, default to `true`
|
||||
`REQUEST_TIMEOUT`: milliseconds to wait for the server to end the response before aborting the request with error, default to `3000`
|
||||
|
||||
`DEBUG_INFO`: display route information on homepage for debugging purpose. When set to neither `true` nor `false`, use parameter `debug` to enable display, eg: <https://rsshub.app/?debug=value_of_DEBUG_INFO> . Default to `true`
|
||||
|
||||
`NODE_ENV`: display error message on pages for authentication failing, default to `production` (i.e. no display)
|
||||
|
||||
@@ -403,6 +435,8 @@ See the relation between access key/code and white/blacklisting.
|
||||
|
||||
`SENTRY`: [Sentry](https://sentry.io) dsn, used for error tracking
|
||||
|
||||
`SENTRY_ROUTE_TIMEOUT`: Report Sentry if route execution takes more than this milliseconds, default to `3000`
|
||||
|
||||
`DISALLOW_ROBOT`: prevent indexing by search engine, default to enable, set false or 0 to disable
|
||||
|
||||
`HOTLINK_TEMPLATE`: Replace image link in description to avoid anti-hotlink protection, leave blank to disable this function. Usage reference [#2769](https://github.com/DIYgod/RSSHub/issues/2769). You may use any properity listed in [URL](https://developer.mozilla.org/en-US/docs/Web/API/URL#Properties), format of JS template literal. e.g. `${protocol}//${host}${pathname}`, `https://i3.wp.com/${host}${pathname}`
|
||||
@@ -444,7 +478,7 @@ See docs of specified route and `lib/config.js` for detail information.
|
||||
|
||||
- `TWITTER_CONSUMER_SECRET`: Twitter Consumer Secret, support multiple keys, split them with `,`
|
||||
|
||||
- `TWITTER_TOKEN_{id}`: Twitter token's corresponding id, replace `{id}` with the id, the value is a combination of `consumer_key consumer_secret access_token access_token_secret` by a comma `,`. Eg. `{consumer_key},{consumer_secret},{access_token},{access_token_secret}`.
|
||||
- `TWITTER_TOKEN_{handler}`: The token generated by the corresponding Twitter handler, replace `{handler}` with the Twitter handler, the value is a combination of `Twitter API key, Twitter API key secret, Access token, Access token secret` connected by a comma `,`. Eg. `TWITTER_TOKEN_RSSHub=bX1zry5nG4d1RbESQbnADpVIo,2YrD8qo9sXbB8VlYfVmo1Qtw0xsexnOliU5oZofq7aPIGou0Xx,123456789-hlkUHFYmeXrRcf6SEQciP8rP4lzmRgMgwdqIN9aK,pHcPnfa28rCIKhSICUCiaw9ppuSSl7T2f3dnGYpSM0bod`.
|
||||
|
||||
- youtube: [API Key application](https://console.developers.google.com/)
|
||||
|
||||
@@ -458,6 +492,14 @@ See docs of specified route and `lib/config.js` for detail information.
|
||||
|
||||
- `GITHUB_ACCESS_TOKEN`: GitHub Access Token
|
||||
|
||||
- Instagram:
|
||||
|
||||
- `IG_USERNAME`: Your Instagram username
|
||||
- `IG_PASSWORD`: Your Instagram password
|
||||
- `IG_PROXY`: Proxy URL for Instagram
|
||||
|
||||
Warning: Two Factor Authentication is *not* supported.
|
||||
|
||||
- mail:
|
||||
|
||||
- `EMAIL_CONFIG_{email}`: Mail setting, replace `{email}` with the email account, replace `@` in email account with `.`, eg. `EMAIL_CONFIG_xxx.gmail.com`. The value is in the format of `password=password&host=server&port=port`, eg:
|
||||
@@ -481,4 +523,16 @@ See docs of specified route and `lib/config.js` for detail information.
|
||||
|
||||
- Sci-hub for scientific journal routes:
|
||||
|
||||
- `SCIHUB_HOST`: The Sci-hub mirror address that is accssible from your location, default to `https://sci-hub.tw`.
|
||||
- `SCIHUB_HOST`: The Sci-hub mirror address that is accssible from your location, default to `https://sci-hub.se`.
|
||||
|
||||
- Wordpress:
|
||||
- `WORDPRESS_CDN`: Proxy http image link with https link. Consider using:
|
||||
|
||||
| url | backbone |
|
||||
| ---------------------------------------- | ------------ |
|
||||
| https://imageproxy.pimg.tw/resize?url= | akamai |
|
||||
| https://images.weserv.nl/?url= | cloudflare |
|
||||
| https://pic1.xuehuaimg.com/proxy/ | cloudflare |
|
||||
| https://cors.netnr.workers.dev/ | cloudflare |
|
||||
| https://netnr-proxy.openode.io/ | digitalocean |
|
||||
|
||||
|
||||
@@ -90,6 +90,10 @@ The parameter id in the route is the id in the URL of the user ’s Google Schol
|
||||
|
||||
## MIT Technology Review
|
||||
|
||||
<RouteEn author="zphw" example="/technologyreview" path="/technologyreview" />
|
||||
|
||||
### Topics
|
||||
|
||||
<RouteEn author="laampui" example="/technologyreview/humans-and-technology" path="/technologyreview/:category_name" :paramsDesc="['see below']" />
|
||||
|
||||
|
||||
|
||||
@@ -6,9 +6,9 @@ pageClass: routes
|
||||
|
||||
## 60-Second Science - Scientific American
|
||||
|
||||
### Transcript
|
||||
<RouteEn author="emdoe" example="/60s-science" path="/60s-science"/>
|
||||
|
||||
<RouteEn author="emdoe" example="/60s-science/transcript" path="/60s-science/transcript"/>
|
||||
Full transcript support for better user experience.
|
||||
|
||||
## 99% Invisible
|
||||
|
||||
@@ -113,6 +113,6 @@ Official RSS: https://eztv.io/ezrss.xml
|
||||
|
||||
<RouteEn author="fallenhh" example="/soundcloud/tracks/angeart" path="/soundcloud/tracks/:user" :paramsDesc="['User name']" />
|
||||
|
||||
## Youtube
|
||||
## YouTube
|
||||
|
||||
Refer to [#youtube](/en/social-media.html#youtube)
|
||||
|
||||
@@ -35,6 +35,24 @@ Compared to the official one, the RSS feed generated by RSSHub not only has more
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## ASML Holding N.V.
|
||||
|
||||
### Press releases & announcements
|
||||
|
||||
<RouteEn author="nczitzk" example="/asml/press-releases" path="/asml/press-releases"/>
|
||||
|
||||
## Bell Labs
|
||||
|
||||
### Event and News
|
||||
|
||||
<RouteEn author="nczitzk" example="/bell-labs/events-news" path="/bell-labs/events-news/:category?" :paramsDesc="['Category, see below, Press releases by default']">
|
||||
|
||||
| Featured events | Latest recognition | Press releases |
|
||||
| ------- | ---------- | -------- |
|
||||
| events | industry-recognition | press-releases |
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## BOF
|
||||
|
||||
### Home
|
||||
@@ -49,6 +67,10 @@ Compared to the official one, the RSS feed generated by RSSHub not only has more
|
||||
|
||||
## CGTN
|
||||
|
||||
### Opinions
|
||||
|
||||
<RouteEn author="nczitzk" example="/cgtn/opinions" path="/cgtn/opinions"/>
|
||||
|
||||
### Most Read & Most Share
|
||||
|
||||
<RouteEn author="nczitzk" example="/cgtn/most/read/day" path="/cgtn/most/:type?/:time?" :paramsDesc="['Type, `read` as most read, `share` as most share, `read` by default', 'Time range, `all` as all the time, `day` as today, `week` as this week, `month` as this month, `year` as this year, `all` by default']"/>
|
||||
@@ -57,6 +79,56 @@ Compared to the official one, the RSS feed generated by RSSHub not only has more
|
||||
|
||||
<RouteEn author="nczitzk" example="/cgtn/top" path="/cgtn/top"/>
|
||||
|
||||
### Editors' Pick
|
||||
|
||||
<RouteEn author="nczitzk" example="/cgtn/pick" path="/cgtn/pick"/>
|
||||
|
||||
## China Labour Bulletin
|
||||
|
||||
### Commentary and Analysis
|
||||
|
||||
<RouteEn author="nczitzk" example="/clb/commentary" path="/clb/commentary/:lang?" :paramsDesc="['Language, Simplified Chinese by default, or `en` as English']"/>
|
||||
|
||||
## China Labour Watch
|
||||
|
||||
### Reports
|
||||
|
||||
<RouteEn author="nczitzk" example="/chinalaborwatch/reports" path="/chinalaborwatch/reports/:lang?/:industry?" :paramsDesc="['Language, English by default, or `cn` as Simplified Chinese', 'Industry id, see below, all by default']">
|
||||
|
||||
| All | Automotive | Cookware | Electronics | Footwear | Furniture | Garment | General | Printing | Retail | Toys |
|
||||
| - | - | - | - | - | - | - | - | - | - | - |
|
||||
| | 2 | 6 | 14 | 3 | 4 | 10 | 8 | 1 | 9 | 7 |
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## Day One
|
||||
|
||||
### Blog
|
||||
|
||||
<RouteEn author="nczitzk" example="/dayone/blog" path="/dayone/blog"/>
|
||||
|
||||
## DeepMind
|
||||
|
||||
### Blog
|
||||
|
||||
<RouteEn author="nczitzk" example="/deepmind/blog" path="/deepmind/blog/:category?" :paramsDesc="['Category, see below']">
|
||||
|
||||
| All | Podcasts | Research | News |
|
||||
| --- | -------- | -------- | ---- |
|
||||
| | Podcasts | Research | News |
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## Deutsche Welle
|
||||
|
||||
<RouteEn author="nczitzk" example="/dw/en" path="/dw/:lang?/:caty?" :paramsDesc="['Language, can be found in the URL of the corresponding language version page, German by default', 'Category, all by default']">
|
||||
|
||||
| All | German Press | Culture | Economy | Science & Nature |
|
||||
| ---- | -------- | -------- | -------- | -------- |
|
||||
| all | press | cul | eco | sci |
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## Engadget
|
||||
|
||||
### Chinese
|
||||
@@ -95,6 +167,30 @@ Provides a better reading experience (full text articles) over the official one.
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## Institute of International Education
|
||||
|
||||
### Blog
|
||||
|
||||
<RouteEn author="nczitzk" example="/iie/blog" path="/iie/blog" />
|
||||
|
||||
## International Energy Agency
|
||||
|
||||
### News and events
|
||||
|
||||
<RouteEn author="nczitzk" example="/iea/news-and-events" path="/iea/:category?" :paramsDesc="['Category, see below, Featured by default']">
|
||||
|
||||
| Featured | News | Calendar | Past events |
|
||||
| --------------- | ---- | -------- | ----------- |
|
||||
| news-and-events | news | calendar | past-events |
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## International Mathematical Union
|
||||
|
||||
### Fields Medal
|
||||
|
||||
<RouteEn author="nczitzk" example="/mathunion/fields-medal" path="/mathunion/fields-medal"/>
|
||||
|
||||
## Letterboxd
|
||||
|
||||
### User diary
|
||||
@@ -105,6 +201,10 @@ Provides a better reading experience (full text articles) over the official one.
|
||||
|
||||
<RouteEn author="loganrockmore" example="/letterboxd/user/followingdiary/demiadejuyigbe" path="/letterboxd/user/followingdiary/:username" :paramsDesc="['username']" />
|
||||
|
||||
## MakeUseOf
|
||||
|
||||
<RouteEn author="nczitzk" example="/makeuseof" path="/makeuseof/:category?" :paramsDesc="['Category, Trending by default']"/>
|
||||
|
||||
## Matters
|
||||
|
||||
### Latest
|
||||
@@ -123,6 +223,18 @@ Provides a better reading experience (full text articles) over the official one.
|
||||
|
||||
<RouteEn author="Cerebrater" example="/matters/author/az" path="/matters/author/:uid" :paramsDesc="['Author id, can be found at author\'s homepage url']" radar="1" rssbud="1"/>
|
||||
|
||||
## National Association of Colleges and Employers
|
||||
|
||||
### Blog
|
||||
|
||||
<RouteEn author="nczitzk" example="/nace/blog" path="/nace/blog/:sort?" :paramsDesc="['Sort, see below, Most Recent by default']">
|
||||
|
||||
| Most Recent | Top Rated | Most Read |
|
||||
| - | - | - |
|
||||
| | top-blogs | mostreadblogs |
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## Nautilus
|
||||
|
||||
### Topics
|
||||
@@ -133,6 +245,30 @@ This route provides a flexible plan with full text content to subscribe specific
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## Oak Ridge National Laboratory
|
||||
|
||||
### News
|
||||
|
||||
<RouteEn author="nczitzk" example="/ornl/news" path="/ornl/news"/>
|
||||
|
||||
## OpenAI
|
||||
|
||||
### Blog
|
||||
|
||||
<RouteEn author="ncziztk" example="/openai/blog" path="/openai/blog/:tag" :paramsDesc="['Tag, see below, All by default']">
|
||||
|
||||
| All | Research | Announcements | Events | Milestones |
|
||||
| --- | -------- | ------------- | ------ | ---------- |
|
||||
| | research | announcements | events | milestones |
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## Polar
|
||||
|
||||
### Blog
|
||||
|
||||
<RouteEn author="nczitzk" example="/polar/blog" path="/polar/blog"/>
|
||||
|
||||
## Quanta Magazine
|
||||
|
||||
### Archive
|
||||
@@ -146,6 +282,12 @@ Compared to the official one, this feed:
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## Semiconductor Industry Association
|
||||
|
||||
### Latest News
|
||||
|
||||
<RouteEn author="nczitzk" example="/semiconductors/latest-news" path="/semiconductors/latest-news"/>
|
||||
|
||||
## Simons Foundation
|
||||
|
||||
### Articles
|
||||
@@ -188,6 +330,18 @@ Compared to the official one, this feed:
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## The Brain
|
||||
|
||||
### Blog
|
||||
|
||||
<RouteEn author="nczitzk" example="/thebrain/blog" path="/thebrain/blog/:category?" :paramsDesc="['Category, see below, Blog by default']">
|
||||
|
||||
| Blog | Recorded Events | Big Thinkers |
|
||||
| ---- | ---- | ---- |
|
||||
| blog | recorded-events | big-thinkers |
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## The Verge
|
||||
|
||||
<RouteEn author="HenryQW" example="/verge" path="/verge">
|
||||
@@ -196,6 +350,20 @@ Provides a better reading experience (full text articles) over the official one.
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## Thrillist
|
||||
|
||||
<RouteEn author="loganrockmore" example="/thrillist/food-and-drink" path="/vulture/:tag" :paramsDesc="['Tag']">
|
||||
|
||||
Provides all of the Thrillist articles with the specified tag.
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## VOA News
|
||||
|
||||
### Day in Photos
|
||||
|
||||
<RouteEn author="nczitzk" example="/voa/day-photos" path="/voa/day-photos"/>
|
||||
|
||||
## Vulture
|
||||
|
||||
<RouteEn author="loganrockmore" example="/vulture/movies" path="/vulture/:tag/:excludetags?" :paramsDesc="['Tag', 'Comma-delimited list of tags. If an article includes one of these tags, it will be excluded from the RSS feed.']" />
|
||||
|
||||
+13
-1
@@ -75,7 +75,7 @@ Official Website: [https://www.ssm.gov.mo/apps1/PreventWuhanInfection/en.aspx](h
|
||||
|
||||
> Only support IMAP protocol, email password and other settings refer to [Email setting](/en/install)
|
||||
|
||||
<RouteEn author="kt286" example="/mail/imap/rss@rsshub.app" path="/mail/imap/:email" :paramsDesc="['Email account']" />
|
||||
<RouteEn author="kt286" example="/mail/imap/rss@rsshub.app" path="/mail/imap/:email" :paramsDesc="['Email account']" selfhost="1"/>
|
||||
|
||||
## Emi Nitta official website
|
||||
|
||||
@@ -111,6 +111,18 @@ Official Website: [https://www.ssm.gov.mo/apps1/PreventWuhanInfection/en.aspx](h
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## King Arthur
|
||||
|
||||
### Baking
|
||||
|
||||
<RouteEn author="loganrockmore" example="/kingarthur/story" path="/instapaper/:category">
|
||||
|
||||
| Story | Recipes | Tips and Techniques |
|
||||
| ----- | ------- | ------------------- |
|
||||
| story | recipes | tips-and-techniques |
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## MITRE
|
||||
|
||||
### All Publications
|
||||
|
||||
@@ -42,10 +42,22 @@ pageClass: routes
|
||||
|
||||
<RouteEn author="FHYunCai" example="/bing" path="/bing" radar="1" rssbud="1"/>
|
||||
|
||||
## ComicsKingdom Comic Strips
|
||||
|
||||
<RouteEn author="stjohnjohnson" example="/comicskingdom/baby-blues" path="/comicskingdom/:strip" :paramsDesc="['URL path of the strip on comicskingdom.com']" />
|
||||
|
||||
## DailyArt
|
||||
|
||||
<RouteEn author="zphw" example="/dailyart/en" path="/dailyart/:language?" :paramsDesc="['Support en, es, fr, de, it, zh, jp, etc. English by default.']" />
|
||||
|
||||
## Dilbert Comic Strip
|
||||
|
||||
<RouteEn name="Daily Strip" author="Maecenas" example="/dilbert/strip" path="/dilbert/strip"/>
|
||||
|
||||
## GoComics Comic Strips
|
||||
|
||||
<RouteEn author="stjohnjohnson" example="/gocomics/foxtrot" path="/gocomics/:strip" :paramsDesc="['URL path of the strip on gocomics.com']" />
|
||||
|
||||
## Google Doodles
|
||||
|
||||
### Update
|
||||
|
||||
@@ -10,6 +10,12 @@ pageClass: routes
|
||||
|
||||
<Route author="nczitzk" example="/anki/changes" path="/anki/changes"/>
|
||||
|
||||
## AnyTXT
|
||||
|
||||
### Release Notes
|
||||
|
||||
<Route author="nczitzk" example="/anytxt/release-notes" path="/anytxt/release-notes"/>
|
||||
|
||||
## Apkpure
|
||||
|
||||
### Versions
|
||||
@@ -36,6 +42,44 @@ pageClass: routes
|
||||
|
||||
<RouteEn author="HenryQW" example="/aptonic/action" path="/aptonic/action/:untested?" :paramsDesc="['Set any value to include untested actions.']"/>
|
||||
|
||||
## Bandisoft
|
||||
|
||||
### History
|
||||
|
||||
<RouteEn author="nczitzk" example="/bandisoft/bandizip" path="/bandisoft/:id?/:lang?" :paramsDesc="['Software id, see below, Bandizip by default', 'Language, see below, English by default']">
|
||||
|
||||
Software id
|
||||
|
||||
| Bandizip (Win) | Bandizip (Mac) | Honeycam | Honeyview |
|
||||
| -------------- | -------------- | -------- | --------- |
|
||||
| bandizip | bandizip.mac | honeycam | honeyview |
|
||||
|
||||
Language
|
||||
|
||||
| English | en |
|
||||
| 中文 (简体) | cn |
|
||||
| 中文 (繁體) | tw |
|
||||
| 日本語 | jp |
|
||||
| Русский | ru |
|
||||
| Español | es |
|
||||
| Français | fr |
|
||||
| Deutsch | de |
|
||||
| Italiano | it |
|
||||
| Slovenčina | sk |
|
||||
| Українська | uk |
|
||||
| Беларуская | be |
|
||||
| Dansk | da |
|
||||
| Polski | pl |
|
||||
| Português Brasileiro | br |
|
||||
| Čeština | cs |
|
||||
| Nederlands | nl |
|
||||
| Slovenščina| sl |
|
||||
| Türkçe| tr |
|
||||
| ภาษาไทย | th |
|
||||
| 한국어 | kr |
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## Chocolatey
|
||||
|
||||
### Software Update
|
||||
@@ -58,6 +102,12 @@ For example: `https://www.curseforge.com/sc2/assets/taylor-mouses-stuff/files` t
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## Ditto clipboard manager
|
||||
|
||||
### Changes
|
||||
|
||||
<RouteEn author="nczitzk" example="/ditto/changes" path="/ditto/changes/:type?" :paramsDesc="['Type, `beta` is an option']"/>
|
||||
|
||||
## Docker Hub
|
||||
|
||||
### Image New Build
|
||||
@@ -70,6 +120,12 @@ The owner of the official image fills in the library, for example: https://rsshu
|
||||
|
||||
:::
|
||||
|
||||
## Everything
|
||||
|
||||
### Changes
|
||||
|
||||
<RouteEn author="nczitzk" example="/everything/changes" path="/everything/changes"/>
|
||||
|
||||
## F-Droid
|
||||
|
||||
### App Update
|
||||
@@ -104,12 +160,22 @@ The owner of the official image fills in the library, for example: https://rsshu
|
||||
|
||||
<RouteEn author="Jeason0228" example="/ipsw/index/ipsws/iPhone11,8" path="/ipsw/index/:ptype/:pname/" :paramsDesc="['Fill in ipsws or otas to get different versions of firmware','Product name, `http://rsshub.app/ipsw/index/ipsws/iPod`, if you fill in the iPad, follow the entire iPad series(ptype default to ipsws).`http://rsshub.app/ipsw/index/ipsws/iPhone11,8`, if you fill in the specific iPhone11,8, submit to the ipsws firmware information of this model']"/>
|
||||
|
||||
## ManicTime
|
||||
|
||||
<RouteEn author="nczitzk" example="/manictime/releases" path="/manictime/releases"/>
|
||||
|
||||
## Microsoft Edge
|
||||
|
||||
### Addons Update
|
||||
|
||||
<RouteEn author="hoilc" example="/edge/addon/gangkeiaobmjcjokiofpkfpcobpbmnln" path="/edge/addon/:crxid" :paramsDesc="['Addon id, can be found in addon url']"/>
|
||||
|
||||
## Microsoft Store
|
||||
|
||||
### Updates
|
||||
|
||||
<Route author="hellodword" example="/microsoft-store/updates/9WZDNCRFHVN5/CN" path="/microsoft-store/updates/:productid/:market?" :paramsDesc="['`Share` - `Copy Link` in the Store', '`CN` as default']" />
|
||||
|
||||
## Minecraft
|
||||
|
||||
Refer to [#minecraft](/en/game.html#minecraft)
|
||||
@@ -167,6 +233,24 @@ Refer to [#minecraft](/en/game.html#minecraft)
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## QTTabBar
|
||||
|
||||
### Change Log
|
||||
|
||||
<RouteEn author="nczitzk" example="/qttabbar/change-log" path="/qttabbar/change-log"/>
|
||||
|
||||
## RescueTime
|
||||
|
||||
### Release Notes
|
||||
|
||||
<RouteEn author="nczitzk" example="/rescuetime/release-notes" path="/rescuetime/release-notes/:os?" :paramsDesc="['OS id, see below']">
|
||||
|
||||
| Mac OS | Windows |
|
||||
| - | - |
|
||||
| mac | windows |
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## RSSHub
|
||||
|
||||
### New routes
|
||||
@@ -193,6 +277,12 @@ Refer to [#minecraft](/en/game.html#minecraft)
|
||||
|
||||
<RouteEn author="garywill" example="/thunderbird/release" path="/thunderbird/release"/>
|
||||
|
||||
## Total Commander
|
||||
|
||||
### What's New
|
||||
|
||||
<RouteEn author="nczitzk" example="/totalcommander/whatsnew" path="/totalcommander/whatsnew"/>
|
||||
|
||||
## Typora
|
||||
|
||||
### Changelog
|
||||
@@ -210,3 +300,9 @@ Refer to [#minecraft](/en/game.html#minecraft)
|
||||
### Module Update
|
||||
|
||||
<RouteEn author="nczitzk" example="/xposed/module/com.ext.star.wars" path="/xposed/module/:mod" :paramsDesc="['module package name']"/>
|
||||
|
||||
## XYplorer
|
||||
|
||||
### What's New
|
||||
|
||||
<RouteEn author="nczitzk" example="/xyplorer/whatsnew" path="/xyplorer/whatsnew"/>
|
||||
@@ -4,6 +4,12 @@ pageClass: routes
|
||||
|
||||
# Programming
|
||||
|
||||
## ACM
|
||||
|
||||
### A.M.Turing Award Winners
|
||||
|
||||
<Route author="nczitzk" example="/acm/amturingaward" path="/acm/amturingaward"/>
|
||||
|
||||
## cve.mitre.org
|
||||
|
||||
### Search Result
|
||||
@@ -31,6 +37,20 @@ GitHub provides some official RSS feeds:
|
||||
|
||||
<RouteEn path="/github/trending/:since/:language?" example="/github/trending/daily/javascript" :paramsDesc="['time frame, available in [Trending page](https://github.com/trending/javascript?since=monthly) \'s URL, possible values are: daily, weekly or monthly', 'the feed language, available in [Trending page](https://github.com/trending/javascript?since=monthly) \'s URL']" radar="1" rssbud="1"/>
|
||||
|
||||
### Topics
|
||||
|
||||
<Route author="queensferryme" example="/github/topics/framework" path="/github/topics/:name/:qs?" :paramsDesc="['Topic name, which can be found in the URL of the corresponding [Topics Page](https://github.com/topics/framework)', 'Query string, like `l=php&o=desc&s=stars`. Details listed as follows:']" radar="1" rssbud="1">
|
||||
|
||||
| Parameter | Description | Values |
|
||||
| ---- | ---- | ---- |
|
||||
| `l` | Language | For instance `php`, which can be found in the URL of the corresponding [Topics page](https://github.com/topics/framework?l=php) |
|
||||
| `o` | Sorting Order | `asc`, `desc` |
|
||||
| `s` | Sorting Criteria | `stars`, `forks`, `updated` |
|
||||
|
||||
For instance, the `/github/topics/framework/l=php&o=desc&s=stars` route will generate the RSS feed corresponding to this [page](https://github.com/topics/framework?l=php&o=desc&s=stars).
|
||||
|
||||
</Route>
|
||||
|
||||
### Repo Issues
|
||||
|
||||
<RouteEn author="HenryQW AndreyMZ" path="/github/issue/:user/:repo/:state?/:labels?" example="/github/issue/DIYgod/RSSHub/all/bug" :paramsDesc="['GitHub username', 'GitHub repo name', 'the state of the issues. Can be either `open`, `closed`, or `all`. Default: `open`.', 'a list of comma separated label names']" radar="1" rssbud="1"/>
|
||||
|
||||
@@ -36,6 +36,12 @@ Parameter `time` only works when `mostwanted` is chosen as the category.
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## booth.pm
|
||||
|
||||
### Shop
|
||||
|
||||
<Route author="KTachibanaM" example="/booth.pm/shop/annn-boc0123" path="/booth.pm/shop/:subdomain" :paramsDesc="['Shop subdomain']" />
|
||||
|
||||
## Guiltfree.pl
|
||||
|
||||
### Onsale
|
||||
|
||||
+72
-9
@@ -34,6 +34,30 @@ pageClass: routes
|
||||
|
||||
<RouteEn author="maple3142" example="/facebook/page/SonetPCR" path="/facebook/page/:id" :paramsDesc="['page id']" anticrawler="1"/>
|
||||
|
||||
## Gab
|
||||
|
||||
### User's Posts
|
||||
|
||||
<RouteEn author="zphw" example="/gab/user/realdonaldtrump" path="/gab/user/:username" :paramsDesc="['Username']" />
|
||||
|
||||
### Popular Posts
|
||||
|
||||
<RouteEn author="zphw" example="/gab/popular/hot" path="/gab/popular/:sort?" :paramsDesc="['Sort by, `hot` to be Hot Posts and `top` to be Top Posts. Default: hot']" />
|
||||
|
||||
## Instagram
|
||||
|
||||
::: warning
|
||||
|
||||
Due to Instagram API restrictions, you have to setup your credentials on the server. See deployment guide for more.
|
||||
|
||||
If you don't want to setup credentials, use Picuki.
|
||||
|
||||
:::
|
||||
|
||||
### User Profile
|
||||
|
||||
<RouteEn author="oppilate DIYgod" example="/instagram/user/stefaniejoosten" path="/instagram/:category/:key" :paramsDesc="['Feed category. Only user category is supported for now.','Key for such category. E.g. username/ID for user feed']" radar="1" anticrawler="1"/>
|
||||
|
||||
## Lofter
|
||||
|
||||
### User
|
||||
@@ -87,7 +111,7 @@ These feed do not include boosts (a.k.a. reblogs). RSSHub provides a feed for us
|
||||
|
||||
### User Profile
|
||||
|
||||
<Route author="hoilc" example="/picuki/profile/stefaniejoosten" path="/picuki/profile/:id/:displayVideo?" :paramsDesc="['Instagram id','Default to disable the embedded video, set to any value to enable embedding']" />
|
||||
<RouteEn author="hoilc" example="/picuki/profile/stefaniejoosten" path="/picuki/profile/:id/:displayVideo?" :paramsDesc="['Instagram id','Default to disable the embedded video, set to any value to enable embedding']" />
|
||||
|
||||
## pixiv
|
||||
|
||||
@@ -119,7 +143,7 @@ These feed do not include boosts (a.k.a. reblogs). RSSHub provides a feed for us
|
||||
|
||||
### Following timeline
|
||||
|
||||
<RouteEn author="ClarkeCheng" example="/pixiv/user/illustfollows" path="/pixiv/user/illustfollows" radar="1" rssbud="1"/>
|
||||
<RouteEn author="ClarkeCheng" example="/pixiv/user/illustfollows" path="/pixiv/user/illustfollows" radar="1" rssbud="1" selfhost="1"/>
|
||||
::: warning
|
||||
|
||||
Only for self-hosted
|
||||
@@ -161,17 +185,50 @@ Due to Twitter API restrictions, the Twitter Routes currently supports tweets wi
|
||||
|
||||
:::
|
||||
|
||||
Specify options (in query string's format) in parameter `routeParams` to control some extra features for Tweets
|
||||
|
||||
| Key | Description | Accepts | Defaults to |
|
||||
| ------ | ----------- | ------- | ------------ |
|
||||
| readable | Enable readable layout | 0/1/true/false | false |
|
||||
| authorNameBold | Display author name in bold | 0/1/true/false | false |
|
||||
| showAuthorInTitle | Show author name in title | 0/1/true/false | false (true in `/twitter/followings`) |
|
||||
| showAuthorInDesc | Show author name in description (RSS body) | 0/1/true/false | false (true in `/twitter/followings`) |
|
||||
| showQuotedAuthorAvatarInDesc | Show avatar of quoted Tweet's author in description (RSS body) (Not recommended if your RSS reader extracts images from description) | 0/1/true/false | false |
|
||||
| showAuthorAvatarInDesc | Show avatar of author in description (RSS body) (Not recommended if your RSS reader extracts images from description)| 0/1/true/false | false |
|
||||
| showEmojiForRetweetAndReply | Use "🔁" instead of "Rt", "↩️" & "💬" instead of "Re" | 0/1/true/false | false |
|
||||
| showRetweetTextInTitle | Show quote comments in title | 0/1/true/false | true |
|
||||
| addLinkForPics | Add clickable links for Tweet pictures | 0/1/true/false | false |
|
||||
| showTimestampInDescription| Show timestamp in description | 0/1/true/false | false |
|
||||
| showQuotedInTitle | Show quoted tweet in title | 0/1/true/false | false |
|
||||
| widthOfPics | Width of Tweet pictures | Unspecified/Integer | Unspecified |
|
||||
| heightOfPics | Height of Tweet pictures | Unspecified/Integer | Unspecified |
|
||||
| sizeOfAuthorAvatar | Size of author's avatar | Integer | 48 |
|
||||
| sizeOfQuotedAuthorAvatar | Size of quoted tweet's author's avatar | Integer | 24 |
|
||||
| excludeReplies | Exclude replies, only available in "User timeline" | 0/1/true/false | false |
|
||||
| includeRts | Include retweets, only available in "User timeline" | 0/1/true/false | true |
|
||||
| count | `count` parameter passed to Twitter API, only available in "User timeline" | Unspecified/Integer | Unspecified |
|
||||
|
||||
Specify different option values than default values to improve readablility. The URL
|
||||
|
||||
```
|
||||
https://rsshub.app/twitter/user/durov/readable=1&authorNameBold=1&showAuthorInTitle=1&showAuthorInDesc=1&showQuotedAuthorAvatarInDesc=1&showAuthorAvatarInDesc=1&showEmojiForRetweetAndReply=1&showRetweetTextInTitle=0&addLinkForPics=1&showTimestampInDescription=1&showQuotedInTitle=1&heightOfPics=150
|
||||
```
|
||||
|
||||
generates
|
||||
|
||||
<img src="/readable-twitter.png" alt="Readable Twitter RSS of Durov">
|
||||
|
||||
### User timeline
|
||||
|
||||
<RouteEn path="/twitter/user/:id/:type?" example="/twitter/user/DIYgod" :paramsDesc="['user id', 'Extra options `exclude_replies` exclude replies,`exclude_rts` exclude retweets,`exclude_rts_replies` exclude replies and retweets, for default include all.']" radar="1" rssbud="1"/>
|
||||
<RouteEn path="/twitter/user/:id/:routeParams?" example="/twitter/user/DIYgod" :paramsDesc="['user id', 'extra parameters, see the table above; particularly when `routeParams=exclude_replies`, replies are excluded; `routeParams=exclude_rts` excludes retweets,`routeParams=exclude_rts_replies` exclude replies and retweets; for default include all.']" radar="1" rssbud="1"/>
|
||||
|
||||
## User following timeline
|
||||
|
||||
<RouteEn author="DIYgod" example="/twitter/followings/DIYgod" path="/twitter/followings/:id" :paramsDesc="['user id']" radar="1" rssbud="1">
|
||||
<RouteEn author="DIYgod" example="/twitter/followings/DIYgod" path="/twitter/followings/:id/:routeParams?" :paramsDesc="['user id', 'extra parameters, see the table above']" radar="1" rssbud="1" selfhost="1">
|
||||
|
||||
::: warning
|
||||
|
||||
This route requires Twitter token's corresponding id, therefore it's only availble when self-hosting, refer to the [Deploy Guide](/en/install/#route-specific-configurations) for route-specific configurations.
|
||||
This route requires Twitter token's corresponding id, therefore it's only available when self-hosting, refer to the [Deploy Guide](/en/install/#route-specific-configurations) for route-specific configurations.
|
||||
|
||||
:::
|
||||
|
||||
@@ -179,21 +236,21 @@ This route requires Twitter token's corresponding id, therefore it's only availb
|
||||
|
||||
### List timeline
|
||||
|
||||
<RouteEn author="xyqfer" example="/twitter/list/ladyleet/javascript" path="/twitter/list/:id/:name" :paramsDesc="['user name', 'list name']" radar="1" rssbud="1"/>
|
||||
<RouteEn author="xyqfer" example="/twitter/list/ladyleet/javascript" path="/twitter/list/:id/:name/:routeParams?" :paramsDesc="['user name', 'list name', 'extra parameters, see the table above']" radar="1" rssbud="1"/>
|
||||
|
||||
### User likes
|
||||
|
||||
<RouteEn author="xyqfer" example="/twitter/likes/DIYgod" path="/twitter/likes/:id" :paramsDesc="['user name']" radar="1" rssbud="1"/>
|
||||
<RouteEn author="xyqfer" example="/twitter/likes/DIYgod" path="/twitter/likes/:id/:routeParams?" :paramsDesc="['user name', 'extra parameters, see the table above']" radar="1" rssbud="1"/>
|
||||
|
||||
### Keyword
|
||||
|
||||
<RouteEn author="DIYgod" example="/twitter/keyword/RSSHub" path="/twitter/keyword/:keyword" :paramsDesc="['keyword']" radar="1" rssbud="1"/>
|
||||
<RouteEn author="DIYgod" example="/twitter/keyword/RSSHub" path="/twitter/keyword/:keyword/:routeParams?" :paramsDesc="['keyword', 'extra parameters, see the table above']" radar="1" rssbud="1"/>
|
||||
|
||||
### Trends
|
||||
|
||||
<RouteEn author="sakamossan" example="/twitter/trends/23424856" path="/twitter/trends/:woeid?" :paramsDesc="['Yahoo! Where On Earth ID. default to woeid=1 (World Wide)']" radar="1" rssbud="1"/>
|
||||
|
||||
## Youtube
|
||||
## YouTube
|
||||
|
||||
::: tip Tiny Tiny RSS users please notice
|
||||
|
||||
@@ -207,6 +264,12 @@ Tiny Tiny RSS will add `sandbox="allow-scripts"` to all iframe elements, as a re
|
||||
|
||||
### Channel
|
||||
|
||||
::: tip
|
||||
|
||||
YouTube provides official RSS feeds for channels, for instance <https://www.youtube.com/feeds/videos.xml?channel_id=UCDwDMPOZfxVV0x_dz0eQ8KQ>.
|
||||
|
||||
:::
|
||||
|
||||
<RouteEn path="/youtube/channel/:id/:embed?" example="/youtube/channel/UCDwDMPOZfxVV0x_dz0eQ8KQ" :paramsDesc="['YouTube channel id', 'Default to embed the video, set to any value to disable embedding']" radar="1" rssbud="1"/>
|
||||
|
||||
### Playlist
|
||||
|
||||
@@ -20,6 +20,6 @@ Recurring donors will be rewarded via express issue response, or even have your
|
||||
|
||||
We accept donations via the following ways:
|
||||
|
||||
- [WeChat Pay](https://i.loli.net/2019/03/23/5c950ebbc373e.png)
|
||||
- [Alipay](https://i.loli.net/2019/03/23/5c950ebbc980e.png)
|
||||
- [WeChat Pay](https://diygod.me/images/wx.jpg)
|
||||
- [Alipay](https://diygod.me/images/zfb.jpg)
|
||||
- [Paypal](https://www.paypal.me/DIYgod)
|
||||
|
||||
@@ -28,7 +28,7 @@ Site
|
||||
|
||||
### BBC
|
||||
|
||||
<RouteEn author="HenryQW" example="/bbc/world-asia" path="/bbc/:channel?" :paramsDesc="['channel, default to `top stories`']">
|
||||
<RouteEn author="HenryQW DIYgod" example="/bbc/world-asia" path="/bbc/:channel?" :paramsDesc="['channel, default to `top stories`']">
|
||||
|
||||
Provides a better reading experience (full text articles) over the official ones.
|
||||
|
||||
@@ -108,12 +108,59 @@ Refer to [Chicago Tribune's feed page](https://www.chicagotribune.com/about/ct-c
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## ChinaFile
|
||||
|
||||
### Reporting & Opinion
|
||||
|
||||
<RouteEn author="oppilate" example="/chinafile/all" path="/chinafile/:category?" :paramsDesc="['Category, by default `all`']">
|
||||
|
||||
Generates full-text feeds that the official feed doesn't provide.
|
||||
|
||||
| All | The China NGO Project |
|
||||
| --- | --------------------- |
|
||||
| all | ngo |
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## Financial Times
|
||||
|
||||
### myFT personal RSS
|
||||
|
||||
<RouteEn author="HenryQW" example="/ft/myft/rss-key" path="/ft/myft/:key" :paramsDesc="['the last part of myFT personal RSS address']">
|
||||
|
||||
::: tip tips
|
||||
|
||||
- Visit ft.com -> myFT -> Contact Preferences to enable personal RSS feed, see [help.ft.com](https://help.ft.com/faq/email-alerts-and-contact-preferences/what-is-myft-rss-feed/)
|
||||
- Obtain the key from the personal RSS address, it looks like `12345678-abcd-4036-82db-vdv20db024b8`
|
||||
|
||||
:::
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## NHK
|
||||
|
||||
### News Web Easy
|
||||
|
||||
<RouteEn author="Andiedie" example="/nhk/news_web_easy" path="/nhk/news_web_easy"/>
|
||||
|
||||
## Phoronix
|
||||
|
||||
### News & Reviews
|
||||
|
||||
<RouteEn author="oppliate" example="/phoronix/news_topic/Intel" path="/phoronix/:page/:queryOrItem?" :paramsDesc="['Page name', 'For `category` it corresponds to `item`, for other pages it\'s `q`. You may find available parameters from their navigator links. E.g. to subscribe to the category page `https://www.phoronix.com/scan.php?page=category&item=Computers`, fill in the path `/phoronix/category/Computers`']" />
|
||||
|
||||
## Radio Free Asia (RFA)
|
||||
|
||||
<RouteEn author="zphw" example="/rfa/english" path="/rfa/:language?/:channel?/:subChannel?" :paramsDesc="['language, English by default', 'channel', 'subchannel, where applicable']" />
|
||||
|
||||
Delivers a better experience by supporting parameter specification.
|
||||
|
||||
Parameters can be obtained from the official website, for instance:
|
||||
|
||||
`https://www.rfa.org/cantonese/news` corresponds to `/rfa/cantonese/news`
|
||||
|
||||
`https://www.rfa.org/cantonese/news/htm` corresponds to `/rfa/cantonese/news/htm`
|
||||
|
||||
## Reuters
|
||||
|
||||
### Channel
|
||||
@@ -209,6 +256,16 @@ Provides a better reading experience (full text articles) over the official one.
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## The Wall Street Journal (WSJ)
|
||||
|
||||
### News
|
||||
|
||||
<RouteEn author="oppilate" example="/wsj/en-us/opinion" path="/wsj/:lang/:category?" :paramsDesc="['Language, `en-us`, `zh-cn`, `zh-tw` are supported', 'Category, only supported in `en-us`. Supports `opinion`, `world_news`, `us_bussiness`, `market_news`, `technology`, `lifestyle`.']">
|
||||
|
||||
Provide full article RSS for WSJ topics.
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## Yahoo
|
||||
|
||||
### News
|
||||
@@ -226,3 +283,13 @@ Provides a better reading experience (full text articles) over the official one.
|
||||
| (Empty) | world | business | entertainment | sports | health |
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## Yahoo! by Author
|
||||
|
||||
### News
|
||||
|
||||
<RouteEn author="loganrockmore" example="/yahoo-author/hannah-keyser" path="/yahoo-news/:author" :paramsDesc="['Author']">
|
||||
|
||||
Provides all of the articles by the specified Yahoo! author.
|
||||
|
||||
</RouteEn>
|
||||
|
||||
@@ -30,10 +30,18 @@ pageClass: routes
|
||||
|
||||
## UMASS Amherst
|
||||
|
||||
### College of Electrical and Computer Engineering News
|
||||
### College of Electrical and Computer Engineering
|
||||
|
||||
#### News
|
||||
|
||||
<RouteEn author="gammapi" example="/umass/amherst/ecenews" path="/umass/amherst/ecenews" radar="1" rssbud="1"/>
|
||||
|
||||
#### Seminar
|
||||
|
||||
<RouteEn author="gammapi" example="/umass/amherst/eceseminar" path="/umass/amherst/eceseminar" radar="1" rssbud="1"/>
|
||||
|
||||
Note:[Source website](https://ece.umass.edu/seminar) may be empty when there's no upcoming seminars. This is normal and will cause rsshub fail to fetch this feed.
|
||||
|
||||
### College of Information & Computer Sciences News
|
||||
|
||||
<RouteEn author="gammapi" example="/umass/amherst/csnews" path="/umass/amherst/csnews" radar="1" rssbud="1"/>
|
||||
|
||||
@@ -62,6 +62,33 @@ pageClass: routes
|
||||
|
||||
<Route author="nczitzk" example="/gelonghui/keyword/ 早报" path="/gelonghui/keyword/:keyword" :paramsDesc="[' 搜索关键字']/>
|
||||
|
||||
## 金十数据
|
||||
|
||||
<Route author="laampui" example="/jinshi/index" path="/jinshi/index" />
|
||||
## 麦肯锡中国
|
||||
|
||||
<Route author="laampui" example="/mckinsey/autos" path="/mckinsey/:category?" :paramsDesc="['默认为全部,见下表']">
|
||||
|
||||
| 汽车 | 金融服务 | 数字化 | 消费者 | 医药与医疗 | 麦肯锡全球研究院 | 全球基础材料 | 创新 | 宏观经济 | 制造业 | 人才与领导力 | 技术,媒体与通信 | 城市化与可持续发展 | 资本项目和基础设施 | 旅游、运输和物流 |
|
||||
| ----- | ----------------- | ------------------- | --------- | -------------------------- | ------------------------- | ------------ | ---------- | ------------ | ------------- | ----------------- | ---------------------------- | --------------------------- | ------------------------------- | ---------------- |
|
||||
| autos | banking-insurance | business-technology | consumers | healthcare-pharmaceuticals | mckinsey-global-institute | 全球基础材料 | innovation | macroeconomy | manufacturing | talent-leadership | technology-media-and-telecom | urbanization-sustainability | capital-projects-infrastructure | 交通运输与物流 |
|
||||
|
||||
</Route>
|
||||
|
||||
## 上海证券交易所
|
||||
|
||||
### 本所业务规则
|
||||
|
||||
<Route author="nczitzk" example="/sse/sserules" path="/sse/sserules/:slug?" :paramsDesc="['见下文,默认为 latest']">
|
||||
|
||||
将目标栏目的网址拆解为 `http://www.sse.com.cn/lawandrules/sserules/` 和后面的字段,把后面的字段中的 `/` 替换为 `-`,即为该路由的 slug
|
||||
|
||||
如:(最新规则)[http://www.sse.com.cn/lawandrules/sserules/latest] 的网址在 `http://www.sse.com.cn/lawandrules/sserules/` 后的字段是 `latest`,则对应的 slug 为 `latest`,对应的路由即为 `/sse/sserules/latest`
|
||||
|
||||
又如:(设立科创板并试点注册制规则 - 发行上市审核类)[http://www.sse.com.cn/lawandrules/sserules/tib/review] 的网址在 `http://www.sse.com.cn/lawandrules/sserules/` 后的字段是 `tib/review`,则对应的 slug 为 `tib-review`,对应的路由即为 `/sse/sserules/tib-review`
|
||||
|
||||
</Route>
|
||||
|
||||
## 世界经济论坛
|
||||
|
||||
### 报告
|
||||
|
||||
+5
-1
@@ -56,9 +56,13 @@ pageClass: routes
|
||||
|
||||
## 停电通知
|
||||
|
||||
### 95598 停电查询网
|
||||
|
||||
<Route author="mjysci" example="/tingdiantz/95598/hb1/wh/wc/" path="/tingdiantz/95598/:province/:city/:district?" :paramsDesc="['省,2~3位拼音缩写,详情见http://www.sttcq.com/td/','市,同上', '区,同上']"/>
|
||||
|
||||
### 南京市
|
||||
|
||||
<Route author="ocleo1" example="/tingdiantz/nanjing" path="/tingdiantz/nanjing"/>
|
||||
<Route author="ocleo1" example="/tingdiantz/nanjing" path="/tingdiantz/nanjing"/>
|
||||
|
||||
## 停水通知
|
||||
|
||||
|
||||
+123
-23
@@ -40,6 +40,51 @@ pageClass: routes
|
||||
|
||||
<Route author="monner-henster" example="/a9vg/a9vg" path="/a9vg/a9vg"/>
|
||||
|
||||
## Blizzard
|
||||
|
||||
### News
|
||||
|
||||
<Route author="nczitzk" example="/blizzard/news" path="/blizzard/news/:language?/:category?" :paramsDesc="['语言代码,见下表,默认为 en-US', '分类,见下表,默认为全部新闻']">
|
||||
|
||||
分类
|
||||
|
||||
| 分类 | 分类名 |
|
||||
| -------------------- | ------------------- |
|
||||
| 所有新闻 | |
|
||||
| 暗黑破坏神 III | diablo3 |
|
||||
| 暗黑破坏神:不朽 | diablo-immortal |
|
||||
| 炉石传说 | hearthstone |
|
||||
| 风暴英雄 | heroes-of-the-storm |
|
||||
| 守望先锋 | overwatch |
|
||||
| 星际争霸:重制版 | starcraft |
|
||||
| 星际争霸 II | starcraft2 |
|
||||
| 魔兽世界 | world-of-warcraft |
|
||||
| 魔兽争霸 III:重制版 | warcraft3 |
|
||||
| 暴雪嘉年华 | blizzcon |
|
||||
| 走进暴雪 | blizzard |
|
||||
|
||||
语言代码
|
||||
|
||||
| 语言 | 语言代码 |
|
||||
| -------------- | -------- |
|
||||
| Deutsch | de-de |
|
||||
| English (US) | en-us |
|
||||
| English (EU) | en-gb |
|
||||
| Español (EU) | es-es |
|
||||
| Español (AL) | es-mx |
|
||||
| Français | fr-fr |
|
||||
| Italiano | it-it |
|
||||
| Português (AL) | pt-br |
|
||||
| Polski | pl-pl |
|
||||
| Русский | ru-ru |
|
||||
| 한국어 | ko-kr |
|
||||
| ภาษาไทย | th-th |
|
||||
| 日本語 | ja-jp |
|
||||
| 繁體中文 | zh-tw |
|
||||
| 简体中文 | zh-cn |
|
||||
|
||||
</Route>
|
||||
|
||||
## dekudeals
|
||||
|
||||
### 分类
|
||||
@@ -112,6 +157,18 @@ pageClass: routes
|
||||
|
||||
<Route author="GensouSakuya kt286" example="/indienova/article" path="indienova/:type" :paramsDesc="['类型: `article` 文章,`development` 开发']"/>
|
||||
|
||||
## Konami
|
||||
|
||||
### PES Mobile 公告
|
||||
|
||||
<Route author="HenryQW" example="/konami/pesmobile/zh-cn/ios" path="/konami/pesmobile/:lang?/:os?" :paramsDesc="['语言,在URL中获得,如zh-cn, zh-tw, en', '操作系统,iOS 或 Android']"/>
|
||||
|
||||
## Liquipedia
|
||||
|
||||
### Dota2 战队最近比赛结果
|
||||
|
||||
<Route author="wzekin" example="/liquipedia/dota2/matches/Team_Aster" path="liquipedia/dota2/matches/:id" :paramsDesc="['战队名称,可在url中找到。例如:https://liquipedia.net/dota2/Team_Aster']"/>
|
||||
|
||||
## Maxjia News
|
||||
|
||||
### Dota 2
|
||||
@@ -154,6 +211,14 @@ pageClass: routes
|
||||
|
||||
<Route author="Indexyz" example="/curseforge/files/jei" path="/curseforge/files/:project" :paramsDesc="['项目的短名或者 `Project ID`. 项目的短名可以在地址栏获取到, 例如地址为 `https://minecraft.curseforge.com/projects/non-update`, 短名就为 `non-update`. `Project ID` 可在 `Overview` 中的 `About This Project` 中找到']"/>
|
||||
|
||||
### Feed The Beast (FTB) 模组包更新
|
||||
|
||||
<Route author="gucheen" example="/feed-the-beast/modpack/ftb_presents_direwolf20_1_16" path="/feed-the-beast/modpack/:modpackEntry" :paramsDesc="['模组包的短名.']">
|
||||
| 参数 | 说明 |
|
||||
| ------| ------------ |
|
||||
| modpackEntry | 模组包的短名从模组包的页面链接中找到,例如 `https://www.feed-the-beast.com/modpack/ftb_presents_direwolf20_1_16`,短名就是 `ftb_presents_direwolf20_1_16`。 |
|
||||
</Route>
|
||||
|
||||
## Nintendo
|
||||
|
||||
### eShop 新发售游戏
|
||||
@@ -212,16 +277,37 @@ pageClass: routes
|
||||
|
||||
<Route author="LightStrawberry" example="/psnine/index" path="/psnine/index"/>
|
||||
|
||||
### 新闻 - 游戏资讯
|
||||
### 节点
|
||||
|
||||
<Route author="LightStrawberry" example="/psnine/news" path="/psnine/news"/>
|
||||
### 数折-折扣信息推送
|
||||
<Route author="nczitzk" example="/psnine/node/news" path="/psnine/node/:id?/:order?" :paramsDesc="['节点 id,见下表,默认为 news', '排序,可选 `date` 即最新,默认为 `obdate` 即综合排序']">
|
||||
|
||||
| 站务 | 活动 | 旅记 | 折扣 | 会免 |
|
||||
| ---- | ----- | ------ | ---- | ---- |
|
||||
| p9 | event | travel | off | plus |
|
||||
|
||||
| 新闻 | 攻略 | 测评 | 心得 | 开箱 |
|
||||
| ---- | ----- | ------ | ---- | ------- |
|
||||
| news | guide | review | exp | openbox |
|
||||
|
||||
| 游列 | 游计 | Ps4 | Ps5 |
|
||||
| -------- | -------- | --- | --- |
|
||||
| gamelist | planlist | ps4 | ps5 |
|
||||
|
||||
| 发米通 | Ign | Ucg |
|
||||
| ------- | --- | --- |
|
||||
| famitsu | ign | ucg |
|
||||
|
||||
</Route>
|
||||
|
||||
### 数折 - 折扣信息推送
|
||||
|
||||
<Route author="LightStrawberry" example="/psnine/shuzhe" path="/psnine/shuzhe"/>
|
||||
### 闲游-二手盘信息
|
||||
|
||||
### 闲游 - 二手盘信息
|
||||
|
||||
<Route author="LightStrawberry" example="/psnine/trade" path="/psnine/trade"/>
|
||||
### 游戏-新游戏奖杯信息
|
||||
|
||||
### 游戏 - 新游戏奖杯信息
|
||||
|
||||
<Route author="LightStrawberry" example="/psnine/game" path="/psnine/game"/>
|
||||
|
||||
@@ -258,7 +344,13 @@ Example: `https://store.steampowered.com/search/?specials=1&term=atelier` 中的
|
||||
|
||||
### Steam news
|
||||
|
||||
<Route author="maple3142" example="/steam/news/282800" path="/steam/news/:appids" :paramsDesc="['游戏 id']" radar="1" rssbud="1"/>
|
||||
<Route author="maple3142" example="/steam/news/1091500/schinese" path="/steam/news/:appid/:language?" :paramsDesc="['游戏 id', '语言,默认简体中文']" radar="1" rssbud="1">
|
||||
|
||||
| 语言 (Language) | 简体中文 (Simplified Chinese) | 繁體中文 (Traditional Chinese) | 日本語 (Japanese) | 한국어 (Korean) | Български (Bulgarian) | Čeština (Czech) | Dansk (Danish) | Deutsch (German) | Español - España (Spanish - Spain) | Español - Latinoamérica (Spanish - Latin America), | Ελληνικά (Greek) | Français (French) | Italiano (Italian) | Magyar (Hungarian) | Nederlands (Dutch) | Norsk (Norwegian) | Polski (Polish) | Português (Portuguese) | Português - Brasil (Portuguese - Brazil) | Română (Romanian) | Русский (Russian) | Suomi (Finnish) | Svenska (Swedish) | Türkçe (Turkish) | Tiếng Việt (Vietnamese) | Українська (Ukrainian) |
|
||||
| --------------- | ----------------------------- | ------------------------------ | ----------------- | --------------- | --------------------- | --------------- | -------------- | ---------------- | ---------------------------------- | -------------------------------------------------- | ---------------- | ----------------- | ------------------ | ------------------ | ------------------ | ----------------- | --------------- | ---------------------- | ---------------------------------------- | ----------------- | ----------------- | --------------- | ----------------- | ---------------- | ----------------------- | ---------------------- |
|
||||
| | schinese | tchinese | japanese | koreana | bulgarian | czech | danish | german | spanish | latam | greek | french | italian | hungarian | dutch | norwegian | polish | portuguese | brazilian | romanian | russian | finnish | swedish | turkish | vietnamese | ukrainian |
|
||||
|
||||
</Route>
|
||||
|
||||
## SteamGifts
|
||||
|
||||
@@ -310,6 +402,16 @@ Example: `https://store.steampowered.com/search/?specials=1&term=atelier` 中的
|
||||
|
||||
</Route>
|
||||
|
||||
## 触乐
|
||||
|
||||
<Route author="laampui" example="/chuapp/index/daily" path="/chuapp/index/:category?" :paramsDesc="['默认为 night']">
|
||||
|
||||
| 每日聚焦 | 最好玩 | 触乐夜话 | 动态资讯 |
|
||||
| -------- | ------ | -------- | -------- |
|
||||
| daily | pcz | night | news |
|
||||
|
||||
</Route>
|
||||
|
||||
## 二柄 APP
|
||||
|
||||
### 新闻
|
||||
@@ -330,22 +432,6 @@ Example: `https://store.steampowered.com/search/?specials=1&term=atelier` 中的
|
||||
|
||||
<Route author="KotoriK" example="/pcr/news-cn" path="/pcr/news-cn"/>
|
||||
|
||||
## 篝火营地
|
||||
|
||||
### 游戏资讯
|
||||
|
||||
<Route author="sintak" example="/gouhuo/news/switch" path="/gouhuo/news/:category" :paramsDesc="['资讯类型']">
|
||||
|
||||
| 精选 | 海外 | 原创 | PS4 | Xboxone | PC | Switch | 掌机 | 手游 | 新闻 | 评测 | 文化 | 视频 | 音频 | 折扣 |
|
||||
| ---------- | -------- | ------- | --- | ------- | -- | ------ | -------- | ---------- | ---- | ------ | ------- | ----- | ----- | -------- |
|
||||
| choiceness | overseas | orignal | ps4 | xboxone | pc | switch | handheld | mobilegame | news | review | culture | video | audio | discount |
|
||||
|
||||
</Route>
|
||||
|
||||
### 游戏攻略
|
||||
|
||||
<Route author="sintak" example="/gouhuo/strategy" path="/gouhuo/strategy"/>
|
||||
|
||||
## 怪物猎人世界
|
||||
|
||||
### 更新情报
|
||||
@@ -484,6 +570,16 @@ Example: `https://store.steampowered.com/search/?specials=1&term=atelier` 中的
|
||||
|
||||
</Route>
|
||||
|
||||
## 游戏动力
|
||||
|
||||
### 游戏资讯
|
||||
|
||||
<Route author="wy916787036" example="/vgn" path="/vgn/:platform?" :paramsDesc="['平台,见下表,默认为全部']">
|
||||
| Switch | PS4 | PC | Xbox |
|
||||
| -------- | -------- | -------- | -------- |
|
||||
| 1 | 2 | 3 | 4 |
|
||||
</Route>
|
||||
|
||||
## 游戏时光
|
||||
|
||||
### 游戏时光新闻
|
||||
@@ -500,7 +596,7 @@ Example: `https://store.steampowered.com/search/?specials=1&term=atelier` 中的
|
||||
|
||||
## 游研社
|
||||
|
||||
### 游研社
|
||||
### 游研社 - 分类文章
|
||||
|
||||
<Route author="LightStrawberry" example="/yystv/category/recommend" path="/yystv/category/:category" :paramsDesc="['专栏类型']">
|
||||
|
||||
@@ -510,6 +606,10 @@ Example: `https://store.steampowered.com/search/?specials=1&term=atelier` 中的
|
||||
|
||||
</Route>
|
||||
|
||||
### 游研社 - 全部文章
|
||||
|
||||
<Route author="HaitianLiu" example="/yystv/docs" path="/yystv/docs" />
|
||||
|
||||
## 原神
|
||||
|
||||
### 新闻
|
||||
|
||||
+112
-14
@@ -28,6 +28,16 @@ pageClass: routes
|
||||
|
||||
</Route>
|
||||
|
||||
### 广东省深圳市人民政府
|
||||
|
||||
<Route author="laoxua" example="/gov/shenzhen/xxgk/zfxxgj/tzgg" path="/gov/shenzhen/xxgk/zfxxgj/:caty" :paramsDesc="['信息类别']">
|
||||
|
||||
| 通知公告 | 政府采购 | 资金信息 | 重大项目 |
|
||||
| :------: | :------: | :------: | :------: |
|
||||
| tzgg | zfcg | zjxx | zdxm |
|
||||
|
||||
</Route>
|
||||
|
||||
## 国家税务总局
|
||||
|
||||
### 最新文件
|
||||
@@ -65,12 +75,58 @@ pageClass: routes
|
||||
|
||||
<Route author="y2361547758" example="/gov/nppa/318/45948" path="/gov/nppa/:channel/:content" :paramsDesc="['栏目名id', '文章id']" radar="1" rssbud="1"/>
|
||||
|
||||
## 哈尔滨市科技局
|
||||
|
||||
### 政务公开
|
||||
|
||||
<Route author="XYenon" example="/gov/harbin/kjj" path="/gov/harbin/kjj"/>
|
||||
|
||||
## 联合国
|
||||
|
||||
### 安理会否决了决议
|
||||
|
||||
<Route author="HenryQW" example="/un/scveto" path="/un/scveto"/>
|
||||
|
||||
## 美国财政部
|
||||
|
||||
### 新闻稿
|
||||
|
||||
<Route author="nczitzk" example="/treasury/press-releases" path="/treasury/press-releases/:category?/:title?" :paramsDesc="['分类,见下表,默认为全部', '标题关键字,默认为空']">
|
||||
|
||||
分类
|
||||
|
||||
| Press Releases | Statements & Remarks | Readouts | Testimonies |
|
||||
| -------------- | -------------------- | -------- | ----------- |
|
||||
| all | statements-remarks | readouts | testimonies |
|
||||
|
||||
</Route>
|
||||
|
||||
## 美国联邦最高法院
|
||||
|
||||
### 辩论音频
|
||||
|
||||
<Route author="nczitzk" example="/us/supremecourt/argument_audio" path="/us/supremecourt/argument_audio/:year?" :paramsDesc="['年份,默认为当前年份']"/>
|
||||
|
||||
## 美国贸易代表办公室
|
||||
|
||||
### 新闻稿
|
||||
|
||||
<Route author="nczitzk" example="/ustr/press-releases" path="/ustr/press-releases/:year?/:month?" :paramsDesc="['年份,默认为当前年份', '月份,默认为空,即全年']">
|
||||
|
||||
::: tip 提示
|
||||
|
||||
月份处填写该月的英语表达,如 12 月 应填入 `December`。
|
||||
|
||||
:::
|
||||
|
||||
</Route>
|
||||
|
||||
## 美国中央情报局
|
||||
|
||||
### 年度信息自由法报告
|
||||
|
||||
<Route author="nczitzk" example="/cia/foia-annual-report" path="/cia/foia-annual-report"/>
|
||||
|
||||
## 泉州市跨境电子商务协会
|
||||
|
||||
### 新闻动态
|
||||
@@ -139,6 +195,18 @@ pageClass: routes
|
||||
|
||||
<Route author="Yoge-Code" example="/gov/cnca/zxtz" path="/gov/cnca/zxtz"/>
|
||||
|
||||
## 中国农工民主党
|
||||
|
||||
### 新闻中心
|
||||
|
||||
<Route author="nczitzk" example="/ngd" path="/ngd/:slug?" :paramsDesc="['见下文']">
|
||||
|
||||
将目标栏目的网址拆解为 `http://www.ngd.org.cn/` 和后面的字段,去掉 `.htm` 后,把后面的字段中的 `/` 替换为 `-`,即为该路由的 slug
|
||||
|
||||
如:(要闻动态)[http://www.ngd.org.cn/xwzx/ywdt/index.htm] 的网址在 `http://www.ngd.org.cn/` 后的字段是 `xwzx/ywdt/index.htm`,则对应的 slug 为 `xwzx-ywdt-index`,对应的路由即为 `/ngd/xwzx-ywdt-index`
|
||||
|
||||
</Route>
|
||||
|
||||
## 中国人大网
|
||||
|
||||
<Route author="233yeee" example="/npc/c183" path="/npc/:caty" :paramsDesc="['分类名,支持形如`http://www.npc.gov.cn/npc/*/list.shtml`的网站,传入 npc 之后的参数']">
|
||||
@@ -149,6 +217,12 @@ pageClass: routes
|
||||
|
||||
</Route>
|
||||
|
||||
## 中国庭审公开网
|
||||
|
||||
### 开庭信息
|
||||
|
||||
<Route author="Fatpandac" example="/tingshen" path="/tingshen"/>
|
||||
|
||||
## 中国信息通信研究院
|
||||
|
||||
### 白皮书
|
||||
@@ -234,6 +308,32 @@ pageClass: routes
|
||||
|
||||
<Route author="EsuRt" example="/gov/statecouncil/briefing" path="/gov/statecouncil/briefing"/>
|
||||
|
||||
## 中国证券监督管理委员会
|
||||
|
||||
### 发审委公告
|
||||
|
||||
<Route author="chinobing" example="/csrc/fashenwei" path="/csrc/fashenwei"/>
|
||||
|
||||
### 证监会消息
|
||||
|
||||
<Route author="chinobing LogicJake" example="/csrc/news/zjhxwfb-xwfbh" path="/csrc/news/:suffix?" :paramsDesc="['支持形如`http://www.csrc.gov.cn/pub/newsite/*/*`的网站,将 newsite 后面的两段网址后缀以 - 连接']" />
|
||||
|
||||
### 申请事项进度
|
||||
|
||||
<Route author="hillerliao" example="/csrc/auditstatus/:apply_id" path="/csrc/auditstatus" :paramsDesc="['事项类别id, `https://neris.csrc.gov.cn/alappl/home/xkDetail` 列表中各地址的 appMatrCde 参数']"/>
|
||||
|
||||
## 中国政协网
|
||||
|
||||
### 栏目
|
||||
|
||||
<Route author="nczitzk" example="/cppcc" path="/cppcc/:slug?" :paramsDesc="['见下文']">
|
||||
|
||||
将目标栏目的网址拆解为 `http://www.cppcc.gov.cn/` 和后面的字段,去掉 `.shtml` 后,把后面的字段中的 `/` 替换为 `-`,即为该路由的 slug
|
||||
|
||||
如:(委员建言)[http://www.cppcc.gov.cn/zxww/newcppcc/wyjy/index.shtml] 的网址在 `http://www.cppcc.gov.cn/` 后的字段是 `zxww/newcppcc/wyjy/index.shtml`,则对应的 slug 为 `zxww-newcppcc-wyjy-index`,对应的路由即为 `/cppcc/zxww-newcppcc-wyjy-index`
|
||||
|
||||
</Route>
|
||||
|
||||
### 北京市人民政府
|
||||
|
||||
#### 北京教育考试院
|
||||
@@ -313,20 +413,6 @@ pageClass: routes
|
||||
|
||||
</Route>
|
||||
|
||||
## 中国证券监督管理委员会
|
||||
|
||||
### 发审委公告
|
||||
|
||||
<Route author="chinobing" example="/csrc/fashenwei" path="/csrc/fashenwei"/>
|
||||
|
||||
### 证监会消息
|
||||
|
||||
<Route author="chinobing LogicJake" example="/csrc/news/zjhxwfb-xwfbh" path="/csrc/news/:suffix?" :paramsDesc="['支持形如`http://www.csrc.gov.cn/pub/newsite/*/*`的网站,将 newsite 后面的两段网址后缀以 - 连接']" />
|
||||
|
||||
### 申请事项进度
|
||||
|
||||
<Route author="hillerliao" example="/csrc/auditstatus/:apply_id" path="/csrc/auditstatus" :paramsDesc="['事项类别id, `https://neris.csrc.gov.cn/alappl/home/xkDetail` 列表中各地址的 appMatrCde 参数']"/>
|
||||
|
||||
## 中国驻外使领馆
|
||||
|
||||
### 大使馆重要通知
|
||||
@@ -489,6 +575,18 @@ pageClass: routes
|
||||
|
||||
<Route author="MisteryMonster" example="/gov/moa/sjzxfb" path="/gov/moa/sjzxfb"/>
|
||||
|
||||
## 中华人民共和国人力资源和社会保障部
|
||||
|
||||
### 社保减免
|
||||
|
||||
<Route author="ncziztk" example="/gov/mohrss/sbjm" path="/gov/mohrss/sbjm/:category?" :paramsDesc="['分类,见下表']">
|
||||
|
||||
| 要点新闻 | 政策文件 | 工作动态 | 媒体报道 | 图片新闻 |
|
||||
| -------- | -------- | -------- | -------- | -------- |
|
||||
| ydxw | zcwj | gzdt | mtbd | tpxw |
|
||||
|
||||
</Route>
|
||||
|
||||
## 中华人民共和国商务部
|
||||
|
||||
### 政务公开
|
||||
|
||||
+111
-21
@@ -106,6 +106,35 @@ $ docker run -d --name rsshub -p 1200:1200 -e CACHE_EXPIRE=3600 -e GITHUB_ACCESS
|
||||
|
||||
更多配置项请看 [#配置](#pei-zhi)
|
||||
|
||||
## Ansible 部署
|
||||
|
||||
这个 Ansible playbook 包括了 RSSHub, Redis, browserless (依赖 Docker) 以及 Caddy 2
|
||||
|
||||
目前只支持 Ubuntu 20.04
|
||||
|
||||
需要 sudo 权限和虚拟化能力(Docker 将会被自动安装)
|
||||
|
||||
### 安装
|
||||
|
||||
```bash
|
||||
sudo apt update
|
||||
sudo apt install ansible
|
||||
git clone https://github.com/DIYgod/RSSHub.git ~/RSSHub
|
||||
cd ~/RSSHub/scripts/ansible
|
||||
sudo ansible-playbook rsshub.yaml
|
||||
# 当提示输入 domain name 的时候,输入该主机所使用的域名
|
||||
# 举例:如果您的 RSSHub 用户使用 https://rsshub.exmaple.com 访问您的 RSSHub 实例,输入 rsshub.exmaple.com(去掉 https://)
|
||||
```
|
||||
|
||||
### 更新
|
||||
|
||||
```bash
|
||||
cd ~/RSSHub/scripts/ansible
|
||||
sudo ansible-playbook rsshub.yaml
|
||||
# 当提示输入 domain name 的时候,输入该主机所使用的域名
|
||||
# 举例:如果您的 RSSHub 用户使用 https://rsshub.exmaple.com 访问您的 RSSHub 实例,输入 rsshub.exmaple.com(去掉 https://)
|
||||
```
|
||||
|
||||
## 手动部署
|
||||
|
||||
部署 `RSSHub` 最直接的方式,您可以按照以下步骤将 `RSSHub` 部署在您的电脑、服务器或者其他任何地方
|
||||
@@ -207,7 +236,7 @@ in pkgs.stdenv.mkDerivation {
|
||||
### 自动更新部署
|
||||
|
||||
1. 将 RSSHub [分叉(fork)](https://github.com/login?return_to=%2FDIYgod%2FRSSHub) 到自己的账户下。
|
||||
2. 把自己的分叉部署到 Heroku:`https://heroku.com/deploy?template=URL`,其中 `URL` 改为分叉地址 (例如 `https://github.com/USERNAME/RSSHub`)。
|
||||
2. 把自己的分叉部署到 Heroku:`https://heroku.com/deploy?template=URL`,其中 `URL` 改为分叉地址 (例如 `https://github.com/USERNAME/RSSHub`)。
|
||||
3. 检查 Heroku 设置,随代码库更新自动部署。
|
||||
4. 安装 [Pull](https://github.com/apps/pull) 应用,定期将 RSSHub 改动自动同步至你的分叉。
|
||||
|
||||
@@ -322,27 +351,25 @@ RSSHub 支持 `memory` 和 `redis` 两种缓存方式
|
||||
|
||||
`REDIS_URL`: Redis 连接地址(redis 缓存类型时有效),默认为 `redis://localhost:6379/`
|
||||
|
||||
`REDIS_PASSWORD`: Redis 连接密码(redis 缓存类型时有效)
|
||||
|
||||
### 代理配置
|
||||
|
||||
部分路由反爬严格,可以配置使用代理抓取。
|
||||
|
||||
可通过**代理 URI**或**代理选项**两种方式来配置代理,当两种配置方式同时被设置时,RSSHub 将会使用**代理 URI**中的配置。
|
||||
可通过**代理 URI **或**代理选项**两种方式来配置代理,当两种配置方式同时被设置时,RSSHub 将会使用**代理 URI **中的配置。
|
||||
|
||||
#### 代理 URI
|
||||
|
||||
`PROXY_URI`: 代理 URI,支持 socks4, socks5, http, https
|
||||
|
||||
> 代理 URI 的格式为:
|
||||
> 代理 URI 的格式为:
|
||||
>
|
||||
> - `{protocol}://{host}:{port}`
|
||||
> - `{protocol}://{username}:{password}@{host}:{port}` (带身份凭证)
|
||||
> - `{protocol}://{username}:{password}@{host}:{port}` (带身份凭证)
|
||||
>
|
||||
> 一些示例:
|
||||
> 一些示例:
|
||||
>
|
||||
> - `socks4://127.0.0.1:1080`
|
||||
> - `socks5://user:pass@127.0.0.1:1080` (用户名为 `user`, 密码为 `pass`)
|
||||
> - `socks5://user:pass@127.0.0.1:1080` (用户名为 `user`, 密码为 `pass`)
|
||||
> - `socks://127.0.0.1:1080` (protocol 为 socks 时表示 `socks5`)
|
||||
> - `http://127.0.0.1:8080`
|
||||
> - `http://user:pass@127.0.0.1:8080`
|
||||
@@ -372,6 +399,10 @@ RSSHub 支持 `memory` 和 `redis` 两种缓存方式
|
||||
|
||||
`HTTP_BASIC_AUTH_PASS`: Http basic authentication 密码,默认为 `passw0rd`,请务必修改
|
||||
|
||||
### 跨域请求
|
||||
|
||||
RSSHub 默认对跨域请求限制为当前连接所在的域名,即不允许跨域。可以通过 `ALLOW_ORIGIN: *` 或者 `ALLOW_ORIGIN: www.example.com` 以对跨域访问进行修改。
|
||||
|
||||
### 访问控制配置
|
||||
|
||||
RSSHub 支持使用访问密钥 / 码,白名单和黑名单三种方式进行访问控制。开启任意选项将会激活全局访问控制,没有访问权限将会导致访问被拒绝。同时可以通过 `ALLOW_LOCALHOST: true` 赋予所有本地 IP 访问权限。
|
||||
@@ -418,7 +449,9 @@ RSSHub 支持使用访问密钥 / 码,白名单和黑名单三种方式进行
|
||||
|
||||
`REQUEST_RETRY`: 请求失败重试次数,默认 `2`
|
||||
|
||||
`DEBUG_INFO`: 是否在首页显示路由信息,默认 `true`
|
||||
`REQUEST_TIMEOUT`: 请求超时毫秒数,默认 `3000`
|
||||
|
||||
`DEBUG_INFO`: 是否在首页显示路由信息。值为非 `true` `false` 时,在请求中带上参数 `debug` 开启显示,例如:<https://rsshub.app/?debug=value_of_DEBUG_INFO> 。默认 `true`
|
||||
|
||||
`NODE_ENV`: 是否显示错误输出,默认 `production` (即关闭输出)
|
||||
|
||||
@@ -430,6 +463,8 @@ RSSHub 支持使用访问密钥 / 码,白名单和黑名单三种方式进行
|
||||
|
||||
`SENTRY`: [Sentry](https://sentry.io) dsn,用于错误追踪
|
||||
|
||||
`SENTRY_ROUTE_TIMEOUT`: 路由耗时超过此毫秒值上报 Sentry,默认 `3000`
|
||||
|
||||
`DISALLOW_ROBOT`: 阻止搜索引擎收录,默认开启,设置 false 或 0 关闭
|
||||
|
||||
`HOTLINK_TEMPLATE`: 用于处理描述中图片的链接,绕过防盗链等限制,留空不生效。用法参考 [#2769](https://github.com/DIYgod/RSSHub/issues/2769)。可以使用 [URL](https://developer.mozilla.org/en-US/docs/Web/API/URL#Properties) 的所有属性,格式为 JS 变量模板。例子:`${protocol}//${host}${pathname}`, `https://i3.wp.com/${host}${pathname}`
|
||||
@@ -464,11 +499,11 @@ RSSHub 支持使用访问密钥 / 码,白名单和黑名单三种方式进行
|
||||
|
||||
- twitter 全部路由:[申请地址](https://apps.twitter.com)
|
||||
|
||||
- `TWITTER_CONSUMER_KEY`: Twitter Consumer Key,支持多个 key,用英文逗号 `,` 隔开
|
||||
- `TWITTER_CONSUMER_KEY`: Twitter API key,支持多个 key,用英文逗号 `,` 隔开
|
||||
|
||||
- `TWITTER_CONSUMER_SECRET`: Twitter Consumer Secret,支持多个 key,用英文逗号 `,` 隔开,顺序与 key 对应
|
||||
- `TWITTER_CONSUMER_SECRET`: Twitter API key secret,支持多个 key,用英文逗号 `,` 隔开,顺序与 key 对应
|
||||
|
||||
- `TWITTER_TOKEN_{id}`: 对应 id 的 Twitter token,`{id}` 替换为 id,值为 `consumer_key consumer_secret access_token access_token_secret` 用逗号隔开,即:`{consumer_key},{consumer_secret},{access_token},{access_token_secret}`
|
||||
- `TWITTER_TOKEN_{handler}`: 对应 Twitter 用户名生成的 token,`{handler}` 替换为用于生成该 token 的 Twitter 用户名,值为 `Twitter API key, Twitter API key secret, Access token, Access token secret` 用逗号隔开,例如:`TWITTER_TOKEN_RSSHub=bX1zry5nG4d1RbESQbnADpVIo,2YrD8qo9sXbB8VlYfVmo1Qtw0xsexnOliU5oZofq7aPIGou0Xx,123456789-hlkUHFYmeXrRcf6SEQciP8rP4lzmRgMgwdqIN9aK,pHcPnfa28rCIKhSICUCiaw9ppuSSl7T2f3dnGYpSM0bod`
|
||||
|
||||
- youtube 全部路由:[申请地址](https://console.developers.google.com/)
|
||||
|
||||
@@ -484,7 +519,10 @@ RSSHub 支持使用访问密钥 / 码,白名单和黑名单三种方式进行
|
||||
|
||||
- bilibili 用户关注视频动态路由
|
||||
|
||||
- `BILIBILI_COOKIE_{uid}`: 对应 uid 的 b 站用户登录后的 Cookie 值,`{uid}` 替换为 uid,如 `BILIBILI_COOKIE_2267573`,获取方式:1. 打开 <https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_new?uid=0&type=8> 2. 打开控制台 3. 切换到 Network 面板 4. 刷新 5. 点击 dynamic_new 请求 6. 找到 Cookie
|
||||
- `BILIBILI_COOKIE_{uid}`: 对应 uid 的 b 站用户登录后的 Cookie 值,`{uid}` 替换为 uid,如 `BILIBILI_COOKIE_2267573`,获取方式:
|
||||
1. 打开 <https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_new?uid=0&type=8>
|
||||
2. 打开控制台,切换到 Network 面板,刷新
|
||||
3. 点击 dynamic_new 请求,找到 Cookie。(Key:`SESSDATA`)
|
||||
|
||||
- 语雀 全部路由:[注册地址](https://www.yuque.com/register)
|
||||
|
||||
@@ -498,7 +536,11 @@ RSSHub 支持使用访问密钥 / 码,白名单和黑名单三种方式进行
|
||||
|
||||
- 吹牛部落 栏目更新
|
||||
|
||||
- `CHUINIU_MEMBER`: 吹牛部落登录后的 x-member,获取方式:1. 登陆后点开文章正文 2. 打开控制台 3. 刷新 4. 找到 <http://api.duanshu.com/h5/content/detail/> 开头的请求 5. 找到请求头中的 x-member
|
||||
- `CHUINIU_MEMBER`: 吹牛部落登录后的 x-member,获取方式
|
||||
1. 登陆后点开文章正文
|
||||
2. 打开控制台,刷新
|
||||
3. 找到 <http://api.duanshu.com/h5/content/detail/> 开头的请求
|
||||
4. 找到请求头中的 x-member
|
||||
|
||||
- 微博 个人时间线路由:[申请地址](https://open.weibo.com/connect)
|
||||
|
||||
@@ -512,6 +554,10 @@ RSSHub 支持使用访问密钥 / 码,白名单和黑名单三种方式进行
|
||||
- `MASTODON_API_ACCESS_TOKEN`: 用户 access token, 申请应用后,在应用配置页可以看到申请者的 access token
|
||||
- `MASTODON_API_ACCT_DOMAIN`: 该实例本地用户 acct 标识的域名
|
||||
|
||||
- MiniFlux 全部路由:
|
||||
- `MINIFLUX_INSTANCE`: 用户所用的实例,默认为 MiniFlux 官方提供的 [付费服务地址](https://reader.miniflux.app)
|
||||
- `MINIFLUX_TOKEN`: 用户的 API 密钥,请登录所用实例后于 `设置` -> `API 密钥` -> `创建一个新的 API 密钥` 处获取
|
||||
|
||||
- 饭否 全部路由:[申请地址](https://github.com/FanfouAPI/FanFouAPIDoc/wiki/Oauth)
|
||||
|
||||
- `FANFOU_CONSUMER_KEY`: 饭否 Consumer Key
|
||||
@@ -525,7 +571,11 @@ RSSHub 支持使用访问密钥 / 码,白名单和黑名单三种方式进行
|
||||
|
||||
- 北大未名 BBS 全站十大
|
||||
|
||||
- `PKUBBS_COOKIE`: BBS 注册用户登录后的 Cookie 值,获取方式:1. 登录后打开论坛首页 2. 打开控制台 3. 刷新 4. 找到 <https://bbs.pku.edu.cn/v2/home.php> 请求 5. 找到请求头中的 Cookie
|
||||
- `PKUBBS_COOKIE`: BBS 注册用户登录后的 Cookie 值,获取方式:
|
||||
1. 登录后打开论坛首页
|
||||
2. 打开控制台, 刷新
|
||||
3. 找到 <https://bbs.pku.edu.cn/v2/home.php> 请求
|
||||
4. 找到请求头中的 Cookie
|
||||
|
||||
- nhentai torrent: [注册地址](https://nhentai.net/register/)
|
||||
|
||||
@@ -534,11 +584,11 @@ RSSHub 支持使用访问密钥 / 码,白名单和黑名单三种方式进行
|
||||
|
||||
- discuz cookies 设定
|
||||
|
||||
- `DISCUZ_COOKIE_{cid}`: 某 Discuz 驱动的论坛,用户注册后的 Cookie 值,cid 可自由设定,取值范围[00, 99], 使用 discuz 通用路由时,通过指定 cid 来调用该 cookie
|
||||
- `DISCUZ_COOKIE_{cid}`: 某 Discuz 驱动的论坛,用户注册后的 Cookie 值,cid 可自由设定,取值范围 [00, 99], 使用 discuz 通用路由时,通过指定 cid 来调用该 cookie
|
||||
|
||||
- Sci-hub 设置,用于科学期刊路由。
|
||||
|
||||
- `SCIHUB_HOST`: 可访问的 sci-hub 镜像地址,默认为 `https://sci-hub.tw`。
|
||||
- `SCIHUB_HOST`: 可访问的 sci-hub 镜像地址,默认为 `https://sci-hub.se`。
|
||||
|
||||
- 端传媒设置,用于获取付费内容全文:
|
||||
|
||||
@@ -548,13 +598,25 @@ RSSHub 支持使用访问密钥 / 码,白名单和黑名单三种方式进行
|
||||
|
||||
Web 版认证 token 和 iOS 内购回执认证 token 只需选择其一填入即可。如果你在进行上述操作时遇到困难,亦可选择在环境设置中填写明文的用户名和密码:
|
||||
|
||||
- `INITIUM_USERNAME`: 端传媒用户名 (邮箱)
|
||||
- `INITIUM_USERNAME`: 端传媒用户名 (邮箱)
|
||||
- `INITIUM_PASSWORD`: 端传媒密码
|
||||
|
||||
- Instagram:
|
||||
|
||||
- `IG_USERNAME`: Instagram 用户名。
|
||||
- `IG_PASSWORD`: Instagram 密码。
|
||||
- `IG_PROXY`: Instagram 代理 URL。
|
||||
|
||||
注意,暂不支持两步验证。
|
||||
|
||||
- BTBYR
|
||||
|
||||
- `BTBYR_HOST`: 支持 ipv4 访问的 BTBYR 镜像,默认为原站 `https://bt.byr.cn/`。
|
||||
- `BTBYR_COOKIE`: 注册用户登录后的 Cookie 值,获取方式:1. 登录后打开网站首页 2. 打开控制台 3. 刷新 4. 找到 <https://bt.byr.cn/index.php> 请求 5. 找到请求头中的 Cookie
|
||||
- `BTBYR_COOKIE`: 注册用户登录后的 Cookie 值,获取方式:
|
||||
1. 登录后打开网站首页
|
||||
2. 打开控制台,刷新
|
||||
3. 找到 <https://bt.byr.cn/index.php> 请求
|
||||
4. 找到请求头中的 Cookie
|
||||
|
||||
- 小宇宙:需要 App 登陆后抓包获取相应数据。
|
||||
|
||||
@@ -573,8 +635,36 @@ RSSHub 支持使用访问密钥 / 码,白名单和黑名单三种方式进行
|
||||
|
||||
- 喜马拉雅
|
||||
|
||||
- `XIMALAYA_TOKEN`: 对应 cookie 中的 `1&_token`,获取方式:1. 登陆喜马拉雅网页版 2. 查找名称为`1&_token`的`cookie`,其内容即为`XIMALAYA_TOKEN`的值(即在`cookie` 中查找 `1&_token=***;`,并设置 `XIMALAYA_TOKEN = ***`)
|
||||
- `XIMALAYA_TOKEN`: 对应 cookie 中的 `1&_token`,获取方式:
|
||||
1. 登陆喜马拉雅网页版
|
||||
2. 打开控制台,刷新
|
||||
3. 查找名称为`1&_token`的`cookie`,其内容即为`XIMALAYA_TOKEN`的值(即在`cookie` 中查找 `1&_token=***;`,并设置 `XIMALAYA_TOKEN = ***`)
|
||||
|
||||
- 4399 论坛
|
||||
|
||||
- `GAME_4399`: 对应登录后的 cookie 值,获取方式:1. 在 4399 首页登录. 2. 打开开发者工具,切换到 Network 面板. 3. 刷新 4. 查找`www.4399.com`的访问请求,点击请求,在右侧 Headers 中找到 Cookie.
|
||||
- `GAME_4399`: 对应登录后的 cookie 值,获取方式:
|
||||
1. 在 4399 首页登录。
|
||||
2. 打开开发者工具,切换到 Network 面板,刷新
|
||||
3. 查找`www.4399.com`的访问请求,点击请求,在右侧 Headers 中找到 Cookie.
|
||||
|
||||
- 滴答清单
|
||||
|
||||
- `DIDA365_USERNAME`: 滴答清单用户名
|
||||
- `DIDA365_PASSWORD`: 滴答清单密码
|
||||
|
||||
- 知乎用户关注时间线
|
||||
|
||||
- `ZHIHU_COOKIES`: 知乎登录后的 cookie 值.
|
||||
1. 可以在知乎网页版的一些请求的请求头中找到,如 `GET /moments` 请求头中的 `cookie` 值.
|
||||
|
||||
- Wordpress
|
||||
|
||||
- `WORDPRESS_CDN`: 用于中转 http 图片链接。可供考虑的服务见下表:
|
||||
|
||||
| url | backbone |
|
||||
| ---------------------------------------- | ------------ |
|
||||
| <https://imageproxy.pimg.tw/resize?url=> | akamai |
|
||||
| <https://images.weserv.nl/?url=> | cloudflare |
|
||||
| <https://pic1.xuehuaimg.com/proxy/> | cloudflare |
|
||||
| <https://cors.netnr.workers.dev/> | cloudflare |
|
||||
| <https://netnr-proxy.openode.io/> | digitalocean |
|
||||
|
||||
@@ -58,6 +58,16 @@ pageClass: routes
|
||||
|
||||
</Route>
|
||||
|
||||
## Deloitte
|
||||
|
||||
<Route author="laampui" example="/deloitte/industries/consumer" path="/deloitte/industries/:category?" :paramsDesc="['默认为 energy-resources-industrials']">
|
||||
|
||||
| 消费行业 | 能源、资源及工业行业 | 金融服务行业 | 政府及公共服务 | 生命科学与医疗行业 | 科技、传媒及电信行业 |
|
||||
| -------- | ---------------------------- | ------------------ | -------------------------- | ------------------------ | ----------------------------------- |
|
||||
| consumer | energy-resources-industrials | financial-services | government-public-services | life-sciences-healthcare | technology-media-telecommunications |
|
||||
|
||||
</Route>
|
||||
|
||||
## elife
|
||||
|
||||
### 最新成果
|
||||
|
||||
+2
-2
@@ -22,7 +22,7 @@ pageClass: routes
|
||||
|
||||
### 直播分区
|
||||
|
||||
<Route author="Qixingchen" example="/bilibili/live/area/143/online" path="/bilibili/live/area/:areaID/:order" :paramsDesc="['分区 ID 分区增删较多, 可通过 [分区列表](https://api.live.bilibili.com/room/v1/Area/getList) 查询', '排序方式, live_time 开播时间, online 人气']">
|
||||
<Route author="Qixingchen" example="/bilibili/live/area/207/online" path="/bilibili/live/area/:areaID/:order" :paramsDesc="['分区 ID 分区增删较多, 可通过 [分区列表](https://api.live.bilibili.com/room/v1/Area/getList) 查询', '排序方式, live_time 开播时间, online 人气']">
|
||||
|
||||
::: warning 注意
|
||||
|
||||
@@ -42,7 +42,7 @@ pageClass: routes
|
||||
|
||||
### 直播间开播
|
||||
|
||||
<Route author="SettingDust xyqfer" example="/huya/live/edmunddzhang" path="/huya/live/:id" :paramsDesc="['直播间id或主播名(有一些id是名字,如上)']"/>
|
||||
<Route author="SettingDust xyqfer" example="/huya/live/edmunddzhang" path="/huya/live/:id" :paramsDesc="['直播间id或主播名(有一些id是名字,如上)']" radar="1" rssbud="1"/>
|
||||
|
||||
## 浪 Play (原 kingkong) 直播
|
||||
|
||||
|
||||
+294
-22
@@ -4,6 +4,102 @@ pageClass: routes
|
||||
|
||||
# 音视频
|
||||
|
||||
## 141JAV
|
||||
|
||||
::: tip 提示
|
||||
|
||||
官方提供的订阅源不支持 BT 下载订阅,地址为 <https://141jav.com/feeds/>
|
||||
|
||||
:::
|
||||
|
||||
### 141JAV BT
|
||||
|
||||
<Route author="cgkings" example="/141jav/popular/30" path="/141jav/:type/:key?" :paramsDesc="['类型', '关键词']" supportBT="1" radar="1">
|
||||
|
||||
**类型**
|
||||
|
||||
| 最新 | 热门 | 随机 | 指定演员 | 指定标签 | 指定日期 |
|
||||
| ---- | ------- | ------ | -------- | -------- | -------- |
|
||||
| new | popular | random | actress | tag | day |
|
||||
|
||||
**关键词**
|
||||
|
||||
| 空 | 日期范围 | 演员名 | 标签名 | 日期 |
|
||||
| -- | ----------- | ------------ | -------------- | -------- |
|
||||
| | 7 / 30 / 60 | Yua%20Mikami | Adult%20Awards | YYYYMMDD |
|
||||
|
||||
**示例说明**
|
||||
|
||||
- `/141jav/new`
|
||||
|
||||
仅当类型为 `new` `popular` 或 `random` 时关键词可为 **空**
|
||||
|
||||
- `/141jav/popular/30`
|
||||
|
||||
`popular` `random` 类型的关键词可填写 `7` `30` 或 `60` 三个 **日期范围** 之一
|
||||
|
||||
- `/141jav/actress/Yua%20Mikami`
|
||||
|
||||
`actress` 类型的关键词必须填写 **演员名** ,可在 [此处](https://141jav.com/actress/) 演员单页链接中获取
|
||||
|
||||
- `/141jav/tag/Adult%20Awards`
|
||||
|
||||
`tag` 类型的关键词必须填写 **标签名** 且标签中的 `/` 必须替换为 `%2F` ,可在 [此处](https://141jav.com/tag/) 标签单页链接中获取
|
||||
|
||||
- `/141jav/day/20200730`
|
||||
|
||||
`day` 类型的关键词必须填写 **日期** ,按照示例写成形如 `20200730` 的格式
|
||||
|
||||
</Route>
|
||||
|
||||
## 141PPV
|
||||
|
||||
::: tip 提示
|
||||
|
||||
官方提供的订阅源不支持 BT 下载订阅,地址为 <https://141ppv.com/feeds/>
|
||||
|
||||
:::
|
||||
|
||||
### 141PPV BT
|
||||
|
||||
<Route author="cgkings" example="/141ppv/popular/30" path="/141ppv/:type/:key?" :paramsDesc="['类型', '关键词']" supportBT="1" radar="1">
|
||||
|
||||
**类型**
|
||||
|
||||
| 最新 | 热门 | 随机 | 指定演员 | 指定标签 | 指定日期 |
|
||||
| ---- | ------- | ------ | -------- | -------- | -------- |
|
||||
| new | popular | random | actress | tag | day |
|
||||
|
||||
**关键词**
|
||||
|
||||
| 空 | 日期范围 | 演员名 | 标签名 | 日期 |
|
||||
| -- | ----------- | ------------ | -------------- | -------- |
|
||||
| | 7 / 30 / 60 | Yua%20Mikami | Adult%20Awards | YYYYMMDD |
|
||||
|
||||
**示例说明**
|
||||
|
||||
- `/141ppv/new`
|
||||
|
||||
仅当类型为 `new` `popular` 或 `random` 时关键词可为 **空**
|
||||
|
||||
- `/141ppv/popular/30`
|
||||
|
||||
`popular` `random` 类型的关键词可填写 `7` `30` 或 `60` 三个 **日期范围** 之一
|
||||
|
||||
- `/141ppv/actress/Yua%20Mikami`
|
||||
|
||||
`actress` 类型的关键词必须填写 **演员名** ,可在 [此处](https://141ppv.com/actress/) 演员单页链接中获取
|
||||
|
||||
- `/141ppv/tag/Adult%20Awards`
|
||||
|
||||
`tag` 类型的关键词必须填写 **标签名** 且标签中的 `/` 必须替换为 `%2F` ,可在 [此处](https://141ppv.com/tag/) 标签单页链接中获取
|
||||
|
||||
- `/141ppv/day/20200730`
|
||||
|
||||
`day` 类型的关键词必须填写 **日期** ,按照示例写成形如 `20200730` 的格式
|
||||
|
||||
</Route>
|
||||
|
||||
## 2048 核基地
|
||||
|
||||
### 论坛更新
|
||||
@@ -12,9 +108,9 @@ pageClass: routes
|
||||
|
||||
## 60-Second Science - Scientific American
|
||||
|
||||
### Transcript
|
||||
<Route author="emdoe" example="/60s-science" path="/60s-science"/>
|
||||
|
||||
<Route author="emdoe" example="/60s-science/transcript" path="/60s-science/transcript"/>
|
||||
输出 Transcript 从而提供比官方(podcast)更好的使用体验。
|
||||
|
||||
## 99% Invisible
|
||||
|
||||
@@ -63,6 +159,25 @@ pageClass: routes
|
||||
|
||||
:::
|
||||
|
||||
## CNTV 栏目
|
||||
|
||||
::: tip 提示
|
||||
|
||||
栏目 ID 查找示例:
|
||||
打开栏目具体某一期页面,F12 控制台输入`column_id`得到栏目 ID。
|
||||
|
||||
:::
|
||||
|
||||
<Route author="WhoIsSure" example="/cntv/TOPC1451528971114112" path="/cntv/:column" :paramsDesc="['栏目ID, 可在对应CNTV栏目页面找到']">
|
||||
|
||||
栏目
|
||||
|
||||
| 新闻联播 | 新闻周刊 | 天下足球 |
|
||||
| -------------------- | -------------------- | -------------------- |
|
||||
| TOPC1451528971114112 | TOPC1451559180488841 | TOPC1451551777876756 |
|
||||
|
||||
</Route>
|
||||
|
||||
## EZTV
|
||||
|
||||
::: tip 提示
|
||||
@@ -139,9 +254,9 @@ pageClass: routes
|
||||
|
||||
分类
|
||||
|
||||
| 有碼 | 無碼 | 歐美 | FC2 |
|
||||
| -------- | ---------- | ------- | --- |
|
||||
| censored | uncensored | western | fc2 |
|
||||
| 有碼 | 無碼 | 歐美 |
|
||||
| -------- | ---------- | ------- |
|
||||
| censored | uncensored | western |
|
||||
|
||||
排序
|
||||
|
||||
@@ -171,9 +286,9 @@ pageClass: routes
|
||||
|
||||
分类
|
||||
|
||||
| 有碼 | 無碼 | 歐美 | FC2 |
|
||||
| -------- | ---------- | ------- | --- |
|
||||
| censored | uncensored | western | fc2 |
|
||||
| 有碼 | 無碼 | 歐美 |
|
||||
| -------- | ---------- | ------- |
|
||||
| censored | uncensored | western |
|
||||
|
||||
</Route>
|
||||
|
||||
@@ -183,9 +298,9 @@ pageClass: routes
|
||||
|
||||
分类
|
||||
|
||||
| 有碼 | 無碼 | 歐美 | FC2 |
|
||||
| -------- | ---------- | ------- | --- |
|
||||
| censored | uncensored | western | fc2 |
|
||||
| 有碼 | 無碼 | 歐美 |
|
||||
| -------- | ---------- | ------- |
|
||||
| censored | uncensored | western |
|
||||
|
||||
时间
|
||||
|
||||
@@ -325,6 +440,18 @@ pageClass: routes
|
||||
|
||||
<Route author="hoilc" example="/mqube/tag/UTAU" path="/mqube/tag/:tag" :paramsDesc="['标签名称, 可参考`https://mqube.net/search/tag`']" radar="1" rssbud="1"/>
|
||||
|
||||
## NEW 字幕组
|
||||
|
||||
### 分类
|
||||
|
||||
<Route author="nczitzk" example="/newzmz" path="/newzmz/:category?" :paramsDesc="['分类,见下表,默认为最近更新']">
|
||||
|
||||
| 最近更新 | 剧集推荐 | 电影推荐 | 纪录片推荐 | 动画推荐 | 真人秀推荐 |
|
||||
| -------- | -------- | -------- | ---------- | -------- | ---------- |
|
||||
| 1 | 2 | 3 | 4 | 5 | 6 |
|
||||
|
||||
</Route>
|
||||
|
||||
## Nyaa
|
||||
|
||||
### 搜索结果
|
||||
@@ -411,6 +538,16 @@ pageClass: routes
|
||||
|
||||
<Route author="I2IMk" example="/pornhub/category_url/video%3Fc%3D15%26o%3Dmv%26t%3Dw%26cc%3Djp" path="/pornhub/category_url/:url?" :paramsDesc="['相对路径, `pornhub.com/` 后的部分, 需手动 URL 编码']"/>
|
||||
|
||||
## Prestige 蚊香社
|
||||
|
||||
### 系列作品
|
||||
|
||||
<Route author="minimalistrojan" example="/prestige-av/series/847" path="/prestige-av/series/:mid/:sort?" :paramsDesc="['系列编号', '排序方式,缺省为 near(最新)']"/>
|
||||
|
||||
| 人气 | 最新 | 发售日期 | 标题顺序 | 价格升序 | 价格降序 |
|
||||
| ------- | ---- | -------- | -------- | -------- | -------- |
|
||||
| popular | near | date | title | low | high |
|
||||
|
||||
## rs05 人生 05 电影
|
||||
|
||||
### rs05 电影列表
|
||||
@@ -443,13 +580,16 @@ pageClass: routes
|
||||
|
||||
<Route author="fallenhh" example="/soundcloud/tracks/angeart" path="/soundcloud/tracks/:user" :paramsDesc="['用户名']" />
|
||||
|
||||
## subHD.tv - 最新字幕
|
||||
|
||||
<Route author="laampui" example="/subhd/newest" path="/subhd/newest" />
|
||||
## Yahoo! テレビ
|
||||
|
||||
### 番組検索
|
||||
|
||||
<Route author="sakamossan" example="/yahoo-jp-tv/%E8%8A%B1%E6%BE%A4%E9%A6%99%E8%8F%9C" path="/yahoo-jp-tv/:query" :paramsDesc="['搜索查询']"/>
|
||||
|
||||
## Youtube
|
||||
## YouTube
|
||||
|
||||
见 [#youtube](/social-media.html#youtube)
|
||||
|
||||
@@ -463,6 +603,74 @@ pageClass: routes
|
||||
|
||||
<Route author="ranpox" example="/iqiyi/dongman/a_19rrh1sifx" path="/iqiyi/dongman/:id" :paramsDesc="['动漫 id, 可在该动漫主页 URL 中找到(不包括`.html`)']"/>
|
||||
|
||||
## 哔嘀影视
|
||||
|
||||
### 首页
|
||||
|
||||
<Route author="nczitzk" example="/bde4" path="/bde4/:type?/:caty?/:area?/:year?/:order?" :paramsDesc="['资源分类,见下表,默认为 `all` 即不限', '影视类型,见下表,默认为 `all` 即不限','制片地区,见下表,默认为 `all` 即不限','上映时间,此处填写年份不小于2000,默认为 `all` 即不限','影视排序,见下表,默认为更新时间']">
|
||||
|
||||
#### 资源分类
|
||||
|
||||
| 不限 | 电影 | 电视剧 |
|
||||
| ---- | ---- | ------ |
|
||||
| all | 0 | 1 |
|
||||
|
||||
#### 影视类型
|
||||
|
||||
| 不限 | 动作 | 爱情 | 喜剧 | 科幻 | 恐怖 |
|
||||
| ---- | ------- | ------ | ---- | ------ | ------ |
|
||||
| all | dongzuo | aiqing | xiju | kehuan | kongbu |
|
||||
|
||||
| 战争 | 武侠 | 魔幻 | 剧情 | 动画 | 惊悚 |
|
||||
| --------- | ----- | ------ | ------ | ------- | -------- |
|
||||
| zhanzheng | wuxia | mohuan | juqing | donghua | jingsong |
|
||||
|
||||
| 3D | 灾难 | 悬疑 | 警匪 | 文艺 | 青春 |
|
||||
| -- | ------ | ------ | ------- | ----- | -------- |
|
||||
| 3D | zainan | xuanyi | jingfei | wenyi | qingchun |
|
||||
|
||||
| 冒险 | 犯罪 | 纪录 | 古装 | 奇幻 | 国语 |
|
||||
| ------- | ------ | ---- | -------- | ------ | ----- |
|
||||
| maoxian | fanzui | jilu | guzhuang | qihuan | guoyu |
|
||||
|
||||
| 综艺 | 历史 | 运动 | 原创压制 |
|
||||
| ------ | ----- | ------- | ---------- |
|
||||
| zongyi | lishi | yundong | yuanchuang |
|
||||
|
||||
| 美剧 | 韩剧 | 国产电视剧 | 日剧 | 英剧 | 德剧 |
|
||||
| ----- | ----- | ---------- | ---- | ------ | ---- |
|
||||
| meiju | hanju | guoju | riju | yingju | deju |
|
||||
|
||||
| 俄剧 | 巴剧 | 加剧 | 西剧 | 意大利剧 | 泰剧 |
|
||||
| ---- | ---- | ----- | ---- | -------- | ----- |
|
||||
| eju | baju | jiaju | xiju | yidaliju | taiju |
|
||||
|
||||
| 港台剧 | 法剧 | 澳剧 |
|
||||
| --------- | ---- | ---- |
|
||||
| gangtaiju | faju | aoju |
|
||||
|
||||
#### 制片地区
|
||||
|
||||
| 大陆 | 中国香港 | 中国台湾 |
|
||||
| ---- | -------- | -------- |
|
||||
|
||||
| 美国 | 英国 | 日本 | 韩国 | 法国 |
|
||||
| ---- | ---- | ---- | ---- | ---- |
|
||||
|
||||
| 印度 | 德国 | 西班牙 | 意大利 | 澳大利亚 |
|
||||
| ---- | ---- | ------ | ------ | -------- |
|
||||
|
||||
| 比利时 | 瑞典 | 荷兰 | 丹麦 | 加拿大 | 俄罗斯 |
|
||||
| ------ | ---- | ---- | ---- | ------ | ------ |
|
||||
|
||||
#### 影视排序
|
||||
|
||||
| 更新时间 | 豆瓣评分 |
|
||||
| -------- | -------- |
|
||||
| 0 | 1 |
|
||||
|
||||
</Route>
|
||||
|
||||
## 播客 IBC 岩手放送| IBC ラジオ イヤーマイッタマイッタ
|
||||
|
||||
### IBC 岩手放送| IBC ラジオ イヤーマイッタマイッタ
|
||||
@@ -571,6 +779,10 @@ pageClass: routes
|
||||
|
||||
<Route author="FlashWingShadow" example="/missevan/drama/28499" path="/missevan/drama/:id" :paramsDesc="['剧集 id,在剧集主页 URL 中可以找到']"/>
|
||||
|
||||
### 最新广播剧
|
||||
|
||||
<Route author="nczitzk" example="/missevan/drama/latest" path="/missevan/drama/latest"/>
|
||||
|
||||
## 猫眼电影
|
||||
|
||||
### 正在热映
|
||||
@@ -647,6 +859,26 @@ pageClass: routes
|
||||
|
||||
</Route>
|
||||
|
||||
## 深影译站
|
||||
|
||||
### 首页
|
||||
|
||||
<Route author="nczitzk" example="/shinybbs" path="/shinybbs" />
|
||||
|
||||
### 剧集类型
|
||||
|
||||
<Route author="nczitzk" example="/shinybbs/62" path="/shinybbs/:id?" :paramsDesc="['类型 id,见下表']">
|
||||
|
||||
| 英美剧 | 日韩剧 | 小语种 |
|
||||
| ------ | ------ | ------ |
|
||||
| 62 | 140 | 2 |
|
||||
|
||||
</Route>
|
||||
|
||||
### 最新作品
|
||||
|
||||
<Route author="nczitzk" example="/shinybbs/latest" path="/shinybbs/latest" />
|
||||
|
||||
## 腾讯视频
|
||||
|
||||
### 播放列表
|
||||
@@ -671,31 +903,45 @@ pageClass: routes
|
||||
|
||||
<Route author="magic-akari" example="/ncm/djradio/347317067" path="/ncm/djradio/:id" :paramsDesc="['节目 id, 可在电台节目页 URL 中找到']" supportPodcast="1" />
|
||||
|
||||
## 西瓜视频
|
||||
|
||||
::: tip Tiny Tiny RSS 用户请注意
|
||||
|
||||
Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性,导致无法加载西瓜视频内嵌视频,如果需要使用内嵌视频请为 Tiny Tiny RSS 安装 [remove_iframe_sandbox](https://github.com/DIYgod/ttrss-plugin-remove-iframe-sandbox) 插件
|
||||
|
||||
:::
|
||||
|
||||
### 用户视频投稿
|
||||
|
||||
<Route author="FlashWingShadow" example="/ixigua/user/video/4234740937" path="/ixigua/user/video/:uid/:disableEmbed?" :paramsDesc="['用户 id, 可在用户主页中找到', '默认为开启内嵌视频, 任意值为关闭']"/>
|
||||
|
||||
## 喜马拉雅
|
||||
|
||||
### 专辑
|
||||
### 专辑(不输出 ShowNote)
|
||||
|
||||
<Route author="lengthmin jjeejj prnake" example="/ximalaya/album/299146" path="/ximalaya/album/:id/:all?" :paramsDesc="['专辑 id, 可在对应专辑页面的 URL 中找到','是否需要获取全部节目,默认不获取,填入该字段则视为获取']" supportPodcast="1" radar="1" rssbud="1">
|
||||
<Route author="lengthmin jjeejj prnake" example="/ximalaya/album/299146" path="/ximalaya/album/:id/:all?" :paramsDesc="['专辑 id, 可在对应专辑页面的 URL 中找到','是否需要获取全部节目,填入 `1`、`true`、`all` 视为获取所有节目,填入其他则不获取。']" supportPodcast="1" radar="1" rssbud="1" selfhost="1">
|
||||
|
||||
目前喜马拉雅的 API 只能一集一集的获取各节目上的 ShowNote,会极大的占用系统资源,所以默认为不获取节目的 ShowNote。下方有一个新的路径可选获取 ShowNote。
|
||||
|
||||
::: warning 注意
|
||||
专辑 id 是跟在**分类拼音**后的那个 id, 不要输成某集的 id 了
|
||||
|
||||
**付费内容需要登陆才能收听,详情见部署页面的配置模块**
|
||||
|
||||
目前支持泛用型播客订阅的[输出格式](https://docs.rsshub.app/#输出格式)中标明的格式只有 rss 支持,也就是说你**只能使用**以下类型的链接来订阅播客:
|
||||
|
||||
- `https://rsshub.app/ximalaya/album/*`
|
||||
- `https://rsshub.app/ximalaya/album/*.rss`
|
||||
|
||||
**付费内容需要配置好已购买账户的 token 才能收听,详情见部署页面的配置模块**
|
||||
:::
|
||||
|
||||
</Route>
|
||||
|
||||
### 专辑(输出 ShowNote)
|
||||
|
||||
<Route author="lengthmin jjeejj prnake" example="/ximalaya/album/39488639/0/shownote" path="/ximalaya/album/:id/:all/:shownote?" :paramsDesc="['专辑 id, 可在对应专辑页面的 URL 中找到','是否需要获取全部节目,填入 `1`、`true`、`all` 视为获取所有节目,填入其他则不获取。', '是否需要获取节目的 ShowNote,填入 `1`、`true`,`shownote` 视为获取,填入其他则不获取。']" supportPodcast="1" selfhost="1">
|
||||
|
||||
</Route>
|
||||
|
||||
## 小宇宙
|
||||
|
||||
### 发现
|
||||
|
||||
<Route author="prnake" example="/xiaoyuzhou" path="/xiaoyuzhou">
|
||||
<Route author="prnake" example="/xiaoyuzhou" path="/xiaoyuzhou" selfhost="1">
|
||||
|
||||
::: warning 注意
|
||||
|
||||
@@ -766,3 +1012,29 @@ pageClass: routes
|
||||
例如,路由 `/zimuzu/top/week/movie` 应该输出 <http://www.rrys2019.com/html/top/week_movie_list.html> 的排行榜单
|
||||
|
||||
</Route>
|
||||
|
||||
## AV01(av01.tv)
|
||||
|
||||
### 演员
|
||||
|
||||
::: tip 提示
|
||||
当没有给定排序类型时,默认为按上传时间排序及mr
|
||||
|
||||
:::
|
||||
|
||||
<Route author="HXHL" example="/av01/actor/七沢みあ" path="/av01/actor/:name/:type?" :paramsDesc="['女优名,必选-仅限日语,可直接在网站上找到','排序顺序,可选-可以是`mr` `rd` `bw` `tr` `lg`']">
|
||||
|
||||
|
||||
| 按上传时间排序 | 按上市时间排序 | 按观看次数排序| 按评分排序|按时长排序|
|
||||
| -------- | -------- |-------- |-------- |--------|
|
||||
| mr | rd | bw | tr | lg |
|
||||
</Route>
|
||||
|
||||
|
||||
### 分类
|
||||
|
||||
<Route author="HXHL" example="/av01/tag/中出し" path="/av01/tag/:name/:type?" :paramsDesc="['分类名,必选-仅限日语,可直接在网站上找到','排序顺序,可选-可以是`mr` `rd` `bw` `tr` `lg`']">
|
||||
|
||||
例如,路由 `/av01/tag/中出し` 应该输出 <https://www.av01.tv/tag/%E4%B8%AD%E5%87%BA%E3%81%97> 的排行榜单
|
||||
|
||||
</Route>
|
||||
|
||||
+767
-25
File diff suppressed because it is too large
Load Diff
+87
-12
@@ -4,6 +4,18 @@ pageClass: routes
|
||||
|
||||
# 其他
|
||||
|
||||
## 4399 论坛
|
||||
|
||||
### 4399 论坛
|
||||
|
||||
<Route author="DIYgod" example="/forum4399/mtag-83932" path="/forum4399/:mtag" :paramsDesc="['mtag,必选-论坛网址最后的mtag字段']" selfhost="1"/>
|
||||
::: warning 注意
|
||||
|
||||
需要用户 cookie 值,详情见部署页面的配置模块。
|
||||
|
||||
:::
|
||||
</Route>
|
||||
|
||||
## acwifi 路由器交流
|
||||
|
||||
### 新闻
|
||||
@@ -97,6 +109,16 @@ pageClass: routes
|
||||
|
||||
<Route author="ntzyz" example="/dhl/12345678" path="/dhl/:shipment_id" :paramsDesc="['运单号']"/>
|
||||
|
||||
## Grand-Challenge
|
||||
|
||||
### Challenge 列表
|
||||
|
||||
<Route author="WhoIsSure" example="/grandchallenge/challenges" path="/grandchallenge/challenges"/>
|
||||
|
||||
### 用户参加的 Challenge
|
||||
|
||||
<Route author="WhoIsSure" example="/grandchallenge/user/Isensee" path="/grandchallenge/user/:id" :paramsDesc="['用户ID,必选-用户页面网址里面的用户ID']"/>
|
||||
|
||||
## HackerOne
|
||||
|
||||
### HackerOne Hacker Activity
|
||||
@@ -121,6 +143,51 @@ pageClass: routes
|
||||
|
||||
<Route author="proletarius101" example="/iyouport/osint" path="/iyouport/:category?"/>
|
||||
|
||||
## MiniFlux
|
||||
|
||||
因需设置 API Key,故请自行架设 RSSHub。API 密钥则请于 MiniFlux 实例中的 `设置` -> `API密钥` -> `创建一个新的API密钥` 处获取。
|
||||
|
||||
### 订阅列表
|
||||
|
||||
<Route author="emdoe" example="/miniflux/subscription/categories=科技,影音" path="/miniflux/subscription/:parameters?" :paramsDesc="['分类名或分类 ID 或/且 订阅源名称或订阅源 ID']" selfhost="1">
|
||||
|
||||
1. 如无指定参数,默认输出全部订阅源
|
||||
2. 分类 ID 或订阅源 ID 请于`分类`(快捷键 `g` `c`)或`源`(快捷键 `g` `f`)页面获取,每个分类(或订阅源)的网址即显示其 ID 信息。
|
||||
3. 支持分类名称和分类 ID,如需输出多个分类,请重复输入 `category=` 并用 `&` 连接,或者不同的分类名之间直接用**英文**逗号连接。举例来说,可以通过 `/miniflux/subscription/category=科技&category=1` 或者 `/miniflux/subscription/categories=科技,1` 实现订阅。
|
||||
4. 支持指定订阅源名称或订阅源 ID,方法与分类的设定类似。举例来说,可以通过 `/miniflux/subscription/feed=1&feed=Archdaily` 或者 `/miniflux/subscription/feeds=1,Archdaily` 实现订阅。
|
||||
5. 支持同时指定订阅源信息和分类信息,将输出满足分类选项的订阅源信息。考虑一例:通过 `/miniflux/subscription/feeds=1,archdaily&category=art,7`,则如果订阅源 ID 为 1 或者订阅源名称为 ArchDaily 确实在分类 `art` 或者分类 ID 为 7 的分类下,则输出该订阅源信息。
|
||||
|
||||
</Route>
|
||||
|
||||
### 获取订阅源内容
|
||||
|
||||
<Route author="emdoe" example="/miniflux/feeds=1&2&3/mark=read&limit=7&status=unread" path="/miniflux/:feeds/:parameters?" :paramsDesc="['订阅源 ID 或获取全部', '过滤及设置参数,多个请用 `&` 连接']" selfhost="1">
|
||||
|
||||
1. 支持获取全部内容:即可通过 `/miniflux/all` 或 `/miniflux/default` 等关键字获取全部订阅源下的内容。
|
||||
2. 支持通过订阅源的 ID 获取指定订阅源的订阅内容,订阅源 ID 请于`源`(快捷键 `g` `f`)所在的页面获取,每个分类(或订阅源)的网址即显示其 ID 信息。而格式上有如下选择:
|
||||
1. 支持 `/miniflux/feed=[feed_id]`,请将 `[feed_id]` 替换为实际订阅的订阅源 ID(注意不包含括号,即单纯为一个数字)
|
||||
2. 支持 `/miniflux/feed=[feed1_id]&feed=[feed2_id]` 或 `/miniflux/feeds=[feed1_id]&[feed2_id]` 订阅多个订阅源
|
||||
3. 以上还支持简写,即直接使用订阅源 ID:`/miniflux/[feed1_id]&[feed2_id]`
|
||||
3. 可进一步根据需要,指定参数:
|
||||
1. 支持 MiniFlux 提供的所有参数[选项](https://miniflux.app/docs/api.html#endpoint-get-feed-entries)。同其文档所注相同,多个过滤选项之间请用 `&` 连接。除去 `status` 外,多个相同的过滤选项应只会读取第一个。
|
||||
2. 特别的,本路由将默认指定排序方式为从新到旧排序(`direction=desc`)。
|
||||
3. 此外,本路由另支持额外的选项,包括:
|
||||
1. 利用 `feed_name` 参数控制标题格式,`feed_name=1` 即输出的每一篇标题会变为 `文章标题 | 订阅源名称`,默认为 `feed_name=0`,即只输出文章标题。
|
||||
2. 利用 `mark` 参数控制在 RSSHub 获取订阅内容之后的动作,包括维持不变(`unchanged`,默认),标记为已读(`read`),移除(`removed`),以及标记为未读(`unread`)。**注意,请不要将标记为已读简单的理解为是用于实现某种同步服务的**,这个功能更像是在辅助 MiniFlux 的自动清理功能。
|
||||
3. 未来可能会支持利用 `link` 参数控制输出内容的网址(支持这个功能需要 MiniFlux 未来提供相应的接口),设定为通过 MiniFlux 实体的分享功能生成的网址或原始内容的网址。请注意,如果利用 MiniFlux 的分享功能,这些文章内容均不会被自动清理。
|
||||
4. 可以通过 `limit` 参数控制输出内容的数量,默认输出全部符合其它条件的所有内容,但**建议用户设置该参数**。不过众所周知,RSSHub 提供全局参数 `?limit` 控制输出内容的数量,但如果用户存在设置错误,则可能出现一些奇怪的问题:不妨考虑用户的参数设定为 `miniflux/all/limit=5&status=unread&mark=read?limit=3`,那么则有两篇用户未读的文章自动被标记为已读,用户却很可能从未发现。为避免出现这样的情形,本路由对该参数的设定作出如下调整:
|
||||
1. 选择输出全部内容时,如果同时设定两个参数,则取设定数值较小的那个,否则按照用户设定控制输出内容的数量。
|
||||
2. 选择输出指定订阅源时,`&limit=` 参数控制**每一个**订阅源的输出数量,`?limit=` 控制**最终**输出内容的数量。不妨假设用户指定聚合两个订阅源,那么 `/miniflux/1&2/mark=read&limit=3` 与 `/miniflux/1&2/mark=read?limit=6` 的效果相同,除非
|
||||
3. 用户设定的 `&limit` 值小于 `?limit`,路由会以 `&limit` 设定为准:即最终输出内容数量 = `&limit` 参数值 \* 订阅源数量,或者如果
|
||||
4. 用户设定的 `&limit` 值大于 `?limit` 参数,又或者 `?limit` 参数并非是订阅源数量的整数倍,则路由将用 `?limit` 参数除去订阅源数量,并向下取整,每个订阅源将输出所得数字篇内容(如果得数为 0,则修改为每个订阅源输出 1 篇文章)。
|
||||
5. 考虑一例:`/miniflux/1&2&3/status=unread&limit=2?limit=5` 或 `/miniflux/1&2&3/status=unread&limit=2?limit=7`,最终的输出结果均为 `/miniflux/1&2&3/status=unread&limit=2`,等效于 `/miniflux/1&2&3/status=unread?limit=6`
|
||||
6. 考虑另一例:`/miniflux/1&2&3/status=unread?limit=2`,因为 2 / 3 ≈ 0.667 -> 0 -> 1,所以等效于 `/miniflux/1&2&3/status=unread?limit=3`,亦等效于 `/miniflux/1&2&3/status=unread&limit=1`
|
||||
5. 以上选项均与 MiniFlux 的 API 的行为保持一致,如果用户错误重复设定某参数,只读取第一个设定的值。
|
||||
|
||||
一例:如果用户希望输出全部订阅源中,最旧的两篇未读的文章,并希望在文章的标题栏显示订阅源的名字,同时希望输出内容在 MiniFlux 中被标为已读,那么路由设置应为:`/miniflux/all/direction=asc&status=unread&feed_name=1&mark=read&limit=2`
|
||||
|
||||
</Route>
|
||||
|
||||
## MITRE
|
||||
|
||||
### 全部出版物
|
||||
@@ -296,6 +363,18 @@ type 为 all 时,category 参数不支持 cost 和 free
|
||||
|
||||
<Route author="LogicJake" example="/kpmg/insights" path="/kpmg/insights" />
|
||||
|
||||
## 滴答清单
|
||||
|
||||
### 习惯打卡
|
||||
|
||||
::: warning 注意
|
||||
|
||||
需要账号密码,详情见部署文档部分 RSS 模块配置
|
||||
|
||||
:::
|
||||
|
||||
<Route author="DIYgod" example="/dida365/habit/checkins" path="/dida365/habit/checkins" selfhost="1"/>
|
||||
|
||||
## 东莞教研网
|
||||
|
||||
### 信息公开
|
||||
@@ -312,7 +391,7 @@ type 为 all 时,category 参数不支持 cost 和 free
|
||||
|
||||
### 福利资源 - met.red
|
||||
|
||||
<Route author="junfengP" example="/metred/fuli" path="/metred/fuli" />
|
||||
<Route author="junfengP queensferryme" example="/metred/fuli" path="/metred/fuli" />
|
||||
|
||||
## 古诗文网
|
||||
|
||||
@@ -675,6 +754,12 @@ type 为 all 时,category 参数不支持 cost 和 free
|
||||
|
||||
<Route author="kt286" example="/tprtc/news" path="/tprtc/news"/>
|
||||
|
||||
## 天眼查
|
||||
|
||||
### 热门搜索
|
||||
|
||||
<Route author="nczitzk" example="/tianyancha/hot" path="/tianyancha/hot" anticrawler="1"/>
|
||||
|
||||
## 无讼案例
|
||||
|
||||
### 案例
|
||||
@@ -757,7 +842,7 @@ type 为 all 时,category 参数不支持 cost 和 free
|
||||
|
||||
> 仅支持 IMAP 协议,邮件密码等设置见 [邮件设置](/install/#其他应用配置)
|
||||
|
||||
<Route author="kt286" example="/mail/imap/rss@rsshub.app" path="/mail/imap/:email" :paramsDesc="['邮箱账号']" />
|
||||
<Route author="kt286" example="/mail/imap/rss@rsshub.app" path="/mail/imap/:email" :paramsDesc="['邮箱账号']" selfhost="1"/>
|
||||
|
||||
## 源仓库
|
||||
|
||||
@@ -864,13 +949,3 @@ type 为 all 时,category 参数不支持 cost 和 free
|
||||
### はてな匿名ダイアリー - 人気記事アーカイブ
|
||||
|
||||
<Route author="masakichi" example="/hatena/anonymous_diary/archive" path="/hatena/anonymous_diary/archive"/>
|
||||
|
||||
### 4399 论坛
|
||||
|
||||
<Route author="DIYgod" example="/forum4399/mtag-83932" path="/forum4399/:mtag" :paramsDesc="['mtag,必选-论坛网址最后的mtag字段']"/>
|
||||
::: warning 注意
|
||||
|
||||
需要用户 cookie 值,详情见部署页面的配置模块。
|
||||
|
||||
:::
|
||||
</Route>
|
||||
|
||||
+114
-6
@@ -36,6 +36,16 @@ pageClass: routes
|
||||
|
||||
</Route>
|
||||
|
||||
## 8KCosplay
|
||||
|
||||
### 最新
|
||||
|
||||
<Route author="KotoriK" example="/8kcos/" path="/8kcos/"/>
|
||||
|
||||
### 分类
|
||||
|
||||
<Route author="KotoriK" example="/8kcos/cat/8kasianidol" path="/8kcos/cat/:cat*" :paramsDesc="['默认值为8kasianidol,将目录页面url中 /category/ 后面的部分填入。如:https://www.8kcosplay.com/category/8kchineseidol/%e9%a3%8e%e4%b9%8b%e9%a2%86%e5%9f%9f/ 对应的RSS页面为/8kcos/cat/8kchineseidol/%e9%a3%8e%e4%b9%8b%e9%a2%86%e5%9f%9f/。']"/>
|
||||
|
||||
## Bing 壁纸
|
||||
|
||||
### 每日壁纸
|
||||
@@ -56,6 +66,10 @@ pageClass: routes
|
||||
| ---- | --------- | ------ |
|
||||
| hot | recommend | recent |
|
||||
|
||||
## DailyArt 每日艺术
|
||||
|
||||
<Route author="zphw" example="/dailyart/zh" path="/dailyart/:language?" :paramsDesc="['语言,支持 en, zh, jp 等,默认为 en']" />
|
||||
|
||||
## Dilbert Comic Strip
|
||||
|
||||
<Route name="Daily Strip" author="Maecenas" example="/dilbert/strip" path="/dilbert/strip">
|
||||
@@ -64,6 +78,68 @@ pageClass: routes
|
||||
|
||||
</Route>
|
||||
|
||||
## Fantia
|
||||
|
||||
### 搜索
|
||||
|
||||
<Route author="nczitzk" example="/fantia/search/posts/all/daily" path="/fantia/search/:type?/:caty?/:peroid?/:order?/:rating?/:keyword?" :paramsDesc="['类型,见下表,默认为 posts','分类,见下表,也可在搜索页的 URL 中找到,默认为 すべてのクリエイター', '排行时段,见下表,填写该字段即返回排行榜,默认为空,即不排名' ,'排序,见下表,默认为 更新の新しい順', 'R18显示,见下表,默认为 すべて', '关键字,默认为空']">
|
||||
|
||||
类型
|
||||
|
||||
| クリエイター | 投稿 | 商品 | コミッション |
|
||||
| ------------ | ----- | -------- | ------------ |
|
||||
| fanclubs | posts | products | commissions |
|
||||
|
||||
分类
|
||||
|
||||
| 分类 | 分类名 |
|
||||
| ---------------------- | ---------- |
|
||||
| イラスト | illust |
|
||||
| 漫画 | comic |
|
||||
| コスプレ | cosplay |
|
||||
| YouTuber・配信者 | youtuber |
|
||||
| Vtuber | vtuber |
|
||||
| 音声作品・ASMR | voice |
|
||||
| 声優・歌い手 | voiceactor |
|
||||
| アイドル | idol |
|
||||
| アニメ・映像・写真 | anime |
|
||||
| 3D | 3d |
|
||||
| ゲーム制作 | game |
|
||||
| 音楽 | music |
|
||||
| 小説 | novel |
|
||||
| ドール | doll |
|
||||
| アート・デザイン | art |
|
||||
| プログラム | program |
|
||||
| 創作・ハンドメイド | handmade |
|
||||
| 歴史・評論・情報 | history |
|
||||
| 鉄道・旅行・ミリタリー | railroad |
|
||||
| ショップ | shop |
|
||||
| その他 | other |
|
||||
|
||||
排行时段
|
||||
|
||||
| デイリー | ウィークリー | マンスリー | 全期間 |
|
||||
| -------- | ------------ | ---------- | ------ |
|
||||
| daily | weekly | monthly | all |
|
||||
|
||||
排序
|
||||
|
||||
| 更新の新しい順 | 更新の古い順 | 投稿の新しい順 | 投稿の古い順 | お気に入り数順 |
|
||||
| -------------- | ------------ | -------------- | ------------ | -------------- |
|
||||
| updater | update_old | newer | create_old | popular |
|
||||
|
||||
R18 显示
|
||||
|
||||
| すべて | 一般のみ | R18 のみ |
|
||||
| ------ | -------- | -------- |
|
||||
| all | general | adult |
|
||||
|
||||
</Route>
|
||||
|
||||
### 用户投稿
|
||||
|
||||
<Route author="nczitzk" example="/fantia/user/3498" path="/fantia/user/:id" :paramsDesc="['用户 id,可在用户页 URL 中找到']" />
|
||||
|
||||
## GirlImg
|
||||
|
||||
### album
|
||||
@@ -260,13 +336,9 @@ pageClass: routes
|
||||
| ------ | ---------- | ---------- |
|
||||
| pic | top | top-4h |
|
||||
|
||||
### 妹子图
|
||||
### 首页
|
||||
|
||||
<Route author="kobemtl xyqfer" example="/jandan/ooxx" path="/jandan/:sub_model" :paramsDesc="['煎蛋板块名称']"/>
|
||||
|
||||
| 妹子图 | 妹子图热榜 |
|
||||
| ------ | ---------- |
|
||||
| ooxx | top-ooxx |
|
||||
<Route author="lonelykid" example="/jandan/article" path="/jandan/article"/>
|
||||
|
||||
## 绝对领域
|
||||
|
||||
@@ -278,6 +350,42 @@ pageClass: routes
|
||||
| ---- | ---- |
|
||||
| tuji | as |
|
||||
|
||||
## 酷 18
|
||||
|
||||
### 分站
|
||||
|
||||
<Route author="nczitzk" example="/cool18" path="/cool18/:id?" :paramsDesc="['分站,见下表,默认为禁忌书屋']">
|
||||
|
||||
| 性趣贴图 | 色色动漫 | 情色靓影 | 私房自拍 | 禁忌书屋 | 性趣论坛 | 情色无忌 | 成人影视 |
|
||||
| -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- |
|
||||
| bbs | bbs7 | bbs2 | bbs6 | bbs4 | bj | bbs5 | bbs3 |
|
||||
|
||||
::: tip 提示
|
||||
|
||||
留园网文档参见 [此处](https://docs.rsshub.app/new-media.html#liu-yuan-wang)
|
||||
|
||||
禁忌书屋文档参见 [此处](https://docs.rsshub.app/reading.html#jin-ji-shu-wu)
|
||||
|
||||
:::
|
||||
|
||||
</Route>
|
||||
|
||||
### 精华区
|
||||
|
||||
<Route author="nczitzk" example="/cool18/bbs/gold" path="/cool18/:id/gold" :paramsDesc="['分站,见上表,默认为禁忌书屋']"/>
|
||||
|
||||
### 搜索关键字
|
||||
|
||||
<Route author="nczitzk" example="/cool18/bbs/keywords/都市" path="/cool18/:id/keywords/:keyword?" :paramsDesc="['分站,见上表,默认为禁忌书屋', '关键字']"/>
|
||||
|
||||
### 妹子图
|
||||
|
||||
<Route author="kobemtl xyqfer" example="/jandan/ooxx" path="/jandan/:sub_model" :paramsDesc="['煎蛋板块名称']"/>
|
||||
|
||||
| 妹子图 | 妹子图热榜 |
|
||||
| ------ | ---------- |
|
||||
| ooxx | top-ooxx |
|
||||
|
||||
## 妹子图
|
||||
|
||||
### 首页(最新)
|
||||
|
||||
+131
-3
@@ -20,6 +20,12 @@ pageClass: routes
|
||||
|
||||
<Route author="nczitzk" example="/anki/changes" path="/anki/changes"/>
|
||||
|
||||
## AnyTXT
|
||||
|
||||
### Release Notes
|
||||
|
||||
<Route author="nczitzk" example="/anytxt/release-notes" path="/anytxt/release-notes"/>
|
||||
|
||||
## Apkpure
|
||||
|
||||
### Versions
|
||||
@@ -54,6 +60,36 @@ pageClass: routes
|
||||
|
||||
<Route author="HenryQW" example="/aptonic/action" path="/aptonic/action/:untested?" :paramsDesc="['填写任意值,将会同时包括非官方的 Dropzone 动作']"/>
|
||||
|
||||
## Bandisoft
|
||||
|
||||
### 更新记录
|
||||
|
||||
<Route author="nczitzk" example="/bandisoft/bandizip" path="/bandisoft/:id?/:lang?" :paramsDesc="['软件 id,见下表,默认为 Bandizip', '语言,见下表,默认为英语']">
|
||||
|
||||
软件 id
|
||||
|
||||
| Bandizip (Win) | Bandizip (Mac) | Honeycam | Honeyview |
|
||||
| -------------- | -------------- | -------- | --------- |
|
||||
| bandizip | bandizip.mac | honeycam | honeyview |
|
||||
|
||||
语言
|
||||
|
||||
| English | 中文 (简体) | 中文 (繁體) | 日本語 | Русский | Español | Français | Deutsch | Italiano | Slovenčina | Українська | Беларуская | Dansk | Polski | Português Brasileiro | Čeština | Nederlands | Slovenščina | Türkçe | ภาษาไทย | 한국어 |
|
||||
| ------- | ----------- | ----------- | ------ | ------- | ------- | -------- | ------- | -------- | ---------- | ---------- | ---------- | ----- | ------ | -------------------- | ------- | ---------- | ----------- | ------ | ------- | ------ |
|
||||
| en | cn | tw | jp | ru | es | fr | de | it | sk | uk | be | da | pl | br | cs | nl | sl | tr | th | kr |
|
||||
|
||||
</Route>
|
||||
|
||||
## Bilibili
|
||||
|
||||
### 更新情报
|
||||
|
||||
<Route author="nczitzk" example="/bilibili/app/android" path="/bilibili/app/:id?" :paramsDesc="['客户端 id,见下表,默认为安卓版']">
|
||||
|
||||
| 安卓版 | iPhone 版 | iPad HD 版 | UWP 版 | TV 版 |
|
||||
| ------- | --------- | ---------- | ------ | -------------- |
|
||||
| android | iphone | ipad | win | android_tv_yst |
|
||||
|
||||
## Bugly SDK
|
||||
|
||||
### 更新日志
|
||||
@@ -104,6 +140,12 @@ pageClass: routes
|
||||
|
||||
</Route>
|
||||
|
||||
## Ditto clipboard manager
|
||||
|
||||
### Changes
|
||||
|
||||
<Route author="nczitzk" example="/ditto/changes" path="/ditto/changes/:type?" :paramsDesc="['类型,可选 `beta`']"/>
|
||||
|
||||
## Docker Hub
|
||||
|
||||
### 镜像有新 Build
|
||||
@@ -116,6 +158,12 @@ pageClass: routes
|
||||
|
||||
:::
|
||||
|
||||
## Everything
|
||||
|
||||
### Changes
|
||||
|
||||
<Route author="nczitzk" example="/everything/changes" path="/everything/changes"/>
|
||||
|
||||
## F-Droid
|
||||
|
||||
### App 更新
|
||||
@@ -156,12 +204,26 @@ pageClass: routes
|
||||
|
||||
<Route author="Jeason0228" example="/ipsw/index/ipsws/iPhone11,8" path="/ipsw/index/:ptype/:pname/" :paramsDesc="['填写ipsws或otas,得到不同版本的固件','产品名, `http://rsshub.app/ipsw/index/ipsws/iPod`如填写iPad则关注iPad整个系列(ptype选填为ipsws).`http://rsshub.app/ipsw/index/ipsws/iPhone11,8`如果填写具体的iPhone11,8则关注这个机型的ipsws固件信息']"/>
|
||||
|
||||
## ManicTime
|
||||
|
||||
<Route author="nczitzk" example="/manictime/releases" path="/manictime/releases"/>
|
||||
|
||||
## Mathpix
|
||||
|
||||
<Route author="nczitzk" example="/mathpix/blog" path="/mathpix/blog"/>
|
||||
|
||||
## Microsoft Edge
|
||||
|
||||
### 外接程序更新
|
||||
|
||||
<Route author="hoilc" example="/edge/addon/gangkeiaobmjcjokiofpkfpcobpbmnln" path="/edge/addon/:crxid" :paramsDesc="['扩展 id, 可在扩展页 URL 中找到']" />
|
||||
|
||||
## Microsoft Store
|
||||
|
||||
### Updates
|
||||
|
||||
<Route author="hellodword" example="/microsoft-store/updates/9WZDNCRFHVN5/CN" path="/microsoft-store/updates/:productid/:market?" :paramsDesc="['在 Store 中点击 `分享` - `复制链接` 即可获得', '默认为 `CN`']" />
|
||||
|
||||
## Minecraft
|
||||
|
||||
见 [#minecraft](/game.html#minecraft)
|
||||
@@ -196,6 +258,12 @@ pageClass: routes
|
||||
|
||||
<Route author="cielpy" example="/nvidia/webdriverupdate" path="/nvidia/webdriverupdate"/>
|
||||
|
||||
## OneNote Gem Add-Ins
|
||||
|
||||
### Release History
|
||||
|
||||
<Route author="nczitzk" example="/onenotegem/release" path="/onenotegem/release"/>
|
||||
|
||||
## PlayStation
|
||||
|
||||
### PlayStation 4 系统更新纪录
|
||||
@@ -214,12 +282,30 @@ pageClass: routes
|
||||
|
||||
</Route>
|
||||
|
||||
## QTTabBar
|
||||
|
||||
### Change Log
|
||||
|
||||
<Route author="nczitzk" example="/qttabbar/change-log" path="/qttabbar/change-log"/>
|
||||
|
||||
## Quicker
|
||||
|
||||
### 版本更新
|
||||
|
||||
<Route author="Cesaryuan" example="/quicker/update" path="/quicker/update"/>
|
||||
|
||||
## RescueTime
|
||||
|
||||
### Release Notes
|
||||
|
||||
<Route author="nczitzk" example="/rescuetime/release-notes" path="/rescuetime/release-notes/:os?" :paramsDesc="['OS id,见下表']">
|
||||
|
||||
| Mac OS | Windows |
|
||||
| ------ | ------- |
|
||||
| mac | windows |
|
||||
|
||||
</Route>
|
||||
|
||||
## RSSHub
|
||||
|
||||
### 有新路由啦
|
||||
@@ -236,6 +322,16 @@ pageClass: routes
|
||||
|
||||
<Route author="nczitzk" example="/sesame/release_notes" path="/sesame/release_notes"/>
|
||||
|
||||
## simpread
|
||||
|
||||
### 消息通知
|
||||
|
||||
<Route author="zytomorrow" example="/simpread/notice" path="/simpread/notice"/>
|
||||
|
||||
### 更新日志
|
||||
|
||||
<Route author="zytomorrow" example="/simpread/changelog" path="/simpread/changelog"/>
|
||||
|
||||
## sketch.com
|
||||
|
||||
### beta 更新
|
||||
@@ -252,6 +348,12 @@ pageClass: routes
|
||||
|
||||
<Route author="garywill" example="/thunderbird/release" path="/thunderbird/release"/>
|
||||
|
||||
## Total Commander
|
||||
|
||||
### What's New
|
||||
|
||||
<Route author="nczitzk" example="/totalcommander/whatsnew" path="/totalcommander/whatsnew"/>
|
||||
|
||||
## Typora
|
||||
|
||||
### Changelog
|
||||
@@ -280,6 +382,12 @@ pageClass: routes
|
||||
|
||||
<Route author="nczitzk" example="/xposed/module/com.ext.star.wars" path="/xposed/module/:mod" :paramsDesc="['模块包名, 模块页中的 Package 字段']"/>
|
||||
|
||||
## XYplorer
|
||||
|
||||
### What's New
|
||||
|
||||
<Route author="nczitzk" example="/xyplorer/whatsnew" path="/xyplorer/whatsnew"/>
|
||||
|
||||
## 怪物猎人世界
|
||||
|
||||
### 更新
|
||||
@@ -304,11 +412,11 @@ pageClass: routes
|
||||
|
||||
<Route author="zytomorrow" example="/pgyer/:app" path="/pgyer/kz-test" :paramsDesc="['app为下载页最后的路径']" radar="1" rssbud="1"/>
|
||||
|
||||
## 腾讯柠檬 Lab
|
||||
## 特斯拉系统更新
|
||||
|
||||
### 柠檬精选 Mac Apps
|
||||
### 版本详细信息
|
||||
|
||||
<Route author="HenryQW" example="/tencent/lemon" path="/tencent/lemon"/>
|
||||
<Route author="mrbruce516" example="/tesla" path="/tesla/update"/>
|
||||
|
||||
## 腾讯云移动直播 SDK
|
||||
|
||||
@@ -321,3 +429,23 @@ pageClass: routes
|
||||
### 金米奖
|
||||
|
||||
<Route author="nczitzk" example="/mi/golden" path="/mi/golden"/>
|
||||
|
||||
## 猿料
|
||||
|
||||
### 标签
|
||||
|
||||
<Route author="nczitzk" example="/yuanliao" path="/yuanliao/:tag/:sort?" :paramsDesc="['标签,见下表,默认为 `utools`', '排序,见下表,默认为最新回复']">
|
||||
|
||||
标签
|
||||
|
||||
| uTools | 插件发布 |
|
||||
| ------ | -------- |
|
||||
| utools | plugins |
|
||||
|
||||
排序
|
||||
|
||||
| 最新回复 | 热门回复 | 新鲜出炉 | 陈年旧贴 |
|
||||
| -------- | ------------- | ---------- | --------- |
|
||||
| | -commentCount | -createdAt | createdAt |
|
||||
|
||||
</Route>
|
||||
|
||||
+37
-10
@@ -4,6 +4,12 @@ pageClass: routes
|
||||
|
||||
# 编程
|
||||
|
||||
## ACM
|
||||
|
||||
### 图灵奖获得者
|
||||
|
||||
<Route author="nczitzk" example="/acm/amturingaward" path="/acm/amturingaward"/>
|
||||
|
||||
## AI 研习社
|
||||
|
||||
### 首页
|
||||
@@ -28,7 +34,7 @@ pageClass: routes
|
||||
|
||||
### TheBatch 周报
|
||||
|
||||
<Route author="nczitzk" example="/deeplearning/thebatch" path="/deeplearning/thebatch"/>
|
||||
<Route author="nczitzk" example="/deeplearningai/thebatch" path="/deeplearningai/thebatch"/>
|
||||
|
||||
## Dockone
|
||||
|
||||
@@ -87,6 +93,20 @@ GitHub 官方也提供了一些 RSS:
|
||||
|
||||
<Route author="DIYgod" example="/github/trending/daily/javascript" path="/github/trending/:since/:language?" :paramsDesc="['时间跨度, 可在 [Trending 页](https://github.com/trending/javascript?since=monthly) URL 中找到, 可选 daily weekly monthly', '语言, 可在 [Trending 页](https://github.com/trending/javascript?since=monthly) URL 中找到']" radar="1" rssbud="1"/>
|
||||
|
||||
### Topics
|
||||
|
||||
<Route author="queensferryme" example="/github/topics/framework" path="/github/topics/:name/:qs?" :paramsDesc="['名称,可以在相关 [Topics 页](https://github.com/topics/framework) URL 中找到', '过滤规则,形如 `l=php&o=desc&s=stars`,详见下表']" radar="1" rssbud="1">
|
||||
|
||||
| 参数名 | 描述 | 可选值 |
|
||||
| ------ | -------- | ----------------------------------------------------------------------------------------- |
|
||||
| `l` | 编程语言 | 例如 `php`,可以在相关 [Topics 页](https://github.com/topics/framework?l=php) URL 中找到 |
|
||||
| `o` | 排序方法 | `asc`(升序)<br>`desc`(降序) |
|
||||
| `s` | 排序标准 | `stars`(按 star 数量排序)<br>`forks`(按 fork 数量排序)<br>`updated`(按更新日期排序) |
|
||||
|
||||
例如 `/github/topics/framework/l=php&o=desc&s=stars` 会生成对应[此页面](https://github.com/topics/framework?l=php&o=desc&s=stars)的 RSS。
|
||||
|
||||
</Route>
|
||||
|
||||
### 仓库 Issues
|
||||
|
||||
<Route author="HenryQW AndreyMZ" example="/github/issue/DIYgod/RSSHub/open/RSS%20wanted" path="/github/issue/:user/:repo/:state?/:labels?" :paramsDesc="['用户名', '仓库名', 'issue 状态,可选`open`,`closed`或`all`,默认为`open`', '标签列表,以逗号分隔']" radar="1" rssbud="1"/>
|
||||
@@ -472,19 +492,25 @@ GitHub 官方也提供了一些 RSS:
|
||||
|
||||
### 沸点
|
||||
|
||||
<Route author="xyqfer" example="/juejin/pins" path="/juejin/pins"/>
|
||||
<Route author="xyqfer laampui" example="/juejin/pins/6824710202487472141" :paramsDesc="['默认为 recommend,见下表']" path="/juejin/pins/:type?">
|
||||
|
||||
| 推荐 | 热门 | 上班摸鱼 | 内推招聘 | 一图胜千言 | 今天学到了 | 每天一道算法题 | 开发工具推荐 | 树洞一下 |
|
||||
| --------- | ---- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- |
|
||||
| recommend | hot | 6824710203301167112 | 6819970850532360206 | 6824710202487472141 | 6824710202562969614 | 6824710202378436621 | 6824710202000932877 | 6824710203112423437 |
|
||||
|
||||
</Route>
|
||||
|
||||
### 专栏
|
||||
|
||||
<Route author="Maecenas" example="/juejin/posts/56852b2460b2a099cdc1d133" path="/juejin/posts/:id" :paramsDesc="['用户 id, 可在用户页 URL 中找到']" radar="1" rssbud="1"/>
|
||||
<Route author="Maecenas" example="/juejin/posts/3051900006845944" path="/juejin/posts/:id" :paramsDesc="['用户 id, 可在用户页 URL 中找到']" radar="1" rssbud="1"/>
|
||||
|
||||
### 收藏集
|
||||
|
||||
<Route author="isQ" example="/juejin/collections/5791879979bc440066171bdb" path="/juejin/collections/:userId" :paramsDesc="['用户唯一标志符, 在浏览器地址栏URL中能够找到']"/>
|
||||
<Route author="isQ" example="/juejin/collections/1697301682482439" path="/juejin/collections/:userId" :paramsDesc="['用户唯一标志符, 在浏览器地址栏URL中能够找到']"/>
|
||||
|
||||
### 单个收藏夹
|
||||
|
||||
<Route author="isQ" example="/juejin/collection/5cbf079df265da03462270f9" path="/juejin/collection/:collectionId" :paramsDesc="['收藏夹唯一标志符, 在浏览器地址栏URL中能够找到']"/>
|
||||
<Route author="isQ" example="/juejin/collection/6845243180586123271" path="/juejin/collection/:collectionId" :paramsDesc="['收藏夹唯一标志符, 在浏览器地址栏URL中能够找到']"/>
|
||||
|
||||
### 分享
|
||||
|
||||
@@ -653,6 +679,12 @@ GitHub 官方也提供了一些 RSS:
|
||||
|
||||
<Route author="tonghs" example="/manong-weekly" path="/manong-weekly" />
|
||||
|
||||
## 美团开放平台
|
||||
|
||||
### 美团开放平台公告
|
||||
|
||||
<Route author="youzipi" example="/meituan/open/announce" path="/meituan/open/announce"/>
|
||||
|
||||
## 平安银河实验室
|
||||
|
||||
### posts
|
||||
@@ -660,11 +692,6 @@ GitHub 官方也提供了一些 RSS:
|
||||
<Route author="hellodword" example="/galaxylab" path="/galaxylab">
|
||||
</Route>
|
||||
|
||||
## 前端技术文章
|
||||
|
||||
<Route author="laampui" example="/front-end-rss" path="/front-end-rss" :paramsDesc="['分类']">
|
||||
</Route>
|
||||
|
||||
## 前端艺术家 && 飞冰早报
|
||||
|
||||
### 列表
|
||||
|
||||
+73
-1
@@ -10,12 +10,59 @@ pageClass: routes
|
||||
|
||||
<Route author="HenryQW" example="/allpoetry/newest" path="/allpoetry/:order?" :paramsDesc="['排序方式, `best` 或 `newest`, 缺省 `best`']"/>
|
||||
|
||||
## Kindle Unlimited
|
||||
|
||||
### 会员限时免费读书单
|
||||
|
||||
<Route author="nczitzk" example="/amazon/ku/this" path="/amazon/ku/:type?" :paramsDesc="['书单类型,见下表']">
|
||||
|
||||
| 本月书单 | 好评返场 | 次月预告 |
|
||||
| -------- | -------- | -------- |
|
||||
| this | back | next |
|
||||
|
||||
</Route>
|
||||
|
||||
## Mobilism
|
||||
|
||||
### eBook Releases
|
||||
|
||||
<Route author="nczitzk" example="/mobilism/release" path="/mobilism/release" />
|
||||
|
||||
## SoBooks
|
||||
|
||||
### 首页
|
||||
|
||||
<Route author="nczitzk" example="/sobooks" path="/sobooks/:category?" :paramsDesc="['分类, 见下表']">
|
||||
|
||||
| 分类 | 分类名 |
|
||||
| -------- | ---------------- |
|
||||
| 小说文学 | xiaoshuowenxue |
|
||||
| 历史传记 | lishizhuanji |
|
||||
| 人文社科 | renwensheke |
|
||||
| 励志成功 | lizhichenggong |
|
||||
| 经济管理 | jingjiguanli |
|
||||
| 学习教育 | xuexijiaoyu |
|
||||
| 生活时尚 | shenghuoshishang |
|
||||
| 英文原版 | yingwenyuanban |
|
||||
|
||||
</Route>
|
||||
|
||||
### 标签
|
||||
|
||||
<Route author="nczitzk" example="/sobooks/tag/小说" path="/sobooks/tag/:id?" :paramsDesc="['标签, 见下表,默认为小说']">
|
||||
|
||||
热门标签
|
||||
|
||||
| 小说 | 文学 | 历史 | 日本 | 科普 | 管理 | 推理 | 社会 | 经济 |
|
||||
| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ------ |
|
||||
| 传记 | 美国 | 悬疑 | 哲学 | 心理 | 商业 | 金融 | 思维 | 经典 |
|
||||
| 随笔 | 投资 | 文化 | 励志 | 科幻 | 成长 | 中国 | 英国 | 政治 |
|
||||
| 漫画 | 纪实 | 艺术 | 科学 | 生活 | 职场 | 散文 | 法国 | 互联网 |
|
||||
| 营销 | 奇幻 | 二战 | 股票 | 女性 | 德国 | 学习 | 战争 | 创业 |
|
||||
| 绘本 | 名著 | 爱情 | 军事 | 理财 | 教育 | 世界 | 人物 | 沟通 |
|
||||
|
||||
</Route>
|
||||
|
||||
## UU 看书
|
||||
|
||||
### 小说更新
|
||||
@@ -143,7 +190,32 @@ count 的取值范围为 1-12,为防止请求次数过多,推荐设置为 5
|
||||
|
||||
<Route author="junbaor" example="/enclavebooks/collection/103702" path="/enclavebooks/collection/:uid" :paramsDesc="['用户ID, 自行抓包寻找']"/>
|
||||
|
||||
## 观止(每日一文)
|
||||
## 归档
|
||||
|
||||
<Route author="nczitzk" example="/sobooks/date/2020-11" path="/sobooks/date/:date?" :paramsDesc="['日期,见例子,默认为当前年月']"/>
|
||||
|
||||
## 禁忌书屋
|
||||
|
||||
### 首页
|
||||
|
||||
<Route author="nczitzk" example="/cool18/bbs4" path="/cool18/bbs4"/>
|
||||
|
||||
### 精华区
|
||||
|
||||
<Route author="nczitzk" example="/cool18/bbs4/gold" path="/cool18/bbs4/gold"/>
|
||||
|
||||
### 栏目分类
|
||||
|
||||
<Route author="nczitzk" example="/cool18/bbs4/type/都市" path="/cool18/bbs4/type/:keyword?" :paramsDesc="['分类,见下表,默认为首页']">
|
||||
|
||||
| 都市 | 校园 | 乡野 | 古风 | 异国 | 玄幻 | 红杏 | 伦理 | 浪漫 | 暴虐 | 摄心 | 其他 |
|
||||
| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
|
||||
|
||||
</Route>
|
||||
|
||||
### 搜索关键字
|
||||
|
||||
<Route author="nczitzk" example="/cool18/bbs4/keywords/都市" path="/cool18/bbs4/keywords/:keyword?" :paramsDesc="['关键字']"/>
|
||||
|
||||
## 孔夫子旧书网
|
||||
|
||||
|
||||
+38
-1
@@ -36,6 +36,25 @@ pageClass: routes
|
||||
|
||||
</Route>
|
||||
|
||||
## booth.pm
|
||||
|
||||
### 店铺
|
||||
|
||||
<Route author="KTachibanaM" example="/booth.pm/shop/annn-boc0123" path="/booth.pm/shop/:subdomain" :paramsDesc="['店铺子域名']" />
|
||||
|
||||
## Craigslist
|
||||
|
||||
### 商品搜索
|
||||
|
||||
<Route author="lxiange" example="/craigslist/sfbay/sso?query=folding+bike&sort=rel" path="/craigslist/:location/:type?" :paramsDesc="['位置,即Craigslist的子域,如sfbay', '搜索类型,如sso']"/>
|
||||
|
||||
> 由于 Craigslist 取消了 RSS 订阅搜索功能,因此用 RSSHub 来实现了类似效果。
|
||||
> 一个完整原始搜索会像这样:
|
||||
> <https://sfbay.craigslist.org/search/sso?query=folding+bike&sort=rel>
|
||||
>
|
||||
> /search/xxx 后跟的 "xxx" 为搜索类型,直接参考原始请求即可。
|
||||
> query string 是实际的搜索内容。
|
||||
|
||||
## Furstar
|
||||
|
||||
### 最新售卖角色列表
|
||||
@@ -153,6 +172,18 @@ For instance, in <https://www.leboncoin.fr/recherche/?**category=10&locations=Pa
|
||||
|
||||
<Route author="sanmmm" example="/liwushuo/index" path="/liwushuo/index"/>
|
||||
|
||||
## 麦当劳
|
||||
|
||||
### 麦当劳活动资讯
|
||||
|
||||
<Route author="huyyi" example="/mcdonalds/sales+event" path="/mcdonalds/:category" :paramsDesc="['分类名(可用+连接多个分类)']">
|
||||
|
||||
| 全部分类 | 社会责任 | 人员品牌 | 产品故事 | 优惠 | 品牌文化 | 活动速报 |
|
||||
| --------- | -------------- | -------- | -------- | ----- | -------- | -------- |
|
||||
| news_list | responsibility | brand | product | sales | culture | event |
|
||||
|
||||
</Route>
|
||||
|
||||
## 缺书网
|
||||
|
||||
### 促销
|
||||
@@ -301,7 +332,13 @@ For instance, in <https://www.leboncoin.fr/recherche/?**category=10&locations=Pa
|
||||
|
||||
### 小米有品每日上新
|
||||
|
||||
<Route author="xyqfer DIYgod" example="/mi/youpin/new" path="/mi/youpin/new"/>
|
||||
<Route author="xyqfer DIYgod" example="/mi/youpin/new" path="/mi/youpin/new/:sort?" :paramsDesc="['排序,见下表']">
|
||||
|
||||
| 个性化排序 | 按销量从高到低 | 按好评从高到低 | 按上新时间从近到远 |
|
||||
| ---------- | -------------- | -------------- | ------------------ |
|
||||
| 0 | 1 | 2 | 3 |
|
||||
|
||||
</Route>
|
||||
|
||||
## 宜家 IKEA
|
||||
|
||||
|
||||
+203
-27
@@ -24,15 +24,15 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性
|
||||
|
||||
### 用户追番列表
|
||||
|
||||
<Route author="wdssmq" example="/bilibili/user/bangumi/208259" path="/bilibili/user/bangumi/:uid/:type?" :paramsDesc="['用户 id','1为番,2为剧,留空为1']"/>
|
||||
<Route author="wdssmq" example="/bilibili/user/bangumi/208259" path="/bilibili/user/bangumi/:uid/:type?" :paramsDesc="['用户 id','1为番,2为剧,留空为1']" anticrawler="1" radar="1" rssbud="1"/>
|
||||
|
||||
### UP 主投稿
|
||||
|
||||
<Route author="DIYgod" example="/bilibili/user/video/2267573" path="/bilibili/user/video/:uid/:disableEmbed?" :paramsDesc="['用户 id, 可在 UP 主主页中找到', '默认为开启内嵌视频, 任意值为关闭']" radar="1" rssbud="1"/>
|
||||
<Route author="DIYgod" example="/bilibili/user/video/2267573" path="/bilibili/user/video/:uid/:disableEmbed?" :paramsDesc="['用户 id, 可在 UP 主主页中找到', '默认为开启内嵌视频, 任意值为关闭']" anticrawler="1" radar="1" rssbud="1"/>
|
||||
|
||||
### UP 主专栏
|
||||
|
||||
<Route author="lengthmin" example="/bilibili/user/article/334958638" path="/bilibili/user/article/:uid" :paramsDesc="['用户 id, 可在 UP 主主页中找到']"/>
|
||||
<Route author="lengthmin" example="/bilibili/user/article/334958638" path="/bilibili/user/article/:uid" :paramsDesc="['用户 id, 可在 UP 主主页中找到']" anticrawler="1" radar="1" rssbud="1"/>
|
||||
|
||||
### UP 主动态
|
||||
|
||||
@@ -40,11 +40,11 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性
|
||||
|
||||
### UP 主频道
|
||||
|
||||
<Route author="HenryQW" example="/bilibili/user/channel/142821407/49017" path="/bilibili/user/channel/:uid/:cid/:disableEmbed?" :paramsDesc="['用户 id, 可在 UP 主主页中找到', '频道 id, 可在频道的 URL 中找到', '默认为开启内嵌视频, 任意值为关闭']"/>
|
||||
<Route author="HenryQW" example="/bilibili/user/channel/142821407/49017" path="/bilibili/user/channel/:uid/:cid/:disableEmbed?" :paramsDesc="['用户 id, 可在 UP 主主页中找到', '频道 id, 可在频道的 URL 中找到', '默认为开启内嵌视频, 任意值为关闭']" anticrawler="1" radar="1" rssbud="1"/>
|
||||
|
||||
### UP 主默认收藏夹
|
||||
|
||||
<Route author="DIYgod" example="/bilibili/user/fav/2267573" path="/bilibili/user/fav/:uid/:disableEmbed?" :paramsDesc="['用户 id, 可在 UP 主主页中找到', '默认为开启内嵌视频, 任意值为关闭']"/>
|
||||
<Route author="DIYgod" example="/bilibili/user/fav/2267573" path="/bilibili/user/fav/:uid/:disableEmbed?" :paramsDesc="['用户 id, 可在 UP 主主页中找到', '默认为开启内嵌视频, 任意值为关闭']" radar="1" rssbud="1"/>
|
||||
|
||||
### UP 主非默认收藏夹
|
||||
|
||||
@@ -52,15 +52,15 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性
|
||||
|
||||
### UP 主投币视频
|
||||
|
||||
<Route author="DIYgod" example="/bilibili/user/coin/208259" path="/bilibili/user/coin/:uid/:disableEmbed?" :paramsDesc="['用户 id, 可在 UP 主主页中找到', '默认为开启内嵌视频, 任意值为关闭']"/>
|
||||
<Route author="DIYgod" example="/bilibili/user/coin/208259" path="/bilibili/user/coin/:uid/:disableEmbed?" :paramsDesc="['用户 id, 可在 UP 主主页中找到', '默认为开启内嵌视频, 任意值为关闭']" anticrawler="1" radar="1" rssbud="1"/>
|
||||
|
||||
### UP 主粉丝
|
||||
|
||||
<Route author="Qixingchen" example="/bilibili/user/followers/2267573" path="/bilibili/user/followers/:uid" :paramsDesc="['用户 id, 可在 UP 主主页中找到']"/>
|
||||
<Route author="Qixingchen" example="/bilibili/user/followers/2267573" path="/bilibili/user/followers/:uid" :paramsDesc="['用户 id, 可在 UP 主主页中找到']" radar="1" rssbud="1"/>
|
||||
|
||||
### UP 主关注用户
|
||||
|
||||
<Route author="Qixingchen" example="/bilibili/user/followings/2267573" path="/bilibili/user/followings/:uid" :paramsDesc="['用户 id, 可在 UP 主主页中找到']"/>
|
||||
<Route author="Qixingchen" example="/bilibili/user/followings/2267573" path="/bilibili/user/followings/:uid" :paramsDesc="['用户 id, 可在 UP 主主页中找到']" radar="1" rssbud="1"/>
|
||||
|
||||
### 分区视频
|
||||
|
||||
@@ -208,7 +208,8 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性
|
||||
|
||||
### 用户关注动态
|
||||
|
||||
<Route author="TigerWolfDen" example="/bilibili/followings/dynamic/109937383" path="/bilibili/followings/dynamic/:uid/:disableEmbed?" :paramsDesc="['用户 id', '默认为开启内嵌视频, 任意值为关闭']">
|
||||
<Route author="TigerWolfDen" example="/bilibili/followings/dynamic/109937383" path="/bilibili/followings/dynamic/:uid/:disableEmbed?" :paramsDesc="['用户 id', '默认为开启内嵌视频, 任意值为关闭']" selfhost="1">
|
||||
|
||||
::: warning 注意
|
||||
|
||||
用户动态需要 b 站登录后的 Cookie 值,所以只能自建,详情见部署页面的配置模块。
|
||||
@@ -218,7 +219,7 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性
|
||||
|
||||
### 用户关注视频动态
|
||||
|
||||
<Route author="LogicJake" example="/bilibili/followings/video/2267573" path="/bilibili/followings/video/:uid/:disableEmbed?" :paramsDesc="['用户 id', '默认为开启内嵌视频, 任意值为关闭']">
|
||||
<Route author="LogicJake" example="/bilibili/followings/video/2267573" path="/bilibili/followings/video/:uid/:disableEmbed?" :paramsDesc="['用户 id', '默认为开启内嵌视频, 任意值为关闭']" selfhost="1">
|
||||
::: warning 注意
|
||||
|
||||
用户动态需要 b 站登录后的 Cookie 值,所以只能自建,详情见部署页面的配置模块。
|
||||
@@ -228,7 +229,7 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性
|
||||
|
||||
### 用户关注专栏
|
||||
|
||||
<Route author="woshiluo" example="/bilibili/followings/article/99800931" path="/bilibili/followings/article/:uid" :paramsdesc="['用户 id']">
|
||||
<Route author="woshiluo" example="/bilibili/followings/article/99800931" path="/bilibili/followings/article/:uid" :paramsdesc="['用户 id']" selfhost="1">
|
||||
::: warning 注意
|
||||
|
||||
用户动态需要 b 站登录后的 Cookie 值,所以只能自建,详情见部署页面的配置模块。
|
||||
@@ -320,12 +321,36 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性
|
||||
|
||||
<Route author="maple3142" example="/facebook/page/SonetPCR" path="/facebook/page/:id" :paramsDesc="['專頁 id']" anticrawler="1"/>
|
||||
|
||||
## Gab
|
||||
|
||||
### 用戶時間線
|
||||
|
||||
<Route author="zphw" example="/gab/user/realdonaldtrump" path="/gab/user/:username" :paramsDesc="['用戶名']" />
|
||||
|
||||
### 熱門
|
||||
|
||||
<Route author="zphw" example="/gab/popular/hot" path="/gab/popular/:sort?" :paramsDesc="['排序方式, `hot` 為 Hot Posts, `top` 為 Top Posts。默認為 hot']" />
|
||||
|
||||
## iCity
|
||||
|
||||
### 用户动态
|
||||
|
||||
<Route author="nczitzk" example="/icity/sai" path="/icity/:id" :paramsDesc="['用户 id']"/>
|
||||
|
||||
## Instagram
|
||||
|
||||
::: warning 注意
|
||||
|
||||
由于 Instagram API 限制,必须在服务器上设置你的用户名和密码。暂不支持两步验证。步骤见部署指南。
|
||||
|
||||
如需无登录的 feed,请用 Picuki。
|
||||
|
||||
:::
|
||||
|
||||
### 用户
|
||||
|
||||
<Route author="oppilate DIYgod" example="/instagram/user/stefaniejoosten" path="/instagram/:category/:key" :paramsDesc="['时间线类别,目前仅支持用户时间线','针对该类别的索引,例如用户时间线里是用户名或用户 ID']" radar="1" anticrawler="1"/>
|
||||
|
||||
## Keep
|
||||
|
||||
### 运动日记
|
||||
@@ -423,7 +448,7 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性
|
||||
|
||||
### 关注的新作品
|
||||
|
||||
<Route author="ClarkeCheng" example="/pixiv/user/illustfollows" path="/pixiv/user/illustfollows" radar="1" rssbud="1"/>
|
||||
<Route author="ClarkeCheng" example="/pixiv/user/illustfollows" path="/pixiv/user/illustfollows" radar="1" rssbud="1" selfhost="1"/>
|
||||
::: warning 注意
|
||||
|
||||
因为每个人关注的画师不同,所以只能自建。请不要将画师设为 “悄悄关注”,这样子画师的作品就不会出现在订阅里了。
|
||||
@@ -451,6 +476,12 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性
|
||||
|
||||
<Route author="BugWriter2" example="/soul/posts/hot" path="/soul/posts/hot" radar="1" rssbud="1"></Route>
|
||||
|
||||
## Tape 小纸条
|
||||
|
||||
### 提问箱新回答
|
||||
|
||||
<Route author="AgFlore" example="/tapechat/questionbox/TOAH7BBH" path="/tapechat/questionbox/:sharecode/:pagesize?" :paramsDesc="['提问箱 ID', '查看条数(默认为 20)']" />
|
||||
|
||||
## Telegram
|
||||
|
||||
### 频道
|
||||
@@ -481,13 +512,44 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性
|
||||
|
||||
:::
|
||||
|
||||
对于推文内容,在 `routeParams` 参数中以 query string 格式指定选项,可以控制额外的功能
|
||||
|
||||
| 键 | 含义 | 接受的值 | 默认值 |
|
||||
| ---------------------------- | ---------------------------------------------------------------------------- | -------------- | ---------------------------------------- |
|
||||
| readable | 是否开启细节排版可读性优化 | 0/1/true/false | false |
|
||||
| authorNameBold | 是否加粗作者名字 | 0/1/true/false | false |
|
||||
| showAuthorInTitle | 是否在标题处显示作者 | 0/1/true/false | false(`/twitter/followings` 中为 true) |
|
||||
| showAuthorInDesc | 是否在正文处显示作者 | 0/1/true/false | false(`/twitter/followings` 中为 true) |
|
||||
| showQuotedAuthorAvatarInDesc | 是否在正文处显示被转推的推文的作者头像(若阅读器会提取正文图片,不建议开启) | 0/1/true/false | false |
|
||||
| showAuthorAvatarInDesc | 是否在正文处显示作者头像(若阅读器会提取正文图片,不建议开启) | 0/1/true/false | false |
|
||||
| showEmojiForRetweetAndReply | 显示 “🔁” 取代 “Rt”、“↩️” 取代 “Re” | 0/1/true/false | false |
|
||||
| showRetweetTextInTitle | 在标题出显示转推评论(置为 false 则在标题只显示被转推推文) | 0/1/true/false | true |
|
||||
| addLinkForPics | 为图片添加可点击的链接 | 0/1/true/false | false |
|
||||
| showTimestampInDescription | 在正文处显示推特的时间戳 | 0/1/true/false | false |
|
||||
| showQuotedInTitle | 在标题处显示被引用的推文 | 0/1/true/false | false |
|
||||
| widthOfPics | 推文配图宽(生效取决于阅读器) | 不指定 / 数字 | 不指定 |
|
||||
| heightOfPics | 推文配图高(生效取决于阅读器) | 不指定 / 数字 | 不指定 |
|
||||
| sizeOfAuthorAvatar | 作者头像大小 | 数字 | 48 |
|
||||
| sizeOfQuotedAuthorAvatar | 被转推推文作者头像大小 | 数字 | 24 |
|
||||
| excludeReplies | 排除回复,只在用户时间线有效 | 0/1/true/false | false |
|
||||
| includeRts | 包括转推,只在用户时间线有效 | 0/1/true/false | true |
|
||||
| count | 传递给 Twitter API 的 `count` 参数,只在用户时间线有效 | 不指定 / 数字 | 不指定 |
|
||||
|
||||
指定更多与默认值不同的参数选项可以改善 RSS 的可读性,如
|
||||
|
||||
https://rsshub.app/twitter/user/durov/readable=1&authorNameBold=1&showAuthorInTitle=1&showAuthorInDesc=1&showQuotedAuthorAvatarInDesc=1&showAuthorAvatarInDesc=1&showEmojiForRetweetAndReply=1&showRetweetTextInTitle=0&addLinkForPics=1&showTimestampInDescription=1&showQuotedInTitle=1&heightOfPics=150
|
||||
|
||||
的效果为
|
||||
|
||||
<img src="/readable-twitter.png" alt="Durov 的可读推特 RSS">
|
||||
|
||||
### 用户时间线
|
||||
|
||||
<Route author="DIYgod" example="/twitter/user/DIYgod" path="/twitter/user/:id/:type?" :paramsDesc="['用户名', '额外选项 `exclude_replies`去除回复,`exclude_rts`去除转推,`exclude_rts_replies`去除回复和转推,默认包含全部回复和转推。']" radar="1" rssbud="1"/>
|
||||
<Route author="DIYgod" example="/twitter/user/DIYgod" path="/twitter/user/:id/:routeParams?" :paramsDesc="['用户名', '额外参数;请参阅上面的说明和表格;特别地,当 `routeParams=exclude_replies`时去除回复,`routeParams=exclude_rts`去除转推,`routeParams=exclude_rts_replies`去除回复和转推,默认包含全部回复和转推。']" radar="1" rssbud="1"/>
|
||||
|
||||
### 用户关注时间线
|
||||
|
||||
<Route author="DIYgod" example="/twitter/followings/DIYgod" path="/twitter/followings/:id" :paramsDesc="['用户名']" radar="1" rssbud="1">
|
||||
<Route author="DIYgod" example="/twitter/followings/DIYgod" path="/twitter/followings/:id/:routeParams?" :paramsDesc="['用户名', '额外参数;请参阅上面的说明和表格']" radar="1" rssbud="1" selfhost="1">
|
||||
|
||||
::: warning 注意
|
||||
|
||||
@@ -499,15 +561,15 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性
|
||||
|
||||
### 列表时间线
|
||||
|
||||
<Route author="xyqfer" example="/twitter/list/ladyleet/javascript" path="/twitter/list/:id/:name" :paramsDesc="['用户名', 'list 名称']" radar="1" rssbud="1"/>
|
||||
<Route author="xyqfer" example="/twitter/list/ladyleet/javascript" path="/twitter/list/:id/:name/:routeParams?" :paramsDesc="['用户名', 'list 名称', '额外参数;请参阅上面的说明和表格']" radar="1" rssbud="1"/>
|
||||
|
||||
### 用户喜欢列表
|
||||
|
||||
<Route author="xyqfer" example="/twitter/likes/DIYgod" path="/twitter/likes/:id" :paramsDesc="['用户名']" radar="1" rssbud="1"/>
|
||||
<Route author="xyqfer" example="/twitter/likes/DIYgod" path="/twitter/likes/:id/:routeParams?" :paramsDesc="['用户名', '额外参数;请参阅上面的说明和表格']" radar="1" rssbud="1"/>
|
||||
|
||||
### 关键词
|
||||
|
||||
<Route author="DIYgod" example="/twitter/keyword/RSSHub" path="/twitter/keyword/:keyword" :paramsDesc="['关键词']" radar="1" rssbud="1"/>
|
||||
<Route author="DIYgod" example="/twitter/keyword/RSSHub" path="/twitter/keyword/:keyword/:routeParams?" :paramsDesc="['关键词', '额外参数;请参阅上面的说明和表格']" radar="1" rssbud="1"/>
|
||||
|
||||
### Trends
|
||||
|
||||
@@ -519,11 +581,11 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性
|
||||
|
||||
<Route author="kt286" example="/vuevideo/971924215514" path="/vuevideo/:userid" :paramsDesc="['用户ID, 可在对应页面的 URL 中找到']"/>
|
||||
|
||||
## Youtube
|
||||
## YouTube
|
||||
|
||||
::: tip Tiny Tiny RSS 用户请注意
|
||||
|
||||
Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性,导致无法加载 Youtube 内嵌视频,如果需要使用内嵌视频请为 Tiny Tiny RSS 安装 [remove_iframe_sandbox](https://github.com/DIYgod/ttrss-plugin-remove-iframe-sandbox) 插件
|
||||
Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性,导致无法加载 YouTube 内嵌视频,如果需要使用内嵌视频请为 Tiny Tiny RSS 安装 [remove_iframe_sandbox](https://github.com/DIYgod/ttrss-plugin-remove-iframe-sandbox) 插件
|
||||
|
||||
:::
|
||||
|
||||
@@ -533,6 +595,12 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性
|
||||
|
||||
### 频道
|
||||
|
||||
::: tip 提示
|
||||
|
||||
YouTube 官方亦有提供频道 RSS,形如 <https://www.youtube.com/feeds/videos.xml?channel_id=UCDwDMPOZfxVV0x_dz0eQ8KQ>。
|
||||
|
||||
:::
|
||||
|
||||
<Route author="DIYgod" example="/youtube/channel/UCDwDMPOZfxVV0x_dz0eQ8KQ" path="/youtube/channel/:id/:disableEmbed?" :paramsDesc="['频道 id', '默认为开启内嵌视频, 任意值为关闭']" radar="1" rssbud="1"/>
|
||||
|
||||
### 播放列表
|
||||
@@ -603,7 +671,13 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性
|
||||
|
||||
### 一周口碑榜
|
||||
|
||||
<Route author="umm233" example="/douban/movie/weekly" path="/douban/movie/weekly"/>
|
||||
<Route author="umm233 nczitzk" example="/douban/movie/weekly" path="/douban/movie/weekly/:type?" :paramsDesc="['分类,可在榜单页 URL 中找到,默认为一周口碑电影榜']">
|
||||
|
||||
| 一周口碑电影榜 | 一周口碑剧集榜 | 华语口碑剧集榜 |
|
||||
| ----------------- | -------------- | ---------------------- |
|
||||
| movie_weekly_best | tv_weekly_best | tv_chinese_best_weekly |
|
||||
|
||||
</Route>
|
||||
|
||||
### 豆瓣电影分类
|
||||
|
||||
@@ -673,7 +747,7 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性
|
||||
|
||||
### 用户广播
|
||||
|
||||
<Route author="alfredcai" example="/douban/people/62759792/status" path="douban/people/:userid/status" :paramsDesc="['整数型用户 id']" radar="1">
|
||||
<Route author="alfredcai" example="/douban/people/62759792/status" path="douban/people/:userid/status/:routeParams" :paramsDesc="['整数型用户 id', '额外参数;见下']" radar="1">
|
||||
|
||||
::: tip 提示
|
||||
|
||||
@@ -683,12 +757,42 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性
|
||||
|
||||
:::
|
||||
|
||||
对于豆瓣用户广播内容,在 `routeParams` 参数中以 query string 格式设置如下选项可以控制输出的样式
|
||||
|
||||
| 键 | 含义 | 接受的值 | 默认值 |
|
||||
| -------------------------- | -------------------------------------------------------------- | -------------- | ------ |
|
||||
| readable | 是否开启细节排版可读性优化 | 0/1/true/false | false |
|
||||
| authorNameBold | 是否加粗作者名字 | 0/1/true/false | false |
|
||||
| showAuthorInTitle | 是否在标题处显示作者 | 0/1/true/false | true |
|
||||
| showAuthorInDesc | 是否在正文处显示作者 | 0/1/true/false | false |
|
||||
| showAuthorAvatarInDesc | 是否在正文处显示作者头像(若阅读器会提取正文图片,不建议开启) | 0/1/true/false | false |
|
||||
| showEmojiForRetweet | 显示 “🔁” 取代 “Fw”(转发) | 0/1/true/false | false |
|
||||
| showRetweetTextInTitle | 在标题出显示转发评论(置为 false 则在标题只显示被转发的广播) | 0/1/true/false | false |
|
||||
| addLinkForPics | 为图片添加可点击的链接 | 0/1/true/false | false |
|
||||
| showTimestampInDescription | 在正文处显示广播的时间戳 | 0/1/true/false | false |
|
||||
| showComments | 在正文处显示评论 | 0/1/true/false | false |
|
||||
| widthOfPics | 广播配图宽(生效取决于阅读器) | 不指定 / 数字 | 不指定 |
|
||||
| heightOfPics | 广播配图高(生效取决于阅读器) | 不指定 / 数字 | 不指定 |
|
||||
| sizeOfAuthorAvatar | 作者头像大小 | 数字 | 48 |
|
||||
|
||||
指定更多与默认值不同的参数选项可以改善 RSS 的可读性,如
|
||||
|
||||
https://rsshub.app/douban/people/113894409/status/readable=1&authorNameBold=1&showAuthorInTitle=1&showAuthorInDesc=1&showAuthorAvatarInDesc=1&showEmojiForRetweet=1&showRetweetTextInTitle=1&addLinkForPics=1&showTimestampInDescription=1&showComments=1&widthOfPics=100
|
||||
|
||||
的效果为
|
||||
|
||||
<img src="/readable-douban.png" alt="豆瓣读书的可读豆瓣广播 RSS">
|
||||
|
||||
</Route>
|
||||
|
||||
### 日记最新回应
|
||||
|
||||
<Route author="nczitzk" example="/douban/replies/xiaoyaxiaoya" path="/douban/replies/:uid" :paramsDesc="['用户id,可在用户日记页 URL 中找到']"/>
|
||||
|
||||
### 最新回应过的日记
|
||||
|
||||
<Route author="nczitzk" example="/douban/replied/xiaoyaxiaoya" path="/douban/replied/:uid" :paramsDesc="['用户id,可在用户日记页 URL 中找到']"/>
|
||||
|
||||
### 话题
|
||||
|
||||
<Route author="LogicJake" example="/douban/topic/48823" path="/douban/topic/:id/:sort?" :paramsDesc="['话题id','排序方式,hot或new,默认为new']"/>
|
||||
@@ -713,6 +817,23 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性
|
||||
|
||||
</Route>
|
||||
|
||||
### 用户想看
|
||||
|
||||
<Route author="exherb" example="/douban/people/exherb/wish/torrentProvider=1337x" path="/douban/people/:userid/wish/:routeParams?" :paramsDesc="['用户id','额外参数;见下']">
|
||||
|
||||
对于豆瓣用户想看的内容,在 `routeParams` 参数中以 query string 格式设置如下选项可以控制输出的样式
|
||||
|
||||
| 键 | 含义 | 接受的值 | 默认值 |
|
||||
| ---------------- | ---------------------------------------------------------- | ------------------------------- | ------ |
|
||||
| pagesCount | 查询页面数 | | 1 |
|
||||
| torrentProvider | 启用 torrent 搜索 | all/1337x/Eztv/Rarbg/Yts/HDHome | |
|
||||
| passkey | HDHome 密钥,当 torrentProvider 为 `all` 或 `HDHome` 必填 | | |
|
||||
| torrentQuery | 额外关键词,如 `1080p`, 逗号分割 | | |
|
||||
| torrentMinSeeds | 最小 seeds 数 | | 1 |
|
||||
| torrentMinRating | 种子和电影标题最小匹配度 | | 0.5 |
|
||||
|
||||
</Route>
|
||||
|
||||
## 饭否
|
||||
|
||||
::: warning 注意
|
||||
@@ -851,9 +972,35 @@ rule
|
||||
|
||||
## 微博
|
||||
|
||||
对于微博内容,在 `routeParams` 参数中以 query string 格式指定选项,可以控制输出的样式
|
||||
|
||||
| 键 | 含义 | 接受的值 | 默认值 |
|
||||
| -------------------------- | -------------------------------------------------------------- | -------------- | ----------------------------------- |
|
||||
| readable | 是否开启细节排版可读性优化 | 0/1/true/false | false |
|
||||
| authorNameBold | 是否加粗作者名字 | 0/1/true/false | false |
|
||||
| showAuthorInTitle | 是否在标题处显示作者 | 0/1/true/false | false(`/weibo/keyword/`中为 true) |
|
||||
| showAuthorInDesc | 是否在正文处显示作者 | 0/1/true/false | false(`/weibo/keyword/`中为 true) |
|
||||
| showAuthorAvatarInDesc | 是否在正文处显示作者头像(若阅读器会提取正文图片,不建议开启) | 0/1/true/false | false |
|
||||
| showEmojiForRetweet | 显示 “🔁” 取代 “转发” 两个字 | 0/1/true/false | false |
|
||||
| showRetweetTextInTitle | 在标题出显示转发评论(置为 false 则在标题只显示被转发微博) | 0/1/true/false | true |
|
||||
| addLinkForPics | 为图片添加可点击的链接 | 0/1/true/false | false |
|
||||
| showTimestampInDescription | 在正文处显示被转发微博的时间戳 | 0/1/true/false | false |
|
||||
| widthOfPics | 微博配图宽(生效取决于阅读器) | 不指定 / 数字 | 不指定 |
|
||||
| heightOfPics | 微博配图高(生效取决于阅读器) | 不指定 / 数字 | 不指定 |
|
||||
| sizeOfAuthorAvatar | 作者头像大小 | 数字 | 48 |
|
||||
| displayVideo | 是否直接显示微博视频,只在博主 RSS 中有效 | 0/1/true/false | true |
|
||||
|
||||
指定更多与默认值不同的参数选项可以改善 RSS 的可读性,如
|
||||
|
||||
https://rsshub.app/weibo/user/1642909335/readable=1&authorNameBold=1&showAuthorInTitle=1&showAuthorInDesc=1&showAuthorAvatarInDesc=1&showEmojiForRetweet=1&showRetweetTextInTitle=0&addLinkForPics=1&showTimestampInDescription=1&showTimestampInDescription=1&heightOfPics=150
|
||||
|
||||
的效果为
|
||||
|
||||
<img src="/readable-weibo.png" alt="微博小秘书的可读微博 RSS">
|
||||
|
||||
### 博主
|
||||
|
||||
<Route author="DIYgod iplusx" example="/weibo/user/1195230310" path="/weibo/user/:uid/:displayVideo?" :paramsDesc="['用户 id, 博主主页打开控制台执行 `$CONFIG.oid` 获取', '是否直接显示微博视频, 缺省 `1` 显示, 若不需要显示则填 `0` ']" anticrawler="1" radar="1">
|
||||
<Route author="DIYgod iplusx" example="/weibo/user/1195230310" path="/weibo/user/:uid/:routeParams?" :paramsDesc="['用户 id, 博主主页打开控制台执行 `$CONFIG.oid` 获取', '额外参数;请参阅上面的说明和表格;特别地,当 `routeParams=1` 时开启微博视频显示']" anticrawler="1" radar="1" rssbud="1">
|
||||
|
||||
部分博主仅登录可见,不支持订阅,可以通过打开 `https://m.weibo.cn/u/:uid` 验证
|
||||
|
||||
@@ -861,7 +1008,7 @@ rule
|
||||
|
||||
### 关键词
|
||||
|
||||
<Route author="DIYgod" example="/weibo/keyword/DIYgod" path="/weibo/keyword/:keyword" :paramsDesc="['你想订阅的微博关键词']" anticrawler="1" radar="1" rssbud="1"/>
|
||||
<Route author="DIYgod" example="/weibo/keyword/DIYgod" path="/weibo/keyword/:keyword/:routeParams?" :paramsDesc="['你想订阅的微博关键词', '额外参数;请参阅上面的说明和表格']" anticrawler="1" radar="1" rssbud="1"/>
|
||||
|
||||
### 热搜榜
|
||||
|
||||
@@ -869,11 +1016,17 @@ rule
|
||||
|
||||
### 超话
|
||||
|
||||
<Route author="zengxs" example="/weibo/super_index/1008084989d223732bf6f02f75ea30efad58a9" path="/weibo/super_index/:id" :paramsDesc="['超话ID']" anticrawler="1" radar="1" rssbud="1"/>
|
||||
<Route author="zengxs" example="/weibo/super_index/1008084989d223732bf6f02f75ea30efad58a9" path="/weibo/super_index/:id/:routeParams?" :paramsDesc="['超话ID', '额外参数;请参阅上面的说明和表格']" anticrawler="1" radar="1" rssbud="1"/>
|
||||
|
||||
### 个人时间线
|
||||
|
||||
<Route author="zytomorrow DIYgod" example="/weibo/timeline/3306934123" path="/weibo/timeline/:uid/:feature?" :paramsDesc="['用户的uid', ' 过滤类型ID,0:全部、1:原创、2:图片、3:视频、4:音乐,默认为0。']" anticrawler="1">
|
||||
::: warning 注意
|
||||
|
||||
个人时间线暂不支持改善可读性。
|
||||
|
||||
:::
|
||||
|
||||
<Route author="zytomorrow DIYgod" example="/weibo/timeline/3306934123" path="/weibo/timeline/:uid/:feature?" :paramsDesc="['用户的uid', ' 过滤类型ID,0:全部、1:原创、2:图片、3:视频、4:音乐,默认为0。']" anticrawler="1" selfhost="1">
|
||||
|
||||
::: warning 注意
|
||||
|
||||
@@ -948,7 +1101,7 @@ rule
|
||||
|
||||
### 收藏夹
|
||||
|
||||
<Route author="huruji" example="/zhihu/collection/26444956" path="/zhihu/collection/:id" :paramsDesc="['收藏夹 id, 可在收藏夹页面 URL 中找到']" anticrawler="1" radar="1" rssbud="1"/>
|
||||
<Route author="huruji Colin-XKL" example="/zhihu/collection/26444956" path="/zhihu/collection/:id" :paramsDesc="['收藏夹 id, 可在收藏夹页面 URL 中找到']" anticrawler="1" radar="1" rssbud="1"/>
|
||||
|
||||
### 用户动态
|
||||
|
||||
@@ -960,7 +1113,11 @@ rule
|
||||
|
||||
### 用户文章
|
||||
|
||||
<Route author="whtsky" example="/zhihu/people/posts/dcjanus" path="/zhihu/people/posts/:id" :paramsDesc="['作者 id, 可在用户主页 URL 中找到']" anticrawler="1" radar="1" rssbud="1"/>
|
||||
<Route author="whtsky Colin-XKL" example="/zhihu/posts/people/frederchen" path="/zhihu/posts/:usertype/:id" :paramsDesc="['作者 id, 可在用户主页 URL 中找到', '用户类型usertype,参考用户主页的URL。目前有两种,见下表']" anticrawler="1" radar="1" rssbud="1"/>
|
||||
|
||||
| 普通用户 | 机构用户 |
|
||||
| -------- | -------- |
|
||||
| people | org |
|
||||
|
||||
### 专栏
|
||||
|
||||
@@ -978,6 +1135,16 @@ rule
|
||||
|
||||
<Route author="DIYgod" example="/zhihu/hotlist" path="/zhihu/hotlist" anticrawler="1" radar="1" rssbud="1"/>
|
||||
|
||||
### 知乎分类热榜
|
||||
|
||||
<Route author="nczitzk" example="/zhihu/hot" path="/zhihu/hot/:category?" :paramsDesc="['分类,见下表,默认为全站']" anticrawler="1" radar="1" rssbud="1">
|
||||
|
||||
| 全站 | 国际 | 科学 | 汽车 | 视频 | 时尚 | 时事 | 数码 | 体育 | 校园 | 影视 |
|
||||
| ----- | ----- | ------- | ---- | ------ | ------- | ----- | ------- | ----- | ------ | ---- |
|
||||
| total | focus | science | car | zvideo | fashion | depth | digital | sport | school | film |
|
||||
|
||||
</Route>
|
||||
|
||||
### 知乎想法热榜
|
||||
|
||||
<Route author="xyqfer" example="/zhihu/pin/hotlist" path="/zhihu/pin/hotlist" anticrawler="1" radar="1" rssbud="1"/>
|
||||
@@ -1005,3 +1172,12 @@ rule
|
||||
### 知乎书店 - 知乎周刊
|
||||
|
||||
<Route author="LogicJake" example="/zhihu/weekly" path="/zhihu/weekly" anticrawler="1" radar="1" rssbud="1"/>
|
||||
|
||||
### 用户关注时间线
|
||||
|
||||
<Route author="SeanChao" example="/zhihu/timeline" path="/zhihu/timeline" anticrawler="1" selfhost="1"/>
|
||||
::: warning 注意
|
||||
|
||||
用户关注动态需要登录后的 Cookie 值,所以只能自建,详情见部署页面的配置模块。
|
||||
|
||||
:::
|
||||
|
||||
+143
-3
@@ -41,9 +41,9 @@ pageClass: routes
|
||||
|
||||
### 查询国内外 CTF 赛事信息
|
||||
|
||||
<Route author="frankli0324" example="/ctfhub/calendar"
|
||||
path="/ctfhub/calendar/:limit?/:form?/:class?/:title?"
|
||||
:paramsDesc="['通过CTF赛事名称过滤', '一个整数,筛选最近的limit场比赛', '比赛形式', '比赛类型']">
|
||||
<Route author="frankli0324" example="/ctfhub/search"
|
||||
path="/ctfhub/search/:limit?/:form?/:class?/:title?"
|
||||
:paramsDesc="['一个整数,筛选最新的limit场比赛,默认为10', '比赛形式', '比赛类型', '通过CTF赛事名称过滤']">
|
||||
|
||||
| `:class` | 类型 |
|
||||
| :------: | -------------------------------- |
|
||||
@@ -63,6 +63,14 @@ pageClass: routes
|
||||
|
||||
</Route>
|
||||
|
||||
### 查询近期赛事
|
||||
|
||||
<Route author="frankli0324" example="/ctfhub/upcoming"
|
||||
path="/ctfhub/upcoming/:limit?"
|
||||
:paramsDesc="['一个整数,筛选最近的limit场比赛,默认为5']">
|
||||
|
||||
</Route>
|
||||
|
||||
## gradCafe
|
||||
|
||||
### gradCafe result
|
||||
@@ -73,6 +81,42 @@ pageClass: routes
|
||||
|
||||
<Route author="liecn" example="/gradcafe/result/computer" path="/gradcafe/result/:type" :paramsDesc="['按关键词进行搜索,如 computer']"/>
|
||||
|
||||
## MarginNote
|
||||
|
||||
### 标签
|
||||
|
||||
<Route author="nczitzk" example="/marginnote/tag/经验分享" path="/marginnote/tag/:id?" :paramsDesc="['标签名,见下表,默认为 经验分享']">
|
||||
|
||||
| 经验分享 | 论坛精华 | 待跟进反馈 | 优秀建议 | 精选回答 | 官方签名 | 自动更新 | 3674 以上版本支持 | 368 以上版本支持 | 未经验证的安全风险 | 笔记本分享 | 关键反馈 | 精选话题讨论 | 灵感盒 | 引用 |
|
||||
| -------- | -------- | ---------- | -------- | -------- | -------- | -------- | ----------------- | ---------------- | ------------------ | ---------- | -------- | ------------ | ------ | ---- |
|
||||
|
||||
</Route>
|
||||
|
||||
## Mind42
|
||||
|
||||
### 分类
|
||||
|
||||
<Route author="nczitzk" example="/mind42" path="/mind42/:caty?" :paramsDesc="['分类,见下表,默认为 Overview']">
|
||||
|
||||
| Overview | Popular | All |
|
||||
| -------- | ------- | ------ |
|
||||
| mindmaps | popular | public |
|
||||
|
||||
</Route>
|
||||
|
||||
### 标签
|
||||
|
||||
<Route author="nczitzk" example="/mind42/tag/online" path="/mind42/tag/:id" :paramsDesc="['标签,见下表']">
|
||||
|
||||
| in | online | cleaning | buy | best | services | for | carpet | service | india | company | and | de | mapa | control | malware | online-dating-website-reviews | virus | international-online-dating-sites-review | repair |
|
||||
| -- | ------ | -------- | --- | ---- | -------- | --- | ------ | ------- | ----- | ------- | --- | -- | ---- | ------- | ------- | ----------------------------- | ----- | ---------------------------------------- | ------ |
|
||||
|
||||
</Route>
|
||||
|
||||
### 搜索
|
||||
|
||||
<Route author="nczitzk" example="/mind42/search/online" path="/mind42/search/:keyword" :paramsDesc="['关键字']"/>
|
||||
|
||||
## NEEA 中国教育考试网
|
||||
|
||||
### 国家教育考试
|
||||
@@ -102,6 +146,26 @@ pageClass: routes
|
||||
| wsk | 全国外语水平考试 (WSK) |
|
||||
| mets | 医护英语水平考试 (METS) |
|
||||
|
||||
## ProcessOn
|
||||
|
||||
### 推荐
|
||||
|
||||
<Route author="nczitzk" example="/processon/popular" path="/processon/popular/:cate?/:sort?" :paramsDesc="['分类,见下表,默认为所有类型', '排序,见下表,默认为人气']">
|
||||
|
||||
分类
|
||||
|
||||
| 所有类型 | 流程图 | BPMN | 思维导图 | UI 原型图 | UML | Org 组织结构图 | 网络拓扑图 | 韦恩图 | |
|
||||
| -------- | ------ | ---- | -------- | --------- | --- | -------------- | ---------- | ------- | ---- |
|
||||
| | es | flow | bpmn | mind_free | ui | uml | org | network | venn |
|
||||
|
||||
排序
|
||||
|
||||
| 人气 | 最多人赞 | 最多收藏 | 最多浏览 | 最新发布 |
|
||||
| ---- | --------- | -------------- | --------- | ----------- |
|
||||
| | likeCount | favouriteCount | viewCount | publishTime |
|
||||
|
||||
</Route>
|
||||
|
||||
## X-MOL 平台
|
||||
|
||||
### 新闻
|
||||
@@ -120,6 +184,22 @@ pageClass: routes
|
||||
|
||||
</Route>
|
||||
|
||||
## zhimap 思维导图社区
|
||||
|
||||
<Route author="laampui" example="/zhimap/820156a42e9a490796c7fd56916aa95b/1" path="/zhimap/:categoryUuid?/:recommend?" :paramsDesc="['分类 uuid,见下表,默认为33b67d1bad1d4e37812f71d42764af34', '1 为按推荐排序,0 为按最新排序,默认为 0']">
|
||||
|
||||
| 热门 | 学科 | 学习 | 语言 | 工作 | 提升 | 生活 | 互联网 | 教育 | 其他 | 行业 | 服务发布 | 医疗 |
|
||||
| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- |
|
||||
| 33b67d1bad1d4e37812f71d42764af34 | 9434268e893a46aa9a1a231059849984 | 820156a42e9a490796c7fd56916aa95b | 959c81f606ca495c882c7e461429eb2a | 5af4bca5496e4733a2d582690627e25f | 5300988dff564756b5d462cea8a865b7 | 02fdcc2ab6374bc6b9b9717e70c87723 | 437d434fe9eb410a94dcefb889994e2b | 9747cbf78f96492c973aa6ab23925eee | d4c3a92a9cf64da7b187763211dc6ff6 | 58231ab9cef34af7819c3f6e2160c007 | 73d89972bee0457997c983d7fca19f9f | 853ce8b3a4c24b87a03f66af95c5e06c |
|
||||
|
||||
</Route>
|
||||
|
||||
## 杭州市国家普通话测试网报信息
|
||||
|
||||
### 考试信息
|
||||
|
||||
<Route author="ChaosTong" example="/putonghua" path="/putonghua" />
|
||||
|
||||
## 唧唧堂
|
||||
|
||||
### 论文
|
||||
@@ -164,6 +244,10 @@ pageClass: routes
|
||||
|
||||
<Route author="tonghs" example="/manong-weekly" path="/manong-weekly" />
|
||||
|
||||
## 幕布精选
|
||||
|
||||
<Route author="laampui" example="/mubu/explore/16/读书笔记" path="/mubu/explore/:tagId/:title?" :paramsDesc="['标签 id', '显示标题']" />
|
||||
|
||||
## 扇贝
|
||||
|
||||
### 用户打卡
|
||||
@@ -304,12 +388,68 @@ pageClass: routes
|
||||
|
||||
</Route>
|
||||
|
||||
## 阳光高考
|
||||
|
||||
### 教育部阳光高考信息公开平台招生政策规定
|
||||
|
||||
<Route author="nczitzk" example="/chsi/zszcgd" path="/chsi/zszcgd/:category?" :paramsDesc="['分类,默认为招生政策']">
|
||||
|
||||
| 招生政策 | 深化考试招生制度改革 | 教育法律法规 |
|
||||
| -------- | -------------------- | ------------ |
|
||||
| dnzszc | zdgg | jyflfg |
|
||||
|
||||
</Route>
|
||||
|
||||
## 印象识堂
|
||||
|
||||
### 印象剪藏
|
||||
|
||||
<Route author="nczitzk" example="/yinxiang/note" path="/yinxiang/note" />
|
||||
|
||||
### 卡片清单
|
||||
|
||||
<Route author="nczitzk" example="/yinxiang/card/32" path="/yinxiang/card/:id?" :paramsDesc="['卡片 id,见下表,默认为每周收藏排行榜・TOP5']">
|
||||
|
||||
::: tip 提示
|
||||
|
||||
卡片对应的话题、专题等内容过期后,该卡片 id 也会失效,此时填入该卡片 id 将会报错。
|
||||
|
||||
:::
|
||||
|
||||
| 每周收藏排行榜・TOP5 | 每周热门「读书笔记」榜 TOP5 | 【印象话题】选择的悖论 | 【印象专题】如何一秒洞察问题本质? | 「识堂开讲」5 位嘉宾精华笔记大放送 | 【印象话题】培养专注力的 5 个步骤 | 🎁购物清单主题活动获奖结果 |
|
||||
| -------------------- | --------------------------- | ---------------------- | ---------------------------------- | ---------------------------------- | --------------------------------- | -------------------------- |
|
||||
| 32 | 33 | 101 | 103 | 104 | 105 | 106 |
|
||||
|
||||
</Route>
|
||||
|
||||
### 用户公开笔记
|
||||
|
||||
<Route author="nczitzk" example="/yinxiang/personal/ZUhuRTmW5SKE7vvHPqI7cg" path="/yinxiang/personal/:id" :paramsDesc="['用户 id,可在用户页 URL 中找到']" />
|
||||
|
||||
### 笔记分类
|
||||
|
||||
<Route author="nczitzk" example="/yinxiang/category/28" path="/yinxiang/category/:id" :paramsDesc="['分类 id,可在分类页 URL 中找到']" />
|
||||
|
||||
### 笔记标签
|
||||
|
||||
<Route author="nczitzk" example="/yinxiang/tag/人生算法" path="/yinxiang/tag/:id" :paramsDesc="['标签名,可在标签页中找到']" />
|
||||
|
||||
## 英中协会
|
||||
|
||||
### 奖学金
|
||||
|
||||
<Route author="HenryQW" example="/gbcc/trust" path="/gbcc/trust" />
|
||||
|
||||
## 有道云笔记
|
||||
|
||||
### 学霸感悟
|
||||
|
||||
<Route author="nczitzk" example="/youdao/xueba" path="/youdao/xueba" />
|
||||
|
||||
### 笔记最新动态
|
||||
|
||||
<Route author="nczitzk" example="/youdao/latest" path="/youdao/latest" />
|
||||
|
||||
## 语雀
|
||||
|
||||
### 知识库
|
||||
|
||||
@@ -20,6 +20,6 @@ RSSHub 是采用 MIT 许可的开源项目,使用完全免费。但是随着
|
||||
|
||||
我们通过以下方式接受赞助:
|
||||
|
||||
- [微信支付](https://i.loli.net/2019/03/23/5c950ebbc373e.png)
|
||||
- [支付宝](https://i.loli.net/2019/03/23/5c950ebbc980e.png)
|
||||
- [微信支付](https://diygod.me/images/wx.jpg)
|
||||
- [支付宝](https://diygod.me/images/zfb.jpg)
|
||||
- [Paypal](https://www.paypal.me/DIYgod)
|
||||
|
||||
+212
-62
@@ -8,7 +8,7 @@ pageClass: routes
|
||||
|
||||
### 频道
|
||||
|
||||
<Route author="brilon" example="/21caijing/channel/readnumber" path="/21caijing/channel/:name" :paramsDesc="['频道名称,可在[https://m.21jingji.com/](https://m.21jingji.com/)页面URL中找到']"/>
|
||||
<Route author="brilon" example="/21caijing/channel/readnumber" path="/21caijing/channel/:name" :paramsDesc="['频道名称,可在 [https://m.21jingji.com/](https://m.21jingji.com/) 页面 URL 中找到']"/>
|
||||
|
||||
## ABC News
|
||||
|
||||
@@ -34,11 +34,11 @@ pageClass: routes
|
||||
|
||||
### BBC 英文
|
||||
|
||||
<Route author="HenryQW" example="/bbc/world-asia" path="/bbc/:channel" :paramsDesc="['频道, 缺省为热门']">
|
||||
<Route author="HenryQW DIYgod" example="/bbc/world-asia" path="/bbc/:channel" :paramsDesc="['频道,缺省为热门']">
|
||||
|
||||
通过提取文章全文,以提供比官方源更佳的阅读体验.
|
||||
通过提取文章全文,以提供比官方源更佳的阅读体验。
|
||||
|
||||
支持大部分频道,频道名称见[BBC 官方 RSS](https://www.bbc.co.uk/news/10628494)。
|
||||
支持大部分频道,频道名称见 [BBC 官方 RSS](https://www.bbc.co.uk/news/10628494)。
|
||||
|
||||
- 频道为单一路径,如 `https://feeds.bbci.co.uk/news/business/rss.xml` 则为 `/bbc/business`.
|
||||
- 频道包含多重路径,如 `https://feeds.bbci.co.uk/news/world/asia/rss.xml` 则替换 `/` 为 `-` `/bbc/world-asia`.
|
||||
@@ -47,11 +47,11 @@ pageClass: routes
|
||||
|
||||
### BBC 中文网
|
||||
|
||||
<Route author="HenryQW" example="/bbc/chinese/business" path="/bbc/:lang/:channel?" :paramsDesc="['简体或繁体','频道, 缺省为热门']">
|
||||
<Route author="HenryQW" example="/bbc/chinese/business" path="/bbc/:lang/:channel?" :paramsDesc="['简体或繁体','频道,缺省为热门']">
|
||||
|
||||
通过提取文章全文,以提供比官方源更佳的阅读体验.
|
||||
通过提取文章全文,以提供比官方源更佳的阅读体验。
|
||||
|
||||
支持大部分频道,频道名称见[BBC 中文网官方 RSS](https://www.bbc.com/zhongwen/simp/services/2009/09/000000_rss)。
|
||||
支持大部分频道,频道名称见 [BBC 中文网官方 RSS](https://www.bbc.com/zhongwen/simp/services/2009/09/000000_rss)。
|
||||
|
||||
简体版:
|
||||
|
||||
@@ -87,7 +87,19 @@ pageClass: routes
|
||||
<Route author="oppilate" example="/chicagotribune/nation-world" path="/chicagotribune/:category/:subcategory?" :paramsDesc="['目录分类', '子分类']">
|
||||
|
||||
相比官方 RSS,多提供全文。
|
||||
目录分类[见其网站](https://www.chicagotribune.com/about/ct-chicago-tribune-rss-feeds-htmlstory.html)。例如,`https://www.chicagotribune.com/arcio/rss/category/nation-world/` 对应的 RSSHub 路由是 `/chicagotribune/nation-world`。由于官方源的部分路由有两级,因此这里也相应需要填写子分类。
|
||||
目录分类 [见其网站](https://www.chicagotribune.com/about/ct-chicago-tribune-rss-feeds-htmlstory.html)。例如,`https://www.chicagotribune.com/arcio/rss/category/nation-world/` 对应的 RSSHub 路由是 `/chicagotribune/nation-world`。由于官方源的部分路由有两级,因此这里也相应需要填写子分类。
|
||||
|
||||
</Route>
|
||||
|
||||
## ChinaFile
|
||||
|
||||
<Route author="oppilate" example="/chinafile/all" path="/chinafile/:category?" :paramsDesc="['分类,默认 `all`']">
|
||||
|
||||
通过提取文章全文,以提供比官方源更佳的阅读体验。
|
||||
|
||||
| 全部 | The China NGO Project |
|
||||
| ---- | --------------------- |
|
||||
| all | ngo |
|
||||
|
||||
</Route>
|
||||
|
||||
@@ -97,39 +109,100 @@ pageClass: routes
|
||||
|
||||
<Route author="hillerliao" example="/egsea/flash" path="/egsea/flash" />
|
||||
|
||||
## FT 中文网
|
||||
## Financial Times
|
||||
|
||||
### FT 中文网
|
||||
|
||||
<Route author="HenryQW xyqfer" example="/ft/chinese/hotstoryby7day" path="/ft/:language/:channel?" :paramsDesc="['语言,简体`chinese`,繁体`traditional`', '频道, 缺省为每日更新']">
|
||||
<Route author="HenryQW xyqfer" example="/ft/chinese/hotstoryby7day" path="/ft/:language/:channel?" :paramsDesc="['语言,简体`chinese`,繁体`traditional`', '频道,缺省为每日更新']">
|
||||
|
||||
::: tip 提示
|
||||
|
||||
- 不支持付费文章.
|
||||
- 由于未知原因 FT 中文网的 SSL 证书不被信任 (参见[SSL Labs 报告](https://www.ssllabs.com/ssltest/analyze.html?d=www.ftchinese.com&latest)), 所有文章通过 http 协议获取.
|
||||
- 不支持付费文章。
|
||||
- 由于未知原因 FT 中文网的 SSL 证书不被信任 (参见 [SSL Labs 报告](https://www.ssllabs.com/ssltest/analyze.html?d=www.ftchinese.com&latest)), 所有文章通过 http 协议获取。
|
||||
|
||||
:::
|
||||
|
||||
通过提取文章全文,以提供比官方源更佳的阅读体验.
|
||||
通过提取文章全文,以提供比官方源更佳的阅读体验。
|
||||
|
||||
支持所有频道,频道名称见[官方频道 RSS](http://www.ftchinese.com/channel/rss.html).
|
||||
支持所有频道,频道名称见 [官方频道 RSS](http://www.ftchinese.com/channel/rss.html).
|
||||
|
||||
- 频道为单一路径,如 `http://www.ftchinese.com/rss/news` 则为 `/ft/chinese/news`.
|
||||
- 频道包含多重路径,如 `http://www.ftchinese.com/rss/column/007000002` 则替换 `/` 为 `-` `/ft/chinese/column-007000002`.
|
||||
|
||||
</Route>
|
||||
|
||||
### myFT 个人 RSS
|
||||
|
||||
<Route author="HenryQW" example="/ft/myft/rss-key" path="/ft/myft/:key" :paramsDesc="['myFT 个人 RSS 地址末尾的字符串']">
|
||||
|
||||
::: tip 提示
|
||||
|
||||
- 在 ft.com -> myFT -> Contact Preferences 中开启个人 RSS feed,见 [官方说明](https://help.ft.com/faq/email-alerts-and-contact-preferences/what-is-myft-rss-feed/)
|
||||
- 从 RSS 地址结尾的字符串中获取 key,格式为 `12345678-abcd-4036-82db-vdv20db024b8`
|
||||
|
||||
:::
|
||||
|
||||
</Route>
|
||||
|
||||
## i-CABLE 有線新聞
|
||||
|
||||
<Route author="tpnonthealps" example="/icable/all" path="/icable/:category/:option?" :paramsDesc="['栏目', '选项(不指定时预设为「全文输出 (含题图)」的 `withphoto` )']">
|
||||
|
||||
细则:
|
||||
|
||||
- `:category` 栏目参数:
|
||||
|
||||
- `all`: 全站
|
||||
- `local`: 本地(港聞)
|
||||
- `international`: 國際(兩岸國際)
|
||||
- `finance`: 財經
|
||||
- `china`: 兩岸(有線中國組)
|
||||
- `sports`: 體育
|
||||
|
||||
- `:option?` 可开启的选项:
|
||||
|
||||
- `plain`: 全文输出(纯文字)
|
||||
- `withphoto`: 全文输出 (含题图) **(不指定 `:option?` 时将预设为此项)**
|
||||
|
||||
- 全文输出转换为简体字:`?opencc=t2s`
|
||||
(`opencc` 是 RSSHub 的通用参数,详情请参阅 [「中文简繁体转换」](https://docs.rsshub.app/parameter.html#zhong-wen-jian-fan-ti-zhuan-huan))
|
||||
|
||||
</Route>
|
||||
|
||||
## NHK
|
||||
|
||||
### News Web Easy
|
||||
|
||||
<Route author="Andiedie" example="/nhk/news_web_easy" path="/nhk/news_web_easy"/>
|
||||
|
||||
## Phoronix
|
||||
|
||||
### 新闻与评测
|
||||
|
||||
<Route author="oppliate" example="/phoronix/news_topic/Intel" path="/phoronix/:page/:queryOrItem?" :paramsDesc="['页面', '对 `category` 页面是分类项目 `item`,对其它页面是主题 `q`,可以在网站顶部导航栏各项目链接里找出。如 `https://www.phoronix.com/scan.php?page=category&item=Computers` 对应 `/phoronix/category/Computers`']" />
|
||||
|
||||
## RTHK 傳媒透視
|
||||
|
||||
<Route author="tpnonthealps" example="/mediadigest/latest" path="/mediadigest/:range" :paramsDesc="['时间范围']">
|
||||
|
||||
细则:
|
||||
|
||||
- `:range` 时间范围参数
|
||||
(可为 `latest` 或 `四位数字的年份`)
|
||||
|
||||
- `latest`: 最新的 50 篇文章
|
||||
- `2020`: 2020 年的所有文章
|
||||
|
||||
- 全文输出转换为简体字: `?opencc=t2s`
|
||||
(`opencc` 是 RSSHub 的通用参数,详情请参阅 [「中文简繁体转换」](https://docs.rsshub.app/parameter.html#zhong-wen-jian-fan-ti-zhuan-huan))
|
||||
|
||||
</Route>
|
||||
|
||||
## Solidot
|
||||
|
||||
### 最新消息
|
||||
|
||||
<Route author="sgqy" example="/solidot/linux" path="/solidot/:type?" :paramsDesc="['消息类型. 默认为 www. 在网站上方选择后复制子域名即可']">
|
||||
<Route author="sgqy" example="/solidot/linux" path="/solidot/:type?" :paramsDesc="['消息类型。默认为 www. 在网站上方选择后复制子域名即可']">
|
||||
|
||||
::: tip 提示
|
||||
|
||||
@@ -149,7 +222,7 @@ Solidot 提供的 feed:
|
||||
|
||||
### News
|
||||
|
||||
<Route author="nczitzk" example="/telecompaper/news/mobile/2020/China/News" path="/telecompaper/news/:caty/:year?/:country?/:type?/:keyword?" :paramsDesc="['分类,见下表', '年份,可在所选分类页中 Filter 的 `Years` 选择器中选择相应年份,不限年份则填入 `all`,默认为不限', '国家或大洲,可在所选分类页中 Filter 的 `Countries` 选择器中选择相应国家或大洲,不限国家或大洲则填入 `all`,默认为不限', '类型,可在所选分类页中 Filter 的 `Types` 选择器中选择相应类型,不限类型则填入 `all`,默认为不限', '搜索关键字']">
|
||||
<Route author="nczitzk" example="/telecompaper/news/mobile/2020/China/News" path="/telecompaper/news/:caty/:year?/:country?/:type?" :paramsDesc="['分类,见下表', '年份,可在所选分类页中 Filter 的 `Years` 选择器中选择相应年份,不限年份则填入 `all`,默认为不限', '国家或大洲,可在所选分类页中 Filter 的 `Countries` 选择器中选择相应国家或大洲,不限国家或大洲则填入 `all`,默认为不限', '类型,可在所选分类页中 Filter 的 `Types` 选择器中选择相应类型,不限类型则填入 `all`,默认为不限']">
|
||||
|
||||
可选分类如下
|
||||
|
||||
@@ -167,6 +240,24 @@ Solidot 提供的 feed:
|
||||
|
||||
</Route>
|
||||
|
||||
### Search
|
||||
|
||||
<Route author="nczitzk" example="/telecompaper/search/Nokia" path="/telecompaper/search/:keyword?/:company?/:sort?/:period?" :paramsDesc="['关键词', '公司名,默认为不限', '排序,见下表,默认为 Date Descending', '发表在时间段内,默认为 12 months']">
|
||||
|
||||
排序
|
||||
|
||||
| Date Ascending | Date Descending |
|
||||
| -------------- | --------------- |
|
||||
| 1 | 2 |
|
||||
|
||||
发表在时间段内
|
||||
|
||||
| 1 month | 3 months | 6 months | 12 months | 24 months |
|
||||
| ------- | -------- | -------- | --------- | --------- |
|
||||
| 1 | 3 | 6 | 12 | 24 |
|
||||
|
||||
</Route>
|
||||
|
||||
## The Economist
|
||||
|
||||
### 分类
|
||||
@@ -185,6 +276,32 @@ Solidot 提供的 feed:
|
||||
|
||||
</Route>
|
||||
|
||||
## UDN
|
||||
|
||||
### 轉角國際
|
||||
|
||||
<Route author="emdoe" example="/udn/global/鏡頭背後" path="/udn/global/:tid" :paramsDesc="['標籤名稱,請在轉角國際首頁獲取;如果選擇輸入 `newest` 則輸出最新文章']">
|
||||
|
||||
## Voice of America (VOA)
|
||||
|
||||
透過提取全文,以獲得更好的閱讀體驗
|
||||
|
||||
<Route author="zphw" example="/voa/cantonese/zprtie-ttp" path="/voa/:language/:channel?" :paramsDesc="['語言','頻道,可於官網獲取']">
|
||||
|
||||
`语言`
|
||||
|
||||
| 粵語 | 中文 | 藏語 |
|
||||
| --------- | ------- | ------- |
|
||||
| cantonese | chinese | tibetan |
|
||||
|
||||
`频道`
|
||||
|
||||
可於各語言官網聚合新聞處 (如 <https://www.voacantonese.com/rssfeeds>) 獲取
|
||||
|
||||
例如 `https://www.voacantonese.com/api/zyrtyequty` 將對應 `/voa/cantonese/zyrtyequty`
|
||||
|
||||
</Route>
|
||||
|
||||
## Yahoo
|
||||
|
||||
### 新聞
|
||||
@@ -201,7 +318,17 @@ Solidot 提供的 feed:
|
||||
|
||||
| 新聞總集 | 兩岸國際 | 財經 | 娛樂 | 體育 | 健康 |
|
||||
| -------- | -------- | -------- | ------------- | ------ | ------ |
|
||||
| (空) | world | business | entertainment | sports | health |
|
||||
| (空) | world | business | entertainment | sports | health |
|
||||
|
||||
</Route>
|
||||
|
||||
## Yahoo! by Author
|
||||
|
||||
### 新聞
|
||||
|
||||
<Route author="loganrockmore" example="/yahoo-author/hannah-keyser" path="/yahoo-news/:author" :paramsDesc="['Author']">
|
||||
|
||||
Provides all of the articles by the specified Yahoo! author.
|
||||
|
||||
</Route>
|
||||
|
||||
@@ -219,25 +346,25 @@ Solidot 提供的 feed:
|
||||
|
||||
## 财新网
|
||||
|
||||
> 网站部分内容需要付费订阅,RSS 仅做更新提醒,不含付费内容.
|
||||
> 网站部分内容需要付费订阅,RSS 仅做更新提醒,不含付费内容。
|
||||
|
||||
### 新闻分类
|
||||
|
||||
<Route author="idealclover" example="/caixin/finance/regulation" path="/caixin/:column/:category" :paramsDesc="['栏目名', '栏目下的子分类名']">
|
||||
|
||||
Column 列表:
|
||||
Column 列表:
|
||||
|
||||
| 经济 | 金融 | 政经 | 环科 | 世界 | 观点网 | 文化 | 周刊 |
|
||||
| ------- | ------- | ----- | ------- | ------------- | ------- | ------- | ------ |
|
||||
| economy | finance | china | science | international | opinion | culture | weekly |
|
||||
|
||||
以金融板块为例的 category 列表: (其余 column 以类似方式寻找)
|
||||
以金融板块为例的 category 列表:(其余 column 以类似方式寻找)
|
||||
|
||||
| 监管 | 银行 | 证券基金 | 信托保险 | 投资 | 创新 | 市场 |
|
||||
| ---------- | ---- | -------- | --------------- | ---------- | ---------- | ------ |
|
||||
| regulation | bank | stock | insurance_trust | investment | innovation | market |
|
||||
|
||||
Category 列表:
|
||||
Category 列表:
|
||||
|
||||
| 封面报道 | 开卷 | 社论 | 时事 | 编辑寄语 | 经济 | 金融 | 商业 | 环境与科技 | 民生 | 副刊 |
|
||||
| ---------- | ----- | --------- | --------------- | ----------- | ------- | ------- | -------- | ---------------------- | ------- | ------ |
|
||||
@@ -249,6 +376,14 @@ Category 列表:
|
||||
|
||||
<Route author="EsuRt" example="/caixin/article" path="/caixin/article"/>
|
||||
|
||||
### 最新文章
|
||||
|
||||
<Route author="tpnonthealps" example="/caixin/latest" path="/caixin/latest">
|
||||
|
||||
说明:此 RSS feed 会自动抓取财新网的最新文章,但不包含 FM 及视频内容。
|
||||
|
||||
</Route>
|
||||
|
||||
## 第一财经
|
||||
|
||||
### 直播区
|
||||
@@ -289,7 +424,7 @@ Category 列表:
|
||||
|
||||
<Route author="prnake" example="/initium/latest/zh-hans" path="/initium/:type?/:language?" :paramsDesc="['栏目,缺省为最新', '语言,简体`zh-hans`,繁体`zh-hant`,缺省为简体']"/>
|
||||
|
||||
Type 栏目:
|
||||
Type 栏目:
|
||||
|
||||
| 最新 | 深度 | What’s New | 广场 | 科技 | 风物 | 特约 | ... |
|
||||
| ------ | ------- | ---------- | ----------------- | ---------- | ------- | ------- | --- |
|
||||
@@ -301,11 +436,11 @@ Type 栏目:
|
||||
|
||||
### 话题・标签
|
||||
|
||||
<Route author="AgFlore" example="/theinitium/tags/2019_10/zh-hans" path="/theinitium/tags/:type/:language?" :paramsDesc="['话题ID,可从话题页URL中获取,如<https://theinitium.com/tags/2019_10/>', '语言,简体`zh-hans`,繁体`zh-hant`,缺省为简体']"/>
|
||||
<Route author="AgFlore" example="/theinitium/tags/2019_10/zh-hans" path="/theinitium/tags/:type/:language?" :paramsDesc="['话题 ID,可从话题页 URL 中获取,如<https://theinitium.com/tags/2019_10/>', '语言,简体`zh-hans`,繁体`zh-hant`,缺省为简体']"/>
|
||||
|
||||
### 作者
|
||||
|
||||
<Route author="AgFlore" example="/theinitium/author/ninghuilulu/zh-hans" path="theinitium/author/:type/:language?" :paramsDesc="['作者ID,可从作者主页URL中获取,如<https://theinitium.com/author/ninghuilulu/>','语言,简体`zh-hans`,繁体`zh-hant`,缺省为简体']"/>
|
||||
<Route author="AgFlore" example="/theinitium/author/ninghuilulu/zh-hans" path="theinitium/author/:type/:language?" :paramsDesc="['作者 ID,可从作者主页 URL 中获取,如<https://theinitium.com/author/ninghuilulu/>','语言,简体`zh-hans`,繁体`zh-hant`,缺省为简体']"/>
|
||||
|
||||
### 个人订阅追踪动态
|
||||
|
||||
@@ -350,6 +485,16 @@ Type 栏目:
|
||||
|
||||
</Route>
|
||||
|
||||
## 华尔街日报 The Wall Street Journal (WSJ)
|
||||
|
||||
### 新闻
|
||||
|
||||
<Route author="oppilate" example="/wsj/en-us/opinion" path="/wsj/:lang/:category?" :paramsDesc="['语言,支持 `en-us`、`zh-cn`、`zh-tw`', '分类,仅 `en-us` 支持分类订阅。支持 `opinion`, `world_news`, `us_bussiness`, `market_news`, `technology`, `lifestyle`。']">
|
||||
|
||||
通过提取文章全文,以提供比官方源更佳的阅读体验。
|
||||
|
||||
</Route>
|
||||
|
||||
## 极客公园
|
||||
|
||||
### 全球快讯
|
||||
@@ -386,7 +531,7 @@ category 对应的关键词有
|
||||
|
||||
### 即时新闻
|
||||
|
||||
<Route author="lengthmin" example="/zaobao/realtime/china" path="/zaobao/realtime/:type?" :paramsDesc="['分类, 缺省为 china']">
|
||||
<Route author="lengthmin" example="/zaobao/realtime/china" path="/zaobao/realtime/:type?" :paramsDesc="['分类,缺省为 china']">
|
||||
|
||||
| 中国 | 新加坡 | 国际 | 财经 |
|
||||
| ----- | --------- | ----- | -------- |
|
||||
@@ -396,7 +541,7 @@ category 对应的关键词有
|
||||
|
||||
### 新闻
|
||||
|
||||
<Route author="lengthmin" example="/zaobao/znews/china" path="/zaobao/znews/:type?" :paramsDesc="['分类, 缺省为 china']">
|
||||
<Route author="lengthmin" example="/zaobao/znews/china" path="/zaobao/znews/:type?" :paramsDesc="['分类,缺省为 china']">
|
||||
|
||||
| 中国 | 新加坡 | 东南亚 | 国际 | 体育 | 早报现在 |
|
||||
| ----- | --------- | ------ | ----- | ------ | -------- |
|
||||
@@ -432,19 +577,19 @@ category 对应的关键词有
|
||||
|
||||
- 中国分站 `cn`:
|
||||
|
||||
- 主频道:
|
||||
- 主频道:
|
||||
|
||||
| 深度分析 | 时事要闻 | 生活 | 投资 |
|
||||
| -------- | ----------- | ---- | --------- |
|
||||
| analyses | generalnews | life | investing |
|
||||
|
||||
- 资讯子频道:
|
||||
- 资讯子频道:
|
||||
|
||||
| 中国财经 | 国际财经 | 新闻人物 | 财经视点 |
|
||||
| -------- | --------------------- | --------- | -------- |
|
||||
| china | internationalbusiness | newsmaker | opinions |
|
||||
|
||||
- 专栏子频道:
|
||||
- 专栏子频道:
|
||||
|
||||
| 中国财经专栏 | 国际财经专栏 | 大宗商品专栏 |
|
||||
| ------------ | ------------ | ------------ |
|
||||
@@ -452,7 +597,7 @@ category 对应的关键词有
|
||||
|
||||
- 美国分站 `us`:
|
||||
|
||||
- 主频道:
|
||||
- 主频道:
|
||||
|
||||
| Business | Markets | World | Politics | Tech | Breakingviews | Wealth | Life |
|
||||
| -------- | ------- | ----- | -------- | ---------- | ------------- | ------ | --------- |
|
||||
@@ -460,7 +605,7 @@ category 对应的关键词有
|
||||
|
||||
- 英国分站 `uk`:
|
||||
|
||||
- 主频道:
|
||||
- 主频道:
|
||||
|
||||
| Business | Markets | World | UK | Tech | Money | Breakingviews | Sport | Life |
|
||||
| -------- | ------- | ----- | -- | ---------- | --------------- | ------------- | ------ | --------- |
|
||||
@@ -478,9 +623,9 @@ category 对应的关键词有
|
||||
|
||||
### 新闻分类
|
||||
|
||||
<Route author="ranpox xyqfer" example="/infzm/2" path="/infzm/:id" :paramsDesc="['南方周末内容分区 id, 可在该内容分区的 URL 中找到(即 https://www.infzm.com/contents?term_id=:id)']">
|
||||
<Route author="ranpox xyqfer" example="/infzm/2" path="/infzm/:id" :paramsDesc="['南方周末内容分区 id, 可在该内容分区的 URL 中找到(即 https://www.infzm.com/contents?term_id=:id)']">
|
||||
|
||||
下面给出部分参考:
|
||||
下面给出部分参考:
|
||||
|
||||
| 推荐 | 新闻 | 观点 | 文化 | 人物 | 影像 | 专题 | 生活 | 视频 |
|
||||
| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
|
||||
@@ -494,7 +639,7 @@ category 对应的关键词有
|
||||
|
||||
<Route author="proletarius101" example="/scmp/3" path="/scmp/:category_id" :paramsDesc="['栏目分类']">
|
||||
|
||||
栏目分类对应的数字编号见[官方 RSS](https://www.scmp.com/rss)。相比官方提供的 RSS,多提供了全文输出。
|
||||
栏目分类对应的数字编号见 [官方 RSS](https://www.scmp.com/rss)。相比官方提供的 RSS,多提供了全文输出。
|
||||
|
||||
</Route>
|
||||
|
||||
@@ -502,13 +647,13 @@ category 对应的关键词有
|
||||
|
||||
### 新闻
|
||||
|
||||
<Route author="HenryQW" example="/nytimes/dual" path="/nytimes/:lang?" :paramsDesc="['语言, 缺省中文']">
|
||||
<Route author="HenryQW" example="/nytimes/dual" path="/nytimes/:lang?" :paramsDesc="['语言,缺省中文']">
|
||||
|
||||
通过提取文章全文,以提供比官方源更佳的阅读体验。
|
||||
|
||||
| 默认中文 | 中英对照 | 英文 | 中英对照 (繁体中文) | 繁体中文 |
|
||||
| 默认中文 | 中英对照 | 英文 | 中英对照 (繁体中文) | 繁体中文 |
|
||||
| -------- | -------- | ---- | ----------------------- | ------------------ |
|
||||
| (空) | dual | en | dual-traditionalchinese | traditionalchinese |
|
||||
| (空) | dual | en | dual-traditionalchinese | traditionalchinese |
|
||||
|
||||
</Route>
|
||||
|
||||
@@ -545,6 +690,7 @@ category 对应的关键词有
|
||||
| 2 | 4 | 3 | 453 |
|
||||
|
||||
</Route>
|
||||
|
||||
## 齐鲁晚报
|
||||
|
||||
### 新闻
|
||||
@@ -565,21 +711,21 @@ category 对应的关键词有
|
||||
|
||||
### 观点
|
||||
|
||||
<Route author="LogicJake" example="/people/opinion/223228" path="/people/opinion/:id" :paramsDesc="['板块id,可在 URL 中找到']"/>
|
||||
<Route author="LogicJake" example="/people/opinion/223228" path="/people/opinion/:id" :paramsDesc="['板块 id,可在 URL 中找到']"/>
|
||||
|
||||
### 环保频道
|
||||
|
||||
<Route author="zsimple" example="/people/env/74877" path="/people/env/:id" :paramsDesc="['板块id,可在 URL 中找到']"/>
|
||||
<Route author="zsimple" example="/people/env/74877" path="/people/env/:id" :paramsDesc="['板块 id,可在 URL 中找到']"/>
|
||||
|
||||
### 习近平系列重要讲话
|
||||
|
||||
<Route author="LogicJake" example="/people/xjpjh" path="/people/xjpjh/:keyword?/:year?" :paramsDesc="['关键词,默认不填','年份,默认all']"/>
|
||||
<Route author="LogicJake" example="/people/xjpjh" path="/people/xjpjh/:keyword?/:year?" :paramsDesc="['关键词,默认不填','年份,默认 all']"/>
|
||||
|
||||
## 人民日报社 国际金融报
|
||||
|
||||
### 栏目
|
||||
|
||||
<Route author="Origami404" example="/ifnews/48" path="/ifnews/:cid" :paramsDesc="['栏目ID']">
|
||||
<Route author="Origami404" example="/ifnews/48" path="/ifnews/:cid" :paramsDesc="['栏目 ID']">
|
||||
|
||||
`cid`可在对应栏目的 url 后的参数中获取,如`热点快报`的栏目 url 为`http://www.ifnews.com/column.html?cid=48`, `cid`即为`48`.
|
||||
|
||||
@@ -597,7 +743,7 @@ category 对应的关键词有
|
||||
|
||||
### 新聞
|
||||
|
||||
<Route author="Arracc" example="/nikkei/news" path="/nikkei/:category/:article_type?" :paramsDesc="['版块','文章类型,free仅无料全文,缺省为无料全文、有料非全文']">
|
||||
<Route author="Arracc" example="/nikkei/news" path="/nikkei/:category/:article_type?" :paramsDesc="['版块','文章类型,free 仅无料全文,缺省为无料全文、有料非全文']">
|
||||
|
||||
综合页文章标题添加板块标签
|
||||
|
||||
@@ -619,18 +765,6 @@ category 对应的关键词有
|
||||
|
||||
</Route>
|
||||
|
||||
## 网易新闻专栏
|
||||
|
||||
### 栏目
|
||||
|
||||
<Route author="Solist-X" example="/netease/news/special/1" path="/netease/news/special/:type?" :paramsDesc="['栏目']">
|
||||
|
||||
| 轻松一刻 | 槽值 | 人间 | 大国小民 | 三三有梗 | 数读 | 看客 | 下划线 | 谈心社 | 哒哒 | 胖编怪聊 | 曲一刀 | 今日之声 | 浪潮 | 沸点 |
|
||||
| -------- | ---- | ---- | -------- | -------- | ---- | ---- | ------ | ------ | ---- | -------- | ------ | -------- | ---- | ---- |
|
||||
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
|
||||
|
||||
</Route>
|
||||
|
||||
## 卫报 The Guardian
|
||||
|
||||
通过提取文章全文,以提供比官方源更佳的阅读体验。
|
||||
@@ -647,7 +781,7 @@ category 对应的关键词有
|
||||
|
||||
### 分类
|
||||
|
||||
<Route author="hoilc" example="/whb/bihui" path="/whb/:category" :paramsDesc="['文汇报分类名, 可在该分类的 URL 中找到(即 http://www.whb.cn/zhuzhan/:category/index.html)']" />
|
||||
<Route author="hoilc" example="/whb/bihui" path="/whb/:category" :paramsDesc="['文汇报分类名,可在该分类的 URL 中找到(即 http://www.whb.cn/zhuzhan/:category/index.html)']" />
|
||||
|
||||
## 香港 01
|
||||
|
||||
@@ -657,19 +791,19 @@ category 对应的关键词有
|
||||
|
||||
### 栏目
|
||||
|
||||
<Route author="hoilc" example="/hk01/zone/11" path="/hk01/zone/:id" :paramsDesc="['栏目id, 可在URL中找到']" radar="1" rssbud="1"/>
|
||||
<Route author="hoilc" example="/hk01/zone/11" path="/hk01/zone/:id" :paramsDesc="['栏目 id, 可在 URL 中找到']" radar="1" rssbud="1"/>
|
||||
|
||||
### 子栏目
|
||||
|
||||
<Route author="hoilc" example="/hk01/channel/391" path="/hk01/channel/:id" :paramsDesc="['子栏目id, 可在URL中找到']" radar="1" rssbud="1"/>
|
||||
<Route author="hoilc" example="/hk01/channel/391" path="/hk01/channel/:id" :paramsDesc="['子栏目 id, 可在 URL 中找到']" radar="1" rssbud="1"/>
|
||||
|
||||
### 专题
|
||||
|
||||
<Route author="hoilc" example="/hk01/issue/649" path="/hk01/issue/:id" :paramsDesc="['专题id, 可在URL中找到']" radar="1" rssbud="1"/>
|
||||
<Route author="hoilc" example="/hk01/issue/649" path="/hk01/issue/:id" :paramsDesc="['专题 id, 可在 URL 中找到']" radar="1" rssbud="1"/>
|
||||
|
||||
### 标签
|
||||
|
||||
<Route author="hoilc" example="/hk01/tag/2787" path="/hk01/tag/:id" :paramsDesc="['标签id, 可在URL中找到']" radar="1" rssbud="1"/>
|
||||
<Route author="hoilc" example="/hk01/tag/2787" path="/hk01/tag/:id" :paramsDesc="['标签 id, 可在 URL 中找到']" radar="1" rssbud="1"/>
|
||||
|
||||
## 香港電台
|
||||
|
||||
@@ -691,11 +825,11 @@ category 对应的关键词有
|
||||
|
||||
### 栏目
|
||||
|
||||
<Route author="DIYgod" example="/bjnews/realtime" path="/bjnews/:category" :paramsDesc="['新京报的栏目名, 点击对应栏目后在地址栏找到']"/>
|
||||
<Route author="DIYgod" example="/bjnews/realtime" path="/bjnews/:category" :paramsDesc="['新京报的栏目名,点击对应栏目后在地址栏找到']"/>
|
||||
|
||||
### 电子报
|
||||
|
||||
<Route author="MisteryMonster" example="/bjnews/epaper/A" path="/bjnews/epaper/:cat" :paramsDesc="['新京报叠名:`A`,`B`,`C`,`D`,特刊为`special`']"/>
|
||||
<Route author="MisteryMonster" example="/bjnews/epaper/A" path="/bjnews/epaper/:cat" :paramsDesc="['新京报叠名:`A`,`B`,`C`,`D`, 特刊为`special`']"/>
|
||||
|
||||
## 新浪科技
|
||||
|
||||
@@ -739,7 +873,7 @@ category 对应的关键词有
|
||||
|
||||
### 新闻专题
|
||||
|
||||
<Route author="nczitzk" example="/cctv-special/315" path="/cctv-special/:id?" :paramsDesc="['专题 id,可在对应专题页 URL 中找到,默认为 `315` 即 3·15晚会']">
|
||||
<Route author="nczitzk" example="/cctv-special/315" path="/cctv-special/:id?" :paramsDesc="['专题 id,可在对应专题页 URL 中找到,默认为 `315` 即 3·15 晚会']">
|
||||
|
||||
::: tip 提示
|
||||
|
||||
@@ -769,6 +903,10 @@ category 对应的关键词有
|
||||
|
||||
<Route author="xfangbao" example="/xwlb" path="/xwlb/index" />
|
||||
|
||||
### 央视网图片《镜象》
|
||||
|
||||
<Route author="nczitzk" example="/cctv/photo/jx" path="/cctv/photo/jx" />
|
||||
|
||||
## 朝日新聞中文網(繁體中文版)
|
||||
|
||||
### 新聞分類
|
||||
@@ -896,3 +1034,15 @@ category 对应的关键词有
|
||||
### 九江新闻
|
||||
|
||||
<Route author="jjlzg" example="/fjnews/jjnews" path="/fjnews/jjnews"/>
|
||||
|
||||
## 自由亚洲电台
|
||||
|
||||
<Route author="zphw" example="/rfa/mandarin" path="/rfa/:language?/:channel?/:subChannel?" :paramsDesc="['语言,默认 English', '频道', '子频道(如存在)']" />
|
||||
|
||||
通过指定频道参数,提供比官方源更佳的阅读体验。
|
||||
|
||||
参数均可在官网获取,如:
|
||||
|
||||
`https://www.rfa.org/cantonese/news` 对应 `/rfa/cantonese/news`
|
||||
|
||||
`https://www.rfa.org/cantonese/news/htm` 对应 `/rfa/cantonese/news/htm`
|
||||
|
||||
+135
-2
@@ -28,6 +28,12 @@ pageClass: routes
|
||||
|
||||
<Route author="exuanbo" example="/polimi/news" path="/polimi/news/:language?" :paramsDesc="['English language code en']" />
|
||||
|
||||
## UTDallas
|
||||
|
||||
### International Student Services
|
||||
|
||||
<Route author="Chang4Tech" example="/utdallas/isso" path="/utdallas/isso" />
|
||||
|
||||
## 安徽工业大学
|
||||
|
||||
### 教务处
|
||||
@@ -226,7 +232,7 @@ pageClass: routes
|
||||
|
||||
### BTBYR 趣味盒
|
||||
|
||||
<Route author="prnake" example="/bupt/funbox" path="/bupt/funbox" />
|
||||
<Route author="prnake" example="/bupt/funbox" path="/bupt/funbox" selfhost="1"/>
|
||||
::: warning 注意
|
||||
|
||||
由于需要登陆 BTBYR 后的 Cookie 值,所以只能自建,并且部署和订阅端均需支持 IPV6 网络或使用镜像站点。
|
||||
@@ -386,6 +392,14 @@ xskb1 对应 <http://www.auto.uestc.edu.cn/index/xskb1.htm>
|
||||
|
||||
</Route>
|
||||
|
||||
### 研究生院
|
||||
|
||||
<Route author="huyyi" example="/uestc/gr" path="/uestc/gr" />
|
||||
|
||||
### 信息与通信工程学院
|
||||
|
||||
<Route author="huyyi" example="/uestc/sice" path="/uestc/sice" />
|
||||
|
||||
## 东北大学
|
||||
|
||||
### 东北大学新闻网
|
||||
@@ -440,6 +454,22 @@ xskb1 对应 <http://www.auto.uestc.edu.cn/index/xskb1.htm>
|
||||
|
||||
</Route>
|
||||
|
||||
## 复旦大学继续教育学院
|
||||
|
||||
### 成人夜大通知公告
|
||||
|
||||
<Route author="mrbruce516" example="/fudan/cce" path="/fudan/cce" />
|
||||
|
||||
## 福州大学
|
||||
|
||||
### 教务处教学通知
|
||||
|
||||
<Route author="Lao-Liu233" example="/fzu/jxtz" path="/fzu/jxtz"/>
|
||||
|
||||
### 教务处专家讲座
|
||||
|
||||
<Route author="Lao-Liu233" example="/fzu/zjjz" path="/fzu/zjjz"/>
|
||||
|
||||
## 广东工业大学
|
||||
|
||||
### 校内新闻网
|
||||
@@ -615,6 +645,18 @@ category 列表:
|
||||
部分文章需要经过统一身份认证后才能阅读全文。
|
||||
:::
|
||||
|
||||
## 哈尔滨工业大学(深圳)
|
||||
|
||||
### 哈尔滨工业大学(深圳) - 新闻中心
|
||||
|
||||
<Route author="yx1302317313" example="/hitsz/article/id-74" path="/hitsz/article/:category?" :paramsDesc="['分类名,默认为通知公告']" >
|
||||
|
||||
| 校区要闻 | 媒体报道 | 通知公告 | 综合新闻 | 校园动态 | 讲座论坛 | 热点专题 |
|
||||
| -------- | -------- | -------- | -------- | -------- | -------- | -------- |
|
||||
| id-116 | id-80 | id-74 | id-75 | id-77 | id-78 | id-79 |
|
||||
|
||||
</Route>
|
||||
|
||||
## 哈尔滨工业大学(威海)
|
||||
|
||||
### 今日工大 - 通知公告
|
||||
@@ -833,6 +875,8 @@ jsjxy.hbut.edu.cn 证书链不全,自建 RSSHub 可设置环境变量 NODE_TLS
|
||||
| -------- | -------- |
|
||||
| tt | yw |
|
||||
|
||||
</Route>
|
||||
|
||||
### 暨南大学校园时讯
|
||||
|
||||
<Route author="hang333" example="/jnu/xysx/yxsd" path="/jnu/xysx/:type" :paramDesc="['校园时讯类型']">
|
||||
@@ -841,6 +885,8 @@ jsjxy.hbut.edu.cn 证书链不全,自建 RSSHub 可设置环境变量 NODE_TLS
|
||||
| -------- | -------- |
|
||||
| yxsd | bmkx |
|
||||
|
||||
</Route>
|
||||
|
||||
## 江南大学
|
||||
|
||||
### 教务处通知
|
||||
@@ -934,10 +980,18 @@ jsjxy.hbut.edu.cn 证书链不全,自建 RSSHub 可设置环境变量 NODE_TLS
|
||||
|
||||
## 马萨诸塞大学 阿默斯特分校 (UMASS Amherst)
|
||||
|
||||
### 电子与计算机工程系新闻
|
||||
### 电子与计算机工程系
|
||||
|
||||
#### 新闻
|
||||
|
||||
<Route author="gammapi" example="/umass/amherst/ecenews" path="/umass/amherst/ecenews" radar="1" rssbud="1"/>
|
||||
|
||||
#### 研讨会
|
||||
|
||||
<Route author="gammapi" example="/umass/amherst/eceseminar" path="/umass/amherst/eceseminar" radar="1" rssbud="1"/>
|
||||
|
||||
注:[源站](https://ece.umass.edu/seminar)在未公布研讨会计划时会清空页面导致 Rsshub 抓取不到内容,此属正常现象。
|
||||
|
||||
### 信息与计算机科学系新闻
|
||||
|
||||
<Route author="gammapi" example="/umass/amherst/csnews" path="/umass/amherst/csnews" radar="1" rssbud="1"/>
|
||||
@@ -1598,6 +1652,19 @@ type 列表:
|
||||
|
||||
</Route>
|
||||
|
||||
## 武汉纺织大学
|
||||
|
||||
### 信息门户公告
|
||||
|
||||
<Route author="Loyio" example="/wtu/2" path="/wtu/:type"
|
||||
:paramsDesc="['公告类型, 详见表格']">
|
||||
|
||||
| 公告类型 | 通知公告 | 教务信息 | 科研动态 |
|
||||
| -------- | -------- | -------- | -------- |
|
||||
| 参数 | 1 | 2 | 3 |
|
||||
|
||||
</Route>
|
||||
|
||||
## 西安电子科技大学
|
||||
|
||||
### 教务处
|
||||
@@ -1641,6 +1708,20 @@ type 列表:
|
||||
|
||||
<Route author="nczitzk" example="/xjtu/gs/tzgg" path="/xjtu/gs/tzgg" />
|
||||
|
||||
## 西北工业大学
|
||||
|
||||
### 翱翔门户
|
||||
|
||||
<Route author="WhoIsSure" example="/nwpu/10000" path="/nwpu/:column" :paramsDesc="['栏目ID']">
|
||||
|
||||
栏目 ID
|
||||
|
||||
| 咨询中心 | 通知公告 | 校内新闻 | 校务公开 | 历史文件查询 | 教育教学 | 学术交流 | 学院动态 | 部门动态 |
|
||||
| -------- | -------- | -------- | -------- | ------------ | -------- | -------- | -------- | -------- |
|
||||
| 10000 | 10001 | 10002 | 10003 | 10004 | 10005 | 10006 | 10007 | 10008 |
|
||||
|
||||
</Route>
|
||||
|
||||
## 西南财经大学
|
||||
|
||||
### 经济信息工程学院
|
||||
@@ -1685,6 +1766,20 @@ type 列表:
|
||||
|
||||
</Route>
|
||||
|
||||
## 信阳师范学院
|
||||
|
||||
### 高等教育自学考试办公室
|
||||
|
||||
<Route author="VxRain" example="/xynu/zkb/zkzx" path="/xynu/zkb/:category" :paramsDesc="['分类ID']">
|
||||
|
||||
分类 ID(如果请求的分类 ID 在不存在下表中,默认请求`zkzx`)
|
||||
|
||||
| 主考专业 | 规章制度 | 实践课程 | 毕业论文 | 学士学位 | 自考毕业 | 自考教材 | 自考指南 | 联系我们 | 自考资讯 | 报名指南 | 日程安排 | 新生入门 | 转考免考 | 复习资料 |
|
||||
| -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- |
|
||||
| zkzy | gzzd | sjkc | bylw | xsxw | zkby | zkjc | zkzn | lxwm | zkzx | bmzn | rcap | xsrm | zkmk | fxzl |
|
||||
|
||||
</Route>
|
||||
|
||||
## 扬州大学
|
||||
|
||||
### 官网消息
|
||||
@@ -1906,6 +2001,10 @@ type 列表:
|
||||
|
||||
## 中国地质大学 (武汉)
|
||||
|
||||
### 今日文章 - 包含全校网站最新通知
|
||||
|
||||
<Route author="Dorad" example="/cug/news" path="/cug/news" />
|
||||
|
||||
### 研究生院综合通知公告
|
||||
|
||||
<Route author="sanmmm" example="/cug/graduate" path="/cug/graduate" />
|
||||
@@ -1918,6 +2017,14 @@ type 列表:
|
||||
|
||||
<Route author="chunibyo-wly" example="/cug/xgxy" path="/cug/xgxy" />
|
||||
|
||||
### 工程学院
|
||||
|
||||
<Route author="Dorad" example="/cug/gcxy/1" path="/cug/gcxy/:type" />
|
||||
|
||||
| 所有 | 学院新闻 | 通知公告 | 党建工作 | 学术动态 | 本科生教育 | 研究生教育 | 教工之家 |
|
||||
| ---- | -------- | -------- | -------- | -------- | ---------- | ---------- | -------- |
|
||||
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|
||||
|
||||
## 中国海洋大学
|
||||
|
||||
### 信息科学与工程学院
|
||||
@@ -1948,6 +2055,8 @@ type 列表:
|
||||
| ------ | ------ | ------ | ------ |
|
||||
| jx | ky | gl | fw |
|
||||
|
||||
</Route>
|
||||
|
||||
### 教务处通知新闻
|
||||
|
||||
<Route author="hang333" example="/ustc/jwc/info" path="/ustc/jwc/:type?" :paramsDesc="['可选,默认显示所有种类']">
|
||||
@@ -1956,6 +2065,8 @@ type 列表:
|
||||
| ---- | -------- | ---- | -------- |
|
||||
| info | teaching | exam | exchange |
|
||||
|
||||
</Route>
|
||||
|
||||
## 中国科学院
|
||||
|
||||
### 成果转化
|
||||
@@ -2116,6 +2227,28 @@ type 列表:
|
||||
|
||||
</Route>
|
||||
|
||||
## 重庆理工大学
|
||||
|
||||
### 学校通知
|
||||
|
||||
<Route author="Colin-XKL" example="/cqut/news" path="/cqut/news" radar="1"/>
|
||||
|
||||
### 图书馆通知
|
||||
|
||||
<Route author="Colin-XKL" example="/cqut/libnews" path="/cqut/libnews" radar="1"/>
|
||||
|
||||
## 重庆文理学院
|
||||
|
||||
### 通知公告
|
||||
|
||||
<Route author="Fatpandac" example="/cqwu/news/academiceve" path="/cqwu/news/:type?" :paramsDesc="['可选,默认为 academiceve ']" radar="1">
|
||||
|
||||
| 通知公告 | 学术活动公告 |
|
||||
| -------- | ------------ |
|
||||
| notify | academiceve |
|
||||
|
||||
</Route>
|
||||
|
||||
## 中山大学
|
||||
|
||||
### 数据科学与计算机学院动态
|
||||
|
||||
@@ -48,7 +48,6 @@ app.context.debug = {
|
||||
etag: 0,
|
||||
paths: [],
|
||||
routes: [],
|
||||
ips: [],
|
||||
errorPaths: [],
|
||||
errorRoutes: [],
|
||||
};
|
||||
|
||||
+26
-8
@@ -39,16 +39,13 @@ const calculateValue = () => {
|
||||
ua: envs.UA || 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',
|
||||
listenInaddrAny: envs.LISTEN_INADDR_ANY || 1, // 是否允许公网连接,取值 0 1
|
||||
requestRetry: parseInt(envs.REQUEST_RETRY) || 2, // 请求失败重试次数
|
||||
// 是否显示 Debug 信息,取值 boolean 'false' 'key' ,取值为 'false' false 时永远不显示,取值为 'key' 时带上 ?debug=key 显示
|
||||
debugInfo: envs.DEBUG_INFO || true,
|
||||
requestTimeout: parseInt(envs.REQUEST_TIMEOUT) || 30000, // Milliseconds to wait for the server to end the response before aborting the request
|
||||
// 是否显示 Debug 信息,取值 'true' 'false' 'some_string' ,取值为 'true' 时永久显示,取值为 'false' 时永远隐藏,取值为 'some_string' 时请求带上 '?debug=some_string' 显示
|
||||
debugInfo: envs.DEBUG_INFO || 'true',
|
||||
disallowRobot: envs.DISALLOW_ROBOT !== '0' && envs.DISALLOW_ROBOT !== 'false',
|
||||
titleLengthLimit: parseInt(envs.TITLE_LENGTH_LIMIT) || 150,
|
||||
redis: {
|
||||
url: envs.REDIS_URL || 'redis://localhost:6379/',
|
||||
options: {
|
||||
// 支持这些参数 https://github.com/NodeRedis/node_redis#options-object-properties
|
||||
password: envs.REDIS_PASSWORD || null,
|
||||
},
|
||||
},
|
||||
nodeName: envs.NODE_NAME,
|
||||
suffix: envs.SUFFIX,
|
||||
@@ -89,6 +86,9 @@ const calculateValue = () => {
|
||||
yuque: {
|
||||
token: envs.YUQUE_TOKEN,
|
||||
},
|
||||
zhihu: {
|
||||
cookies: envs.ZHIHU_COOKIES,
|
||||
},
|
||||
puppeteerWSEndpoint: envs.PUPPETEER_WS_ENDPOINT,
|
||||
loggerLevel: envs.LOGGER_LEVEL || 'info',
|
||||
proxyUri: envs.PROXY_URI,
|
||||
@@ -99,6 +99,7 @@ const calculateValue = () => {
|
||||
auth: envs.PROXY_AUTH,
|
||||
url_regex: envs.PROXY_URL_REGEX || '.*',
|
||||
},
|
||||
allowOrigin: envs.ALLOW_ORIGIN,
|
||||
blacklist: envs.BLACKLIST && envs.BLACKLIST.split(','),
|
||||
whitelist: envs.WHITELIST && envs.WHITELIST.split(','),
|
||||
allowLocalhost: envs.ALLOW_LOCALHOST,
|
||||
@@ -107,7 +108,10 @@ const calculateValue = () => {
|
||||
email: {
|
||||
config: email_config,
|
||||
},
|
||||
sentry: envs.SENTRY,
|
||||
sentry: {
|
||||
dsn: envs.SENTRY,
|
||||
routeTimeout: parseInt(envs.SENTRY_ROUTE_TIMEOUT) || 30000,
|
||||
},
|
||||
chuiniu: {
|
||||
member: envs.CHUINIU_MEMBER,
|
||||
},
|
||||
@@ -136,7 +140,7 @@ const calculateValue = () => {
|
||||
cookies: discuz_cookies,
|
||||
},
|
||||
scihub: {
|
||||
host: envs.SCIHUB_HOST || 'https://sci-hub.tw/',
|
||||
host: envs.SCIHUB_HOST || 'https://sci-hub.se/',
|
||||
},
|
||||
hotlink: {
|
||||
template: envs.HOTLINK_TEMPLATE,
|
||||
@@ -160,6 +164,10 @@ const calculateValue = () => {
|
||||
device_id: envs.XIAOYUZHOU_ID,
|
||||
refresh_token: envs.XIAOYUZHOU_TOKEN,
|
||||
},
|
||||
miniflux: {
|
||||
instance: envs.MINIFLUX_INSTANCE || 'https://reader.miniflux.app',
|
||||
token: envs.MINIFLUX_TOKEN || '',
|
||||
},
|
||||
nga: {
|
||||
uid: envs.NGA_PASSPORT_UID,
|
||||
cid: envs.NGA_PASSPORT_CID,
|
||||
@@ -173,6 +181,16 @@ const calculateValue = () => {
|
||||
game4399: {
|
||||
cookie: envs.GAME_4399,
|
||||
},
|
||||
dida365: {
|
||||
username: envs.DIDA365_USERNAME,
|
||||
password: envs.DIDA365_PASSWORD,
|
||||
},
|
||||
scboy: {
|
||||
token: envs.SCBOY_BBS_TOKEN,
|
||||
},
|
||||
wordpress: {
|
||||
cdnUrl: envs.WORDPRESS_CDN,
|
||||
},
|
||||
};
|
||||
};
|
||||
calculateValue();
|
||||
|
||||
+33
-65
@@ -1,25 +1,19 @@
|
||||
const wrapper = require('co-redis');
|
||||
const Redis = require('redis');
|
||||
const Redis = require('ioredis');
|
||||
const Lru = require('lru-cache');
|
||||
const md5 = require('@/utils/md5');
|
||||
const config = require('@/config').value;
|
||||
const logger = require('@/utils/logger');
|
||||
|
||||
module.exports = function (app, options = {}) {
|
||||
module.exports = function (app) {
|
||||
let available = false;
|
||||
|
||||
const { prefix = 'koa-redis-cache:', expire = config.cache.routeExpire, passParam = '', maxLength = Infinity, ignoreQuery = true } = options;
|
||||
|
||||
const globalCache = {
|
||||
get: null,
|
||||
set: null,
|
||||
};
|
||||
|
||||
if (config.cache.type === 'redis') {
|
||||
const { host: redisHost = 'localhost', port: redisPort = 6379, url: redisUrl = `redis://${redisHost}:${redisPort}/`, options: redisOptions = {} } = config.redis || {};
|
||||
if (!redisOptions.password) {
|
||||
delete redisOptions.password;
|
||||
}
|
||||
const redisClient = wrapper(Redis.createClient(redisUrl, redisOptions));
|
||||
const redisClient = new Redis(config.redis.url);
|
||||
|
||||
redisClient.on('error', (error) => {
|
||||
available = false;
|
||||
logger.error('Redis error: ', error);
|
||||
@@ -54,7 +48,7 @@ module.exports = function (app, options = {}) {
|
||||
value = JSON.stringify(value);
|
||||
}
|
||||
if (key) {
|
||||
redisClient.setex(key, maxAge, value);
|
||||
redisClient.set(key, value, 'NX', 'EX', maxAge);
|
||||
}
|
||||
},
|
||||
client: redisClient,
|
||||
@@ -69,13 +63,13 @@ module.exports = function (app, options = {}) {
|
||||
globalCache.set = app.context.cache.set;
|
||||
} else if (config.cache.type === 'memory') {
|
||||
const pageCache = new Lru({
|
||||
maxAge: expire * 1000,
|
||||
max: maxLength,
|
||||
maxAge: config.cache.routeExpire * 1000,
|
||||
max: Infinity,
|
||||
});
|
||||
|
||||
const routeCache = new Lru({
|
||||
maxAge: expire * 1000,
|
||||
max: maxLength,
|
||||
maxAge: config.cache.routeExpire * 1000,
|
||||
max: Infinity,
|
||||
updateAgeOnGet: true,
|
||||
});
|
||||
|
||||
@@ -147,66 +141,40 @@ module.exports = function (app, options = {}) {
|
||||
return v;
|
||||
};
|
||||
|
||||
async function getCache(ctx, key) {
|
||||
const value = await globalCache.get(key);
|
||||
let ok = false;
|
||||
|
||||
if (value) {
|
||||
ctx.response.status = 200;
|
||||
if (config.cache.type === 'redis') {
|
||||
ctx.response.set({
|
||||
'X-Koa-Redis-Cache': 'true',
|
||||
});
|
||||
} else if (config.cache.type === 'memory') {
|
||||
ctx.response.set({
|
||||
'X-Koa-Memory-Cache': 'true',
|
||||
});
|
||||
}
|
||||
try {
|
||||
ctx.state.data = JSON.parse(value);
|
||||
} catch (e) {
|
||||
ctx.state.data = {};
|
||||
}
|
||||
ok = true;
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
async function setCache(ctx, key, expire) {
|
||||
if (ctx.response.get('Cache-Control') !== 'no-cache' && ctx.state && ctx.state.data) {
|
||||
ctx.state.data.lastBuildDate = new Date().toUTCString();
|
||||
const body = JSON.stringify(ctx.state.data);
|
||||
await globalCache.set(key, body, expire);
|
||||
}
|
||||
}
|
||||
|
||||
return async function cache(ctx, next) {
|
||||
const { url, path } = ctx.request;
|
||||
const resolvedPrefix = typeof prefix === 'function' ? prefix.call(ctx, ctx) : prefix;
|
||||
const key = resolvedPrefix + md5(ignoreQuery ? path : url);
|
||||
const key = 'koa-redis-cache:' + md5(ctx.request.path);
|
||||
|
||||
if (!available || (passParam && ctx.request.query[passParam])) {
|
||||
if (!available) {
|
||||
return await next();
|
||||
}
|
||||
|
||||
let ok = false;
|
||||
try {
|
||||
ok = await getCache(ctx, key);
|
||||
const value = await globalCache.get(key);
|
||||
|
||||
if (value) {
|
||||
ctx.response.status = 200;
|
||||
if (config.cache.type === 'redis') {
|
||||
ctx.response.set({
|
||||
'X-Koa-Redis-Cache': 'true',
|
||||
});
|
||||
} else if (config.cache.type === 'memory') {
|
||||
ctx.response.set({
|
||||
'X-Koa-Memory-Cache': 'true',
|
||||
});
|
||||
}
|
||||
ctx.state.data = JSON.parse(value);
|
||||
return;
|
||||
}
|
||||
} catch (e) {
|
||||
ok = false;
|
||||
}
|
||||
if (ok) {
|
||||
return;
|
||||
//
|
||||
}
|
||||
|
||||
await next();
|
||||
|
||||
try {
|
||||
const trueExpire = expire;
|
||||
setCache(ctx, key, trueExpire);
|
||||
} catch (e) {
|
||||
//
|
||||
if (ctx.response.get('Cache-Control') !== 'no-cache' && ctx.state && ctx.state.data) {
|
||||
ctx.state.data.lastBuildDate = new Date().toUTCString();
|
||||
const body = JSON.stringify(ctx.state.data);
|
||||
await globalCache.set(key, body, config.cache.routeExpire);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
@@ -4,11 +4,6 @@ module.exports = async (ctx, next) => {
|
||||
}
|
||||
ctx.debug.paths[ctx.request.path]++;
|
||||
|
||||
const ip = ctx.ips[0] || ctx.ip;
|
||||
if (!ctx.debug.ips[ip]) {
|
||||
ctx.debug.ips[ip] = 0;
|
||||
}
|
||||
ctx.debug.ips[ip]++;
|
||||
ctx.debug.request++;
|
||||
|
||||
await next();
|
||||
|
||||
@@ -5,6 +5,7 @@ const headers = {
|
||||
'Access-Control-Allow-Methods': 'GET',
|
||||
'Content-Type': 'application/xml; charset=utf-8',
|
||||
'Cache-Control': `public, max-age=${config.cache.routeExpire}`,
|
||||
'X-Content-Type-Options': 'nosniff',
|
||||
};
|
||||
if (config.nodeName) {
|
||||
headers['RSSHub-Node'] = config.nodeName;
|
||||
@@ -14,7 +15,7 @@ module.exports = async (ctx, next) => {
|
||||
logger.info(`${ctx.url}, user IP: ${ctx.ips[0] || ctx.ip}`);
|
||||
ctx.set(headers);
|
||||
ctx.set({
|
||||
'Access-Control-Allow-Origin': `${ctx.host}`,
|
||||
'Access-Control-Allow-Origin': `${config.allowOrigin || ctx.host}`,
|
||||
});
|
||||
|
||||
await next();
|
||||
|
||||
@@ -4,9 +4,9 @@ const Sentry = require('@sentry/node');
|
||||
const art = require('art-template');
|
||||
const path = require('path');
|
||||
|
||||
if (config.sentry) {
|
||||
if (config.sentry.dsn) {
|
||||
Sentry.init({
|
||||
dsn: config.sentry,
|
||||
dsn: config.sentry.dsn,
|
||||
});
|
||||
Sentry.configureScope((scope) => {
|
||||
scope.setTag('node_name', config.nodeName);
|
||||
@@ -17,7 +17,16 @@ if (config.sentry) {
|
||||
|
||||
module.exports = async (ctx, next) => {
|
||||
try {
|
||||
const time = +new Date();
|
||||
await next();
|
||||
if (config.sentry.dsn && +new Date() - time >= config.sentry.routeTimeout) {
|
||||
Sentry.withScope((scope) => {
|
||||
scope.setTag('route', ctx._matchedRoute);
|
||||
scope.setTag('name', ctx.request.path.split('/')[1]);
|
||||
scope.addEventProcessor((event) => Sentry.Handlers.parseRequest(event, ctx.request));
|
||||
Sentry.captureException(new Error('Route Timeout'));
|
||||
});
|
||||
}
|
||||
} catch (err) {
|
||||
let message = err;
|
||||
if (err.name && (err.name === 'HTTPError' || err.name === 'RequestError')) {
|
||||
@@ -140,7 +149,7 @@ Please ensure you have deployed the [master branch](https://github.com/DIYgod/RS
|
||||
}
|
||||
}
|
||||
|
||||
if (config.sentry) {
|
||||
if (config.sentry.dsn) {
|
||||
Sentry.withScope((scope) => {
|
||||
scope.setTag('route', ctx._matchedRoute);
|
||||
scope.setTag('name', ctx.request.path.split('/')[1]);
|
||||
|
||||
+13
-10
@@ -1,4 +1,4 @@
|
||||
const he = require('he');
|
||||
const entities = require('entities');
|
||||
const mercury_parser = require('@postlight/mercury-parser');
|
||||
const cheerio = require('cheerio');
|
||||
const OpenCC = require('opencc');
|
||||
@@ -24,14 +24,14 @@ module.exports = async (ctx, next) => {
|
||||
ctx.state.data.item = ctx.state.data.item || [];
|
||||
|
||||
// decode HTML entities
|
||||
ctx.state.data.title && (ctx.state.data.title = he.decode(ctx.state.data.title + ''));
|
||||
ctx.state.data.description && (ctx.state.data.description = he.decode(ctx.state.data.description + ''));
|
||||
ctx.state.data.title && (ctx.state.data.title = entities.decodeXML(ctx.state.data.title + ''));
|
||||
ctx.state.data.description && (ctx.state.data.description = entities.decodeXML(ctx.state.data.description + ''));
|
||||
|
||||
// sort items
|
||||
ctx.state.data.item = ctx.state.data.item.sort((a, b) => +new Date(b.pubDate || 0) - +new Date(a.pubDate || 0));
|
||||
|
||||
ctx.state.data.item.forEach((item) => {
|
||||
item.title && (item.title = he.decode(item.title + ''));
|
||||
const handleItem = async (item) => {
|
||||
item.title && (item.title = entities.decodeXML(item.title + ''));
|
||||
|
||||
// handle pubDate
|
||||
if (item.pubDate) {
|
||||
@@ -111,9 +111,12 @@ module.exports = async (ctx, next) => {
|
||||
$ele.removeAttr(e);
|
||||
});
|
||||
});
|
||||
item.description = he.decode($('body').html() + '') + (config.suffix || '');
|
||||
item.description = entities.decodeXML($('body').html() + '') + (config.suffix || '');
|
||||
}
|
||||
});
|
||||
return item;
|
||||
};
|
||||
|
||||
ctx.state.data.item = await Promise.all(ctx.state.data.item.map(handleItem));
|
||||
|
||||
if (ctx.query) {
|
||||
// limit
|
||||
@@ -148,7 +151,7 @@ module.exports = async (ctx, next) => {
|
||||
const description = item.description || title;
|
||||
const author = item.author || '';
|
||||
let isFilter = true;
|
||||
ctx.query.filter_title && (isFilter = isFilter && title.match(makeRegex(ctx.query.filter_title)));
|
||||
ctx.query.filter_title && (isFilter = title.match(makeRegex(ctx.query.filter_title)));
|
||||
ctx.query.filter_description && (isFilter = isFilter && description.match(makeRegex(ctx.query.filter_description)));
|
||||
ctx.query.filter_author && (isFilter = isFilter && author.match(makeRegex(ctx.query.filter_author)));
|
||||
return isFilter;
|
||||
@@ -165,7 +168,7 @@ module.exports = async (ctx, next) => {
|
||||
const description = item.description || title;
|
||||
const author = item.author || '';
|
||||
let isFilter = true;
|
||||
ctx.query.filterout_title && (isFilter = isFilter && !title.match(makeRegex(ctx.query.filterout_title)));
|
||||
ctx.query.filterout_title && (isFilter = !title.match(makeRegex(ctx.query.filterout_title)));
|
||||
ctx.query.filterout_description && (isFilter = isFilter && !description.match(makeRegex(ctx.query.filterout_description)));
|
||||
ctx.query.filterout_author && (isFilter = isFilter && !author.match(makeRegex(ctx.query.filterout_author)));
|
||||
return isFilter;
|
||||
@@ -221,7 +224,7 @@ module.exports = async (ctx, next) => {
|
||||
// scihub
|
||||
if (ctx.query.scihub) {
|
||||
ctx.state.data.item.map((item) => {
|
||||
item.link = item.doi ? `https://sci-hub.tw/${item.doi}` : `https://sci-hub.tw/${item.link}`;
|
||||
item.link = item.doi ? `${config.scihub.host}${item.doi}` : `${config.scihub.host}${item.link}`;
|
||||
return item;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,16 +1,20 @@
|
||||
const art = require('art-template');
|
||||
const path = require('path');
|
||||
const config = require('@/config').value;
|
||||
const typeRegrx = /\.(atom|rss)$/;
|
||||
const unsupportedRegrx = /\.json$/;
|
||||
const typeRegex = /\.(atom|rss)$/;
|
||||
const unsupportedRegex = /\.json$/;
|
||||
|
||||
module.exports = async (ctx, next) => {
|
||||
if (ctx.request.path.match(unsupportedRegrx)) {
|
||||
if (ctx.request.path.match(unsupportedRegex)) {
|
||||
throw Error('<b>JSON output had been removed, see: <a href="https://github.com/DIYgod/RSSHub/issues/1114">https://github.com/DIYgod/RSSHub/issues/1114</a></b>');
|
||||
}
|
||||
|
||||
ctx.state.type = ctx.request.path.match(typeRegrx) || ['', ''];
|
||||
ctx.request.path = ctx.request.path.replace(typeRegrx, '');
|
||||
if (ctx.headers['user-agent'] && ctx.headers['user-agent'].includes('Reeder')) {
|
||||
ctx.request.path = ctx.request.path.replace(/.com$/, '');
|
||||
}
|
||||
|
||||
ctx.state.type = ctx.request.path.match(typeRegex) || ['', ''];
|
||||
ctx.request.path = ctx.request.path.replace(typeRegex, '');
|
||||
|
||||
await next();
|
||||
|
||||
|
||||
+589
-62
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,37 @@
|
||||
const got = require('@/utils/got');
|
||||
const cheerio = require('cheerio');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const type = ctx.params.type || 'new';
|
||||
const key = type === 'day' ? ctx.params.key.slice(0, 4) + '/' + ctx.params.key.slice(4, 6) + '/' + ctx.params.key.slice(6, 8) : ctx.params.key || '';
|
||||
const link = 'https://www.141jav.com' + `/${type === 'day' ? '' : type}${type === 'new' ? '' : '/' + key}`.replace('//', '/');
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: link,
|
||||
});
|
||||
|
||||
const $ = cheerio.load(response.data);
|
||||
const list = $('div.columns');
|
||||
|
||||
let itemPicUrl;
|
||||
|
||||
ctx.state.data = {
|
||||
title: `141jav - ${type} ${key}`,
|
||||
link: link,
|
||||
item:
|
||||
list &&
|
||||
list
|
||||
.map((index, item) => {
|
||||
item = $(item);
|
||||
itemPicUrl = item.find('img').attr('src');
|
||||
return {
|
||||
title: '【' + item.find('div.card-content.is-flex > h5 > a').text() + '】' + item.find('div.card-content.is-flex > h5 > span').text(),
|
||||
description: `<img src="${itemPicUrl}"/><br/>Time: ${item.find('p.subtitle.is-6 > a').text()}<br/>Desc: ${item.find('p.level.has-text-grey-dark').text()}`,
|
||||
link: item.find('div.card-content.is-flex > h5 > a').attr('href'),
|
||||
enclosure_url: item.find('div.card-content.is-flex > a').attr('href'),
|
||||
enclosure_type: 'application/x-bittorrent',
|
||||
};
|
||||
})
|
||||
.get(),
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,37 @@
|
||||
const got = require('@/utils/got');
|
||||
const cheerio = require('cheerio');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const type = ctx.params.type || 'new';
|
||||
const key = type === 'day' ? ctx.params.key.slice(0, 4) + '/' + ctx.params.key.slice(4, 6) + '/' + ctx.params.key.slice(6, 8) : ctx.params.key || '';
|
||||
const link = 'https://www.141ppv.com' + `/${type === 'day' ? '' : type}${type === 'new' ? '' : '/' + key}`.replace('//', '/');
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: link,
|
||||
});
|
||||
|
||||
const $ = cheerio.load(response.data);
|
||||
const list = $('div.columns');
|
||||
|
||||
let itemPicUrl;
|
||||
|
||||
ctx.state.data = {
|
||||
title: `141ppv - ${type} ${key}`,
|
||||
link: link,
|
||||
item:
|
||||
list &&
|
||||
list
|
||||
.map((index, item) => {
|
||||
item = $(item);
|
||||
itemPicUrl = item.find('img').attr('src');
|
||||
return {
|
||||
title: '【' + item.find('div.card-content.is-flex > h5 > a').text() + '】' + item.find('div.card-content.is-flex > h5 > span').text(),
|
||||
description: `<img src="${itemPicUrl}"/><br/>Time: ${item.find('p.subtitle.is-6 > a').text()}<br/>Desc: ${item.find('p.level.has-text-grey-dark').text()}`,
|
||||
link: item.find('div.card-content.is-flex > h5 > a').attr('href'),
|
||||
enclosure_url: item.find('div.card-content.is-flex > a').attr('href'),
|
||||
enclosure_type: 'application/x-bittorrent',
|
||||
};
|
||||
})
|
||||
.get(),
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,53 @@
|
||||
const got = require('@/utils/got');
|
||||
const cheerio = require('cheerio');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const category = ctx.params.category || '';
|
||||
|
||||
const rootUrl = 'https://www.1point3acres.com';
|
||||
const currentUrl = `${rootUrl}/${category === '' ? 'BlogPosts' : `category/${category.replace(/-/g, '/')}`}`;
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: currentUrl,
|
||||
});
|
||||
const $ = cheerio.load(response.data);
|
||||
|
||||
const list = $('.mybloglist h2 a')
|
||||
.slice(0, 10)
|
||||
.map((_, item) => {
|
||||
item = $(item);
|
||||
return {
|
||||
title: item.text(),
|
||||
link: item.attr('href'),
|
||||
};
|
||||
})
|
||||
.get();
|
||||
|
||||
const items = await Promise.all(
|
||||
list.map(
|
||||
async (item) =>
|
||||
await ctx.cache.tryGet(item.link, async () => {
|
||||
const detailResponse = await got({
|
||||
method: 'get',
|
||||
url: item.link,
|
||||
});
|
||||
const content = cheerio.load(detailResponse.data);
|
||||
|
||||
content('h2, .meta_tags, .pagination, .subinfopost, #comments').remove();
|
||||
|
||||
item.description = content('.post').html();
|
||||
item.pubDate = new Date(detailResponse.data.match(/"datePublished":"(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\+00:00)","dateModified":/)[1]).toUTCString();
|
||||
|
||||
return item;
|
||||
})
|
||||
)
|
||||
);
|
||||
|
||||
const title = $('title').text().split(' | ')[0];
|
||||
|
||||
ctx.state.data = {
|
||||
title: `${title === 'BlogPosts' ? '全部' : title} - 一亩三分地论坛博客`,
|
||||
link: currentUrl,
|
||||
item: items,
|
||||
};
|
||||
};
|
||||
@@ -1,38 +1,50 @@
|
||||
const got = require('@/utils/got');
|
||||
const bbcode = require('bbcodejs');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const category = ctx.params.category;
|
||||
let url;
|
||||
let method;
|
||||
let description;
|
||||
let { title } = 'null';
|
||||
// eslint-disable-next-line eqeqeq
|
||||
if (title == 'null') {
|
||||
method = 'get';
|
||||
let title;
|
||||
if (category === 'new') {
|
||||
url = 'https://api.1point3acres.com/api/threads?type=new&pg=1&ps=20&includes=summary';
|
||||
title = '最新帖子';
|
||||
} else {
|
||||
url = 'https://api.1point3acres.com/api/threads?type=hot&pg=1&ps=20&includes=summary';
|
||||
title = '热门帖子';
|
||||
}
|
||||
// eslint-disable-next-line eqeqeq
|
||||
category == 'new'
|
||||
? ((url = 'https://api.1point3acres.com/api/threads?type=new&pg=1&ps=20&includes=last_reply'), (title = '最新帖子'))
|
||||
: ((url = 'https://api.1point3acres.com/api/threads?type=hot&pg=1&ps=20&includes=last_reply'), (title = '最热帖子'));
|
||||
const responseBasic = await got({
|
||||
method: method,
|
||||
method: 'get',
|
||||
url: url,
|
||||
});
|
||||
const data = responseBasic.data.threads;
|
||||
ctx.state.data = {
|
||||
title: `${title} - 一亩三分地`,
|
||||
link: `https://www.1point3acres.com/bbs/`,
|
||||
description: `${title} - 一亩三分地`,
|
||||
item: data.map((item) => {
|
||||
// eslint-disable-next-line eqeqeq
|
||||
item.last_reply.quote == '' ? (description = item.last_reply.message_bbcode) : (description = item.last_reply.quote);
|
||||
return {
|
||||
const bbcodeParser = new bbcode.Parser();
|
||||
|
||||
const items = await Promise.all(
|
||||
data.map(async (item) => {
|
||||
const result = {
|
||||
title: `${item.subject}`,
|
||||
// description: item.last_reply.message_bbcode,// + `<b>楼主:</b>` + item.author,
|
||||
description: description,
|
||||
// pubDate: new Date(item.submittime + ' GMT+8').toUTCString(),
|
||||
description: `${item.summary}...<br><br><small>作者 ${item.author} · 回复 ${item.replies} · 查看 ${item.views}</small>`,
|
||||
link: `https://instant.1point3acres.com/thread/${item.tid}`,
|
||||
};
|
||||
}),
|
||||
try {
|
||||
await ctx.cache.tryGet(item.link, async () => {
|
||||
const detail = await got({
|
||||
method: 'get',
|
||||
url: `https://api.1point3acres.com/instant/threads/${item.tid}`,
|
||||
referer: 'https://instant.1point3acres.com/',
|
||||
});
|
||||
|
||||
result.description = `${bbcodeParser.toHTML(detail.data.thread.message_bbcode)}<br><br><small>作者 ${item.author} · 回复 ${item.replies} · 查看 ${item.views}</small>`;
|
||||
});
|
||||
} catch (error) {
|
||||
// nothing
|
||||
}
|
||||
return result;
|
||||
})
|
||||
);
|
||||
ctx.state.data = {
|
||||
title: `一亩三分地 - ${title}`,
|
||||
link: `https://www.1point3acres.com/bbs/`,
|
||||
item: items,
|
||||
};
|
||||
};
|
||||
|
||||
@@ -3,6 +3,7 @@ const got = require('@/utils/got');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const url = `https://www.scientificamerican.com/podcast/60-second-science/`;
|
||||
const cover = `https://static.scientificamerican.com/sciam/cache/file/484FA146-8892-477F-B38D18775563CC9E_small.jpg`;
|
||||
|
||||
const res = await got.get(url);
|
||||
const $ = cheerio.load(res.data);
|
||||
@@ -28,10 +29,17 @@ module.exports = async (ctx) => {
|
||||
|
||||
capture('.transcript__close').remove();
|
||||
const intro = capture('.article-media__object').html() + '<br><br>';
|
||||
const contents = intro + capture('.transcript__inner').html();
|
||||
const contents =
|
||||
intro +
|
||||
capture('.transcript__inner')
|
||||
.html()
|
||||
.replace(/<p>\[?<em>\(?The above text.*this podcast.*?em.*?p>/g, '');
|
||||
const track = capture('.podcasts__media > div > a').attr('href');
|
||||
const single = {
|
||||
title,
|
||||
description: contents,
|
||||
enclosure_url: track,
|
||||
enclosure_type: 'audio/mpeg',
|
||||
link: address,
|
||||
guid: address,
|
||||
author: author,
|
||||
@@ -42,7 +50,10 @@ module.exports = async (ctx) => {
|
||||
})
|
||||
);
|
||||
ctx.state.data = {
|
||||
title: 'Transcripts of SA 60-Second Science',
|
||||
itunes_author: 'Scientific American',
|
||||
itunes_category: 'Science',
|
||||
image: cover,
|
||||
title: '60-Second Science',
|
||||
link: url,
|
||||
item: out,
|
||||
};
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
const got = require('@/utils/got');
|
||||
const cheerio = require('cheerio');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const id = ctx.params.id || 'chan1';
|
||||
const type = ctx.params.type || '';
|
||||
const keyword = ctx.params.keyword || '';
|
||||
|
||||
const rootUrl = 'https://club.6parkbbs.com';
|
||||
const indexUrl = `${rootUrl}/${id}/index.php`;
|
||||
const currentUrl = `${indexUrl}${type === '' || keyword === '' ? '' : type === 'gold' ? '?app=forum&act=gold' : `?action=search&act=threadsearch&app=forum&${type}=${keyword}&submit=${type === 'type' ? '查询' : '栏目搜索'}`}`;
|
||||
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: currentUrl,
|
||||
});
|
||||
|
||||
const $ = cheerio.load(response.data);
|
||||
|
||||
const list = $('#d_list ul li, #thread_list li, .t_l .t_subject')
|
||||
.slice(0, 10)
|
||||
.map((_, item) => {
|
||||
item = $(item);
|
||||
const a = item.find('a').eq(0);
|
||||
return {
|
||||
link: `${rootUrl}/${id}/${a.attr('href')}`,
|
||||
};
|
||||
})
|
||||
.get();
|
||||
|
||||
const items = await Promise.all(
|
||||
list.map(
|
||||
async (item) =>
|
||||
await ctx.cache.tryGet(item.link, async () => {
|
||||
const detailResponse = await got({
|
||||
method: 'get',
|
||||
url: item.link,
|
||||
});
|
||||
const content = cheerio.load(detailResponse.data);
|
||||
|
||||
item.title = content('title').text().replace(' -6park.com', '');
|
||||
item.author = detailResponse.data.match(/送交者: .*>(.*)<.*\[/)[1];
|
||||
item.pubDate = new Date(detailResponse.data.match(/于 (.*) 已读/)[1]).toUTCString();
|
||||
item.description = content('pre')
|
||||
.html()
|
||||
.replace(/<font color="#E6E6DD">6park.com<\/font>/g, '');
|
||||
|
||||
return item;
|
||||
})
|
||||
)
|
||||
);
|
||||
|
||||
ctx.state.data = {
|
||||
title: $('title').text(),
|
||||
link: currentUrl,
|
||||
item: items,
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,17 @@
|
||||
const Cheerio = require('cheerio');
|
||||
const got = require('got');
|
||||
async function loadArticle(link) {
|
||||
const resp = await got(link);
|
||||
const article = Cheerio.load(resp.body);
|
||||
const title = article('.entry-title').text();
|
||||
const entry_children = article('div.entry-content').children().toArray();
|
||||
const imgs = Cheerio.load(entry_children.shift()).text(); // 去除懒加载代码减少返回体积
|
||||
const txt = Cheerio.load(entry_children).html();
|
||||
return {
|
||||
title,
|
||||
description: imgs.concat(txt),
|
||||
pubDate: article('time')[0].attribs.datetime.replace('>', ''),
|
||||
link,
|
||||
};
|
||||
}
|
||||
module.exports = loadArticle;
|
||||
@@ -0,0 +1,28 @@
|
||||
const got = require('got');
|
||||
const Cheerio = require('cheerio');
|
||||
const { SUB_NAME_PREFIX, SUB_URL } = require('./const');
|
||||
const loadArticle = require('./article');
|
||||
module.exports = async (ctx) => {
|
||||
const { cat = '8kasianidol' } = ctx.params;
|
||||
const url = `${SUB_URL}category/${cat}/`;
|
||||
const resp = await got(url);
|
||||
const $ = Cheerio.load(resp.body);
|
||||
ctx.state.data = resp.body
|
||||
? {
|
||||
title: `${SUB_NAME_PREFIX}-${$('#wrap > div > div > div > div.sec-panel-head > h1 > span').text()}`,
|
||||
link: url,
|
||||
item: await Promise.all(
|
||||
Cheerio.load(resp.body)('#wrap > div > div > div > ul > li.item')
|
||||
.map((_, e) => {
|
||||
const { href } = Cheerio.load(e)('h2 > a')[0].attribs;
|
||||
return ctx.cache.tryGet(href, async () => loadArticle(href));
|
||||
})
|
||||
.toArray()
|
||||
),
|
||||
}
|
||||
: {
|
||||
title: `${SUB_NAME_PREFIX}-${cat}`,
|
||||
link: url,
|
||||
item: [{ title: '获取失败' }],
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,4 @@
|
||||
module.exports = {
|
||||
SUB_NAME_PREFIX: '8KCosplay',
|
||||
SUB_URL: 'https://www.8kcosplay.com/',
|
||||
};
|
||||
@@ -0,0 +1,27 @@
|
||||
const got = require('got');
|
||||
const Cheerio = require('cheerio');
|
||||
const { SUB_NAME_PREFIX, SUB_URL } = require('./const');
|
||||
const loadArticle = require('./article');
|
||||
const url = SUB_URL;
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const response = await got(url);
|
||||
ctx.state.data = {
|
||||
title: `${SUB_NAME_PREFIX}-最新`,
|
||||
link: url,
|
||||
item: response.body
|
||||
? await Promise.all(
|
||||
Cheerio.load(response.body)('#wrap > div > div > div > ul > li.item')
|
||||
.map((_, e) => {
|
||||
const { href } = Cheerio.load(e)('div > h2 > a')[0].attribs;
|
||||
return ctx.cache.tryGet(href, async () => loadArticle(href));
|
||||
})
|
||||
.toArray()
|
||||
)
|
||||
: [
|
||||
{
|
||||
title: '获取失败!',
|
||||
},
|
||||
],
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,51 @@
|
||||
const got = require('@/utils/got');
|
||||
const cheerio = require('cheerio');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const category = ctx.params.category || 'lxzn-yzjy';
|
||||
|
||||
const rootUrl = 'http://www.93.gov.cn';
|
||||
const currentUrl = `${rootUrl}/${category}`;
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: currentUrl,
|
||||
});
|
||||
|
||||
const $ = cheerio.load(response.data);
|
||||
|
||||
const list = $('li.clearfix a')
|
||||
.slice(0, 15)
|
||||
.map((_, item) => {
|
||||
item = $(item);
|
||||
return {
|
||||
title: item.text(),
|
||||
link: `${rootUrl}${item.attr('href')}`,
|
||||
pubDate: new Date(item.next().text()).toUTCString(),
|
||||
};
|
||||
})
|
||||
.get();
|
||||
|
||||
const items = await Promise.all(
|
||||
list.map(
|
||||
async (item) =>
|
||||
await ctx.cache.tryGet(item.link, async () => {
|
||||
const detailResponse = await got({
|
||||
method: 'get',
|
||||
url: item.link,
|
||||
});
|
||||
const content = cheerio.load(detailResponse.data);
|
||||
|
||||
item.description = content('.pageContent').html();
|
||||
item.author = content('.pageTitle ul li').eq(1).text().replace('来源:', '');
|
||||
|
||||
return item;
|
||||
})
|
||||
)
|
||||
);
|
||||
|
||||
ctx.state.data = {
|
||||
title: $('title').text(),
|
||||
link: currentUrl,
|
||||
item: items,
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,68 @@
|
||||
const got = require('@/utils/got');
|
||||
const cheerio = require('cheerio');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const rootUrl = 'https://amturing.acm.org';
|
||||
const currentUrl = `${rootUrl}/byyear.cfm`;
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: currentUrl,
|
||||
});
|
||||
|
||||
const $ = cheerio.load(response.data);
|
||||
|
||||
const items = await Promise.all(
|
||||
$('.award-winners-list li')
|
||||
.slice(0, 5)
|
||||
.map(async (_, item) => {
|
||||
item = $(item);
|
||||
|
||||
const year = item.find('span').text().replace(/\(|\)/g, '');
|
||||
const pubDate = new Date(`${year}-12-31`).toUTCString();
|
||||
|
||||
const winnersUrls = [];
|
||||
let winnerResponses = [];
|
||||
|
||||
item.find('a').each(function () {
|
||||
winnersUrls.push(`${rootUrl}${$(this).attr('href')}`);
|
||||
});
|
||||
|
||||
winnerResponses = winnersUrls.map((url) =>
|
||||
got({
|
||||
method: 'get',
|
||||
url,
|
||||
})
|
||||
);
|
||||
|
||||
const description = await Promise.all(winnerResponses).then((winners) => {
|
||||
let winnerDescription = '';
|
||||
|
||||
for (const winner of winners) {
|
||||
const content = cheerio.load(winner.data);
|
||||
const image = content('.featured-photo').html();
|
||||
const column = content('#tertiary-navigation').parent();
|
||||
|
||||
content('#tertiary-navigation').remove();
|
||||
|
||||
winnerDescription += image + column.html();
|
||||
}
|
||||
|
||||
return Promise.resolve(winnerDescription);
|
||||
});
|
||||
|
||||
return {
|
||||
pubDate,
|
||||
description,
|
||||
title: year,
|
||||
link: currentUrl,
|
||||
};
|
||||
})
|
||||
.get()
|
||||
);
|
||||
|
||||
ctx.state.data = {
|
||||
title: 'A.M. Turing Award Winners',
|
||||
link: currentUrl,
|
||||
item: items,
|
||||
};
|
||||
};
|
||||
@@ -33,7 +33,7 @@ module.exports = async (ctx) => {
|
||||
let bio;
|
||||
const authorInfo = '.article__body__author-details > p:nth-child(2)';
|
||||
if (capture(authorInfo).html() !== null) {
|
||||
bio = `<br><br><br><br><hr><br><b>` + author.trim() + '</b> ' + capture(authorInfo).html().trim() + `<p><hr>`;
|
||||
bio = `<br><br><hr><br><b>` + author.trim() + '</b> ' + capture(authorInfo).html().trim() + `<p></p><hr>`;
|
||||
capture('.article__inline-sidebar').remove();
|
||||
} else {
|
||||
bio = '';
|
||||
|
||||
@@ -2,7 +2,7 @@ const got = require('@/utils/got');
|
||||
const cheerio = require('cheerio');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const rootUrl = 'https://m.allnow.com';
|
||||
const rootUrl = 'https://www.allnow.com';
|
||||
const currentUrl = `${rootUrl}/column/${ctx.params.id}`;
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
@@ -10,7 +10,7 @@ module.exports = async (ctx) => {
|
||||
});
|
||||
|
||||
const $ = cheerio.load(response.data);
|
||||
const list = $('a.normal')
|
||||
const list = $('.post-list .post')
|
||||
.slice(0, 10)
|
||||
.map((_, item) => {
|
||||
item = $(item);
|
||||
@@ -33,7 +33,7 @@ module.exports = async (ctx) => {
|
||||
item.title = content('p.title').text();
|
||||
item.author = content('a.single-name').eq(0).text();
|
||||
item.description = content('#article-content').html();
|
||||
item.pubDate = new Date(detailResponse.data.match(/time:"(.*)",abstract:"/)[1] + ' GMT+8').toUTCString();
|
||||
item.pubDate = new Date(detailResponse.data.match(/time:"(.*?)"\}/)[1] + ' GMT+8').toUTCString();
|
||||
|
||||
return item;
|
||||
})
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
const got = require('@/utils/got');
|
||||
const cheerio = require('cheerio');
|
||||
|
||||
const config = {
|
||||
this: '2037295071',
|
||||
back: '2330861071',
|
||||
next: '2037296071',
|
||||
};
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const type = ctx.params.type || 'this';
|
||||
|
||||
const node = config[type];
|
||||
if (!node) {
|
||||
throw Error('Bad type. See <a href="https://docs.rsshub.app/reading.html#kindle-unlimited-hui-yuan-xian-shi-mian-fei-du-shu-dan">docs</a>');
|
||||
}
|
||||
|
||||
const rootUrl = `https://www.amazon.cn/b?node=${node}`;
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: rootUrl,
|
||||
});
|
||||
|
||||
const $ = cheerio.load(response.data);
|
||||
const list = $('.apb-browse-searchresults-product .a-spacing-top-small a')
|
||||
.map((_, item) => {
|
||||
item = $(item);
|
||||
return {
|
||||
link: 'https://www.amazon.cn' + item.attr('href'),
|
||||
title: item.text().trim(),
|
||||
};
|
||||
})
|
||||
.get();
|
||||
|
||||
const items = await Promise.all(
|
||||
list.map(
|
||||
async (item) =>
|
||||
await ctx.cache.tryGet(item.link, async () => {
|
||||
const detailResponse = await got({
|
||||
method: 'get',
|
||||
url: item.link,
|
||||
});
|
||||
const content = cheerio.load(detailResponse.data);
|
||||
|
||||
item.author = content('span.author').text();
|
||||
item.description = content('#ebooks-img-canvas').html() + content('#detailBullets_feature_div').html();
|
||||
|
||||
return item;
|
||||
})
|
||||
)
|
||||
);
|
||||
|
||||
ctx.state.data = {
|
||||
title: `KU会员限时免费读 - ${$('title').text().split('-')[1]}`,
|
||||
link: rootUrl,
|
||||
item: items,
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,33 @@
|
||||
const got = require('@/utils/got');
|
||||
const cheerio = require('cheerio');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const rootUrl = 'https://anytxt.net';
|
||||
const currentUrl = `${rootUrl}/download`;
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: currentUrl,
|
||||
});
|
||||
|
||||
const $ = cheerio.load(response.data);
|
||||
|
||||
const items = $('.has-medium-font-size')
|
||||
.map((_, item) => {
|
||||
item = $(item);
|
||||
const date = item.text().replace(':', '');
|
||||
|
||||
return {
|
||||
title: date,
|
||||
link: currentUrl,
|
||||
pubDate: new Date(date).toUTCString(),
|
||||
description: `<ol>${item.next().html()}</ol>`,
|
||||
};
|
||||
})
|
||||
.get();
|
||||
|
||||
ctx.state.data = {
|
||||
title: 'Release Notes - AnyTXT',
|
||||
link: currentUrl,
|
||||
item: items,
|
||||
};
|
||||
};
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
const got = require('@/utils/got'); // get web content
|
||||
const cheerio = require('cheerio'); // html parser
|
||||
const he = require('he');
|
||||
const entities = require('entities');
|
||||
|
||||
const base_url = 'https://www.aozora.gr.jp/index_pages/';
|
||||
module.exports = async (ctx) => {
|
||||
@@ -50,7 +50,7 @@ module.exports = async (ctx) => {
|
||||
let title = '';
|
||||
let title_sub = '';
|
||||
for (let j = 0; j < title_info.length; ++j) {
|
||||
const tmp = he.decode($(title_info[j]).html()); // should convert from escaped to unicode
|
||||
const tmp = entities.decodeXML($(title_info[j]).html()); // should convert from escaped to unicode
|
||||
if (tmp.includes('作品名:')) {
|
||||
title = $(title_info[j]).find('td:nth-child(2)').text();
|
||||
}
|
||||
|
||||
@@ -15,13 +15,10 @@ module.exports = async (ctx) => {
|
||||
const apiResponse = (
|
||||
await got({
|
||||
method: 'get',
|
||||
url: `https://amp-api.apps.apple.com/v1/catalog/${country}/apps/${id.replace(
|
||||
'id',
|
||||
''
|
||||
)}?platform=web&additionalPlatforms=appletv%2Cipad%2Ciphone%2Cmac&extend=description%2CdeveloperInfo%2CeditorialVideo%2Ceula%2CfileSizeByDevice%2CmessagesScreenshots%2CprivacyPolicyUrl%2CprivacyPolicyText%2CpromotionalText%2CscreenshotsByType%2CsupportURLForLanguage%2CversionHistory%2CvideoPreviewsByType%2CwebsiteUrl&include=genres%2Cdeveloper%2Creviews%2Cmerchandised-in-apps%2Ccustomers-also-bought-apps%2Cdeveloper-other-apps%2Capp-bundles%2Ctop-in-apps%2Ceula&l=${lang}`,
|
||||
url: `https://amp-api.apps.apple.com/v1/catalog/${country}/apps/${id.replace('id', '')}?platform=web&include=Cmerchandised-in-apps%2Ctop-in-apps%2Ceula&l=${lang}`,
|
||||
headers: {
|
||||
authorization:
|
||||
'Bearer eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IldlYlBsYXlLaWQifQ.eyJpc3MiOiJBTVBXZWJQbGF5IiwiaWF0IjoxNTc0MTk3NDA3LCJleHAiOjE1ODk3NDk0MDd9.ael_GP97O4fyXJuQAQlmC7ieY-t-OOGFwtXShhVA6m_p9Sq03D-_FiUKSfZ2iXGob3vPFnDe0s_OKI3Tg7KVaA',
|
||||
'Bearer eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IkNSRjVITkJHUFEifQ.eyJpc3MiOiI4Q1UyNk1LTFM0IiwiaWF0IjoxNjA3MDMxMTcwLCJleHAiOjE2MTAwNTUxNzB9.qzq2PKkPBNDwHbShoBY3T7J2IjgWsR_MyAvTnZtQB5FZjsH_ZY5esBa0qXbA9kUiq_90GkRoNVMR03meOQQ7SQ',
|
||||
authority: 'amp-api.apps.apple.com',
|
||||
referer: target,
|
||||
},
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
const got = require('@/utils/got');
|
||||
const cheerio = require('cheerio');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const rootUrl = 'https://www.asml.com';
|
||||
const currentUrl = `${rootUrl}/en/news/press-releases`;
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: currentUrl,
|
||||
});
|
||||
|
||||
const list = response.data.match(/<a class="results-list__listitem" href="(.*)">/g).map((item) => ({
|
||||
link: `${rootUrl}${item.split('href="')[1].replace('">', '')}`,
|
||||
}));
|
||||
|
||||
const items = await Promise.all(
|
||||
list.map(
|
||||
async (item) =>
|
||||
await ctx.cache.tryGet(item.link, async () => {
|
||||
const detailResponse = await got({
|
||||
method: 'get',
|
||||
url: item.link,
|
||||
});
|
||||
const content = cheerio.load(detailResponse.data);
|
||||
|
||||
item.title = content('title').text().replace('| ASML', '');
|
||||
item.description = content('.longcopy').html();
|
||||
item.pubDate = new Date(detailResponse.data.match(/"datePublished": "(.*)",/)[1]).toUTCString();
|
||||
|
||||
return item;
|
||||
})
|
||||
)
|
||||
);
|
||||
|
||||
ctx.state.data = {
|
||||
title: 'Press releases | ASML',
|
||||
link: currentUrl,
|
||||
item: items,
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,36 @@
|
||||
const got = require('@/utils/got');
|
||||
const cheerio = require('cheerio');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const name = ctx.params.name;
|
||||
const url = ctx.params.type ? `https://www.av01.tv/actor/${name}&o=${ctx.params.type}` : `https://www.av01.tv/actor/${name}`;
|
||||
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: url,
|
||||
});
|
||||
|
||||
const data = response.data;
|
||||
|
||||
const $ = cheerio.load(data);
|
||||
const list = $('div.col-sm-6.col-md-4.col-lg-4');
|
||||
|
||||
ctx.state.data = {
|
||||
title: `${name}的影片`,
|
||||
description: `${name}的影片`,
|
||||
link: `https://www.av01.tv/actor/${name}`,
|
||||
item:
|
||||
list &&
|
||||
list
|
||||
.map((index, item) => {
|
||||
item = $(item);
|
||||
const itemPicUrl = `${item.find('img').attr('data-src')}`;
|
||||
return {
|
||||
title: item.find('span.video-title.title-truncate.m-t-5').text(),
|
||||
description: `翻译${item.find('div.video-added.title-truncate').text()}<br><img src="${itemPicUrl}">`,
|
||||
link: `https://www.av01.tv/${item.find('a').attr('href')}`,
|
||||
};
|
||||
})
|
||||
.get(),
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,36 @@
|
||||
const got = require('@/utils/got');
|
||||
const cheerio = require('cheerio');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const name = ctx.params.name;
|
||||
const url = ctx.params.type ? `https://www.av01.tv/tag/${name}&o=${ctx.params.type}` : `https://www.av01.tv/tag/${name}`;
|
||||
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: url,
|
||||
});
|
||||
|
||||
const data = response.data;
|
||||
|
||||
const $ = cheerio.load(data);
|
||||
const list = $('div.col-sm-6.col-md-4.col-lg-4');
|
||||
|
||||
ctx.state.data = {
|
||||
title: `${name}类型的影片`,
|
||||
description: `${name}类型的影片`,
|
||||
link: `https://www.av01.tv/tag/${name}`,
|
||||
item:
|
||||
list &&
|
||||
list
|
||||
.map((index, item) => {
|
||||
item = $(item);
|
||||
const itemPicUrl = `${item.find('img').attr('data-src')}`;
|
||||
return {
|
||||
title: item.find('span.video-title.title-truncate.m-t-5').text(),
|
||||
description: `翻译${item.find('div.video-added.title-truncate').text()}<br><img src="${itemPicUrl}">`,
|
||||
link: `https://www.av01.tv/${item.find('a').attr('href')}`,
|
||||
};
|
||||
})
|
||||
.get(),
|
||||
};
|
||||
};
|
||||
+24
-33
@@ -1,43 +1,34 @@
|
||||
const got = require('@/utils/got');
|
||||
const date = require('@/utils/date');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const response = await got({
|
||||
method: 'post',
|
||||
method: 'get',
|
||||
url: 'http://www.baijingapp.com/api/get_more_articles/',
|
||||
responseType: 'json',
|
||||
form: {
|
||||
deviceid: 'ios',
|
||||
page: 1,
|
||||
},
|
||||
});
|
||||
|
||||
const resList = response.data;
|
||||
const data = JSON.parse(response.data.substr(1, response.data.length - 1));
|
||||
|
||||
// json字符串转json对象
|
||||
const resListObj = new Function('return ' + resList)();
|
||||
|
||||
if (resListObj.state === 1) {
|
||||
const output = resListObj.data.list.map((item) => {
|
||||
const title = item.title;
|
||||
const link = 'https://www.baijingapp.com/article/' + item.id;
|
||||
const time = item.time;
|
||||
const author = item.user_name;
|
||||
const image = item.image;
|
||||
const single = {
|
||||
title,
|
||||
link,
|
||||
time,
|
||||
author,
|
||||
image,
|
||||
};
|
||||
|
||||
return single;
|
||||
});
|
||||
|
||||
ctx.state.data = {
|
||||
title: `白鲸出海`,
|
||||
desription: '白鲸出海 - 泛互联网出海服务平台',
|
||||
item: output,
|
||||
const output = data.data.list.map((item) => {
|
||||
const title = item.title;
|
||||
const link = 'https://www.baijingapp.com/article/' + item.id;
|
||||
const pubDate = date(item.time.replace(' ', ''));
|
||||
const author = item.user_name;
|
||||
const description = `<img src="${item.image}">`;
|
||||
const single = {
|
||||
title,
|
||||
link,
|
||||
pubDate,
|
||||
author,
|
||||
description,
|
||||
};
|
||||
}
|
||||
|
||||
return single;
|
||||
});
|
||||
|
||||
ctx.state.data = {
|
||||
title: `白鲸出海`,
|
||||
desription: '白鲸出海 - 泛互联网出海服务平台',
|
||||
item: output,
|
||||
};
|
||||
};
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
const got = require('@/utils/got');
|
||||
const cheerio = require('cheerio');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const lang = ctx.params.lang || 'en';
|
||||
const id = ctx.params.id || 'bandizip';
|
||||
|
||||
const rootUrl = `https://${lang}.bandisoft.com`;
|
||||
const currentUrl = `${rootUrl}/${id}/history/`;
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: currentUrl,
|
||||
});
|
||||
|
||||
const $ = cheerio.load(response.data);
|
||||
|
||||
const items = $('h2')
|
||||
.map((_, item) => {
|
||||
item = $(item);
|
||||
|
||||
const title = item.text();
|
||||
item.children('font').remove();
|
||||
|
||||
return {
|
||||
title,
|
||||
link: currentUrl,
|
||||
description: item.next().html(),
|
||||
pubDate: new Date(item.text()).toUTCString(),
|
||||
};
|
||||
})
|
||||
.get();
|
||||
|
||||
ctx.state.data = {
|
||||
title: $('title').text(),
|
||||
link: currentUrl,
|
||||
item: items,
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,51 @@
|
||||
const got = require('@/utils/got');
|
||||
const cheerio = require('cheerio');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const time = ctx.params.time || 'shishidashiku';
|
||||
|
||||
const rootUrl = 'http://www.banyuetan.org';
|
||||
const currentUrl = `${rootUrl}/byt/${time}/index.html`;
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: currentUrl,
|
||||
});
|
||||
|
||||
const $ = cheerio.load(response.data);
|
||||
|
||||
const list = $('.byt_mian_image_list_con ul li a')
|
||||
.slice(0, 10)
|
||||
.map((_, item) => {
|
||||
item = $(item);
|
||||
return {
|
||||
link: item.attr('href'),
|
||||
title: item.attr('title'),
|
||||
};
|
||||
})
|
||||
.get();
|
||||
|
||||
const items = await Promise.all(
|
||||
list.map(
|
||||
async (item) =>
|
||||
await ctx.cache.tryGet(item.link, async () => {
|
||||
const detailResponse = await got({
|
||||
method: 'get',
|
||||
url: item.link,
|
||||
});
|
||||
const content = cheerio.load(detailResponse.data);
|
||||
|
||||
item.description = content('#detail_content').html();
|
||||
item.author = content('.detail_tit_source').text().replace('来源:', '');
|
||||
item.pubDate = new Date(content('meta[property="og:release_date"]').attr('content')).toUTCString();
|
||||
|
||||
return item;
|
||||
})
|
||||
)
|
||||
);
|
||||
|
||||
ctx.state.data = {
|
||||
title: $('title').text(),
|
||||
link: currentUrl,
|
||||
item: items,
|
||||
};
|
||||
};
|
||||
+30
-20
@@ -47,30 +47,40 @@ module.exports = async (ctx) => {
|
||||
}
|
||||
|
||||
const items = await Promise.all(
|
||||
feed.items.splice(0, 10).map(async (item) => {
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: item.link,
|
||||
});
|
||||
feed.items.map(
|
||||
async (item) =>
|
||||
await ctx.cache.tryGet(item.link, async () => {
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: item.link,
|
||||
});
|
||||
|
||||
const $ = cheerio.load(response.data);
|
||||
const $ = cheerio.load(response.data);
|
||||
|
||||
let description;
|
||||
let description;
|
||||
|
||||
if (response.request.options.url.pathname.startsWith('/news/av')) {
|
||||
description = utils.ProcessAVFeed($, item.link);
|
||||
} else {
|
||||
description = utils.ProcessFeed($, item.link);
|
||||
}
|
||||
if (response.request.options.url.pathname.startsWith('/news/av')) {
|
||||
description = item.content;
|
||||
} else {
|
||||
description = utils.ProcessFeed($);
|
||||
}
|
||||
|
||||
const single = {
|
||||
title: item.title,
|
||||
description,
|
||||
pubDate: item.pubDate,
|
||||
link: item.link,
|
||||
};
|
||||
return Promise.resolve(single);
|
||||
})
|
||||
let section = 'sport';
|
||||
const urlSplit = item.link.split('/');
|
||||
const sectionSplit = urlSplit[urlSplit.length - 1].split('-');
|
||||
if (sectionSplit.length > 1) {
|
||||
section = sectionSplit[0];
|
||||
}
|
||||
section = section[0].toUpperCase() + section.slice(1);
|
||||
|
||||
return {
|
||||
title: `[${section}] ${item.title}`,
|
||||
description,
|
||||
pubDate: item.pubDate,
|
||||
link: item.link,
|
||||
};
|
||||
})
|
||||
)
|
||||
);
|
||||
|
||||
ctx.state.data = {
|
||||
|
||||
+13
-110
@@ -1,83 +1,6 @@
|
||||
const cheerio = require('cheerio');
|
||||
const ProcessImage = ($, e, c, noscript = false) => {
|
||||
const img = $(e).find(c);
|
||||
|
||||
if (img.length > 0) {
|
||||
let message;
|
||||
// special handling for img wrapped in <noscript>
|
||||
if (noscript) {
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
const i = cheerio.load(img[0].children[0].data)('img')[0];
|
||||
|
||||
message = `<figure><img alt='${i.attribs.alt}' src='${i.attribs.src}'><br><figcaption>`;
|
||||
} else {
|
||||
if (img[0].attribs.src) {
|
||||
// handle cover image and lazy-loading images
|
||||
message = `<figure><img alt='${img[0].attribs.alt ? img[0].attribs.alt : ''}' src='${img[0].attribs.src.replace(/(?<=\/news\/).*?(?=\/cpsprodpb)/, '600')}'><br><figcaption>`;
|
||||
} else {
|
||||
message = `<figure><img alt='${img[0].attribs['data-alt'] ? img[0].attribs['data-alt'] : ''}' src='${img[0].attribs['data-src'].replace(/(?<=\/news\/).*?(?=\/cpsprodpb)/, '600')}'><br><figcaption>`;
|
||||
}
|
||||
|
||||
// add image caption
|
||||
const figcaption = $(e).find('.media-caption__text');
|
||||
if (figcaption.length > 0) {
|
||||
message += `${$(figcaption[0]).text().trim()}`;
|
||||
}
|
||||
|
||||
// add image copyright
|
||||
const copyright = $(e).find('.story-image-copyright');
|
||||
if (copyright.length > 0) {
|
||||
message += ` ©${$(copyright[0]).text().trim()}`;
|
||||
}
|
||||
}
|
||||
|
||||
message += '</figcaption></figure>';
|
||||
|
||||
$(message).insertAfter(e);
|
||||
}
|
||||
};
|
||||
|
||||
const ProcessVideo = ($, e, c) => {
|
||||
const video = $(e).find(c);
|
||||
|
||||
video.each((i, f) => {
|
||||
const cover = $(f).children('img.player-with-placeholder__image');
|
||||
if (cover.length > 0) {
|
||||
$(cover[0]).insertBefore(e);
|
||||
}
|
||||
const link = $(f).find('figure.js-media-player-unprocessed');
|
||||
if (link.length > 0) {
|
||||
const url = JSON.parse(link[0].attribs['data-playable']).settings.externalEmbedUrl;
|
||||
const message = `<br><a href='${url}'>使用浏览器播视频/view video in browser</a>`;
|
||||
$(message).insertAfter(e);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const ProcessAVFeed = ($) => {
|
||||
const content = $('div.vxp-media__summary');
|
||||
|
||||
const video = $('div.vxp-media__player');
|
||||
|
||||
video.each((i, e) => {
|
||||
const cover = $(e).children('img.vxp-media__placeholder-image');
|
||||
if (cover.length > 0) {
|
||||
$(cover[0]).insertBefore(content[0].firstChild);
|
||||
}
|
||||
const link = $(e).find('figure.js-media-player-unprocessed');
|
||||
if (link.length > 0) {
|
||||
const url = JSON.parse(link[0].attribs['data-playable']).settings.externalEmbedUrl;
|
||||
const message = `<br><a href='${url}'>使用浏览器播视频/view video in browser</a>`;
|
||||
$(message).insertAfter(content[0].firstChild);
|
||||
}
|
||||
});
|
||||
|
||||
return content.html();
|
||||
};
|
||||
|
||||
const ProcessFeed = ($, link) => {
|
||||
const ProcessFeed = ($) => {
|
||||
// by default treat it as a hybrid news with video and story-body__inner
|
||||
let content = $('div.story-body__inner');
|
||||
let content = $('#main-content article');
|
||||
|
||||
if (content.length === 0) {
|
||||
// it's a video news with video and story-body
|
||||
@@ -90,45 +13,25 @@ const ProcessFeed = ($, link) => {
|
||||
}
|
||||
|
||||
// remove useless DOMs
|
||||
content.find('div.bbccom_slot, .off-screen, .embed-report-link').each((i, e) => {
|
||||
$(e).remove();
|
||||
content.find('header, section, [data-testid="bbc-logo-wrapper"]').remove();
|
||||
|
||||
content.find('noscript').each((i, e) => {
|
||||
$(e).parent().html($(e).html());
|
||||
});
|
||||
|
||||
if ($('#comp-media-player').length > 0) {
|
||||
// there is a cover video
|
||||
|
||||
let message = `<br><a href='${link}'>使用浏览器播视频/view video in browser</a>`;
|
||||
|
||||
const cover = $('#comp-media-player').find('img.player-with-placeholder__image');
|
||||
|
||||
if (cover.length > 0) {
|
||||
// there is a cover image
|
||||
message = `<br><img src='${cover[0].attribs.src}'>` + message;
|
||||
content.find('img').each((i, e) => {
|
||||
if (!$(e).attr('src') && $(e).attr('srcSet')) {
|
||||
const srcs = $(e).attr('srcSet').split(', ');
|
||||
const lastSrc = srcs[srcs.length - 1];
|
||||
$(e).attr('src', lastSrc.split(' ')[0]);
|
||||
}
|
||||
|
||||
$(message).insertAfter(content[0].lastChild);
|
||||
}
|
||||
|
||||
// resize all images and videos
|
||||
content.find('figure').each((i, e) => {
|
||||
ProcessImage($, e, '.image-and-copyright-container > img');
|
||||
|
||||
// handle lazy-loading images
|
||||
ProcessImage($, e, '.js-delayed-image-load');
|
||||
|
||||
ProcessImage($, e, 'div > div > div > img');
|
||||
|
||||
ProcessImage($, e, 'div > div > div > noscript', true);
|
||||
|
||||
ProcessVideo($, e, 'figure.media-with-caption > div.player-with-placeholder');
|
||||
|
||||
$(e).remove();
|
||||
});
|
||||
|
||||
content.find('[data-component="media-block"] figcaption').prepend('<span>View video in browser: </span>');
|
||||
|
||||
return content.html();
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
ProcessFeed,
|
||||
ProcessAVFeed,
|
||||
};
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
const got = require('@/utils/got');
|
||||
const cheerio = require('cheerio');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const type = ctx.params.type || 'all';
|
||||
const caty = ctx.params.caty || 'all';
|
||||
const area = ctx.params.area || 'all';
|
||||
const year = ctx.params.year || 'all';
|
||||
const order = ctx.params.order || '0';
|
||||
|
||||
const rootUrl = 'https://bde4.cc';
|
||||
const currentUrl = `${rootUrl}/s/${caty}?${type === 'all' ? '' : '&type=' + type}${area === 'all' ? '' : '&area=' + area}${year === 'all' ? '' : '&year=' + year}&order=${order}`;
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: currentUrl,
|
||||
});
|
||||
|
||||
const $ = cheerio.load(response.data);
|
||||
|
||||
let jsessionid = '';
|
||||
|
||||
const list = $('.card a')
|
||||
.slice(0, 15)
|
||||
.map((_, item) => {
|
||||
item = $(item);
|
||||
const link = item.attr('href').split(';jsessionid=');
|
||||
jsessionid = link[1];
|
||||
return {
|
||||
title: item.attr('title'),
|
||||
link: `${rootUrl}${link[0]}`,
|
||||
pubDate: new Date(item.parent().find('.meta span').text()).toUTCString(),
|
||||
};
|
||||
})
|
||||
.get();
|
||||
|
||||
const headers = {
|
||||
cookie: `JSESSIONID=${jsessionid}`,
|
||||
};
|
||||
|
||||
const items = await Promise.all(
|
||||
list.map(
|
||||
async (item) =>
|
||||
await ctx.cache.tryGet(item.link, async () => {
|
||||
const detailResponse = await got({
|
||||
method: 'get',
|
||||
url: item.link,
|
||||
headers,
|
||||
});
|
||||
const downloadResponse = await got({
|
||||
method: 'get',
|
||||
url: `${rootUrl}/downloadInfo/list?mid=${item.link.split('/')[4].split('.')[0]}`,
|
||||
headers,
|
||||
});
|
||||
const content = cheerio.load(detailResponse.data);
|
||||
|
||||
let downloadLinks = '';
|
||||
for (const downloadLink of downloadResponse.data) {
|
||||
downloadLinks += `<div class="item"><div class="content">${downloadLink.downloadCategory.name}: <a href="${downloadLink.url}">${downloadLink.url}</a></div></div>`;
|
||||
}
|
||||
|
||||
const torrents = content('#torrent-list .list');
|
||||
|
||||
item.description = content('.info0').html() + `<div><b>下载地址:</b>${downloadLinks}</div>` + `${torrents.html() ? `<div><b>种子列表:</b>${torrents.html()}</div>` : ''}`;
|
||||
item.enclosure_url = torrents.html() ? torrents.find('a.header').last().attr('href') : downloadResponse.data.pop().url;
|
||||
item.enclosure_type = 'application/x-bittorrent';
|
||||
|
||||
return item;
|
||||
})
|
||||
)
|
||||
);
|
||||
|
||||
ctx.state.data = {
|
||||
title: '哔嘀影视',
|
||||
link: currentUrl,
|
||||
item: items,
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,71 @@
|
||||
const got = require('@/utils/got');
|
||||
const cheerio = require('cheerio');
|
||||
|
||||
const config = {
|
||||
events: '.tout-text a',
|
||||
'industry-recognition': '.n-block-section .n-block .rich-text p b',
|
||||
'press-releases': 'h5 a',
|
||||
};
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const category = ctx.params.category || 'press-releases';
|
||||
|
||||
const rootUrl = 'http://www.bell-labs.com';
|
||||
const currentUrl = `${rootUrl}/events-news/${category}`;
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: currentUrl,
|
||||
});
|
||||
|
||||
const $ = cheerio.load(response.data);
|
||||
|
||||
let items = (category === 'industry-recognition' ? $(config[category]).closest('.rich-text') : $(config[category]))
|
||||
.slice(0, 15)
|
||||
.map((_, i) => {
|
||||
let item = $(i);
|
||||
|
||||
if (category === 'industry-recognition') {
|
||||
item = item.children('.n-link-list').length > 0 ? item.children('.n-link-list') : item.children('p').eq(1);
|
||||
}
|
||||
if (item.children('a').attr('href')) {
|
||||
item = item.children('a');
|
||||
}
|
||||
|
||||
return {
|
||||
title: item.text(),
|
||||
link: item.attr('href') || currentUrl,
|
||||
pubDate: new Date(category === 'events' ? item.text().split(':')[0].split(' - ')[0] : category === 'industry-recognition' ? $(i).children('p').eq(0).text() : '').toUTCString(),
|
||||
|
||||
description: category === 'events' ? item.closest('.n-block').next().find('.rich-text').html() : category === 'industry-recognition' ? `<p>${$(i).find('p').last().text()}</p>` : '',
|
||||
};
|
||||
})
|
||||
.get();
|
||||
|
||||
if (category === 'press-releases') {
|
||||
items = await Promise.all(
|
||||
items.map(
|
||||
async (item) =>
|
||||
await ctx.cache.tryGet(item.link, async () => {
|
||||
const detailResponse = await got({
|
||||
method: 'get',
|
||||
url: item.link,
|
||||
});
|
||||
const content = cheerio.load(detailResponse.data);
|
||||
|
||||
content('.social-media-sharing').remove();
|
||||
|
||||
item.description = content('.layout-content').html();
|
||||
item.pubDate = new Date(content('meta[name="search-updated"]').attr('content')).toUTCString();
|
||||
|
||||
return item;
|
||||
})
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
ctx.state.data = {
|
||||
title: $('title').eq(0).text(),
|
||||
link: currentUrl,
|
||||
item: items,
|
||||
};
|
||||
};
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user