feat: 期刊路由优化,增加 scihub 模式 (#4094)
This commit is contained in:
parent
70b333c400
commit
19fa95d553
|
|
@ -1,7 +1,7 @@
|
|||
<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"/> <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>
|
||||
<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>
|
||||
</p>
|
||||
<p class="author">
|
||||
作者: <a v-for="uid in author.split(' ')" :href="`https://github.com/${uid}`" target="_blank"> @{{ uid }} </a>
|
||||
|
|
@ -52,6 +52,10 @@ export default {
|
|||
type: String,
|
||||
default: null
|
||||
},
|
||||
supportScihub: {
|
||||
type: String,
|
||||
default: null
|
||||
},
|
||||
radar: {
|
||||
type: String,
|
||||
default: null
|
||||
|
|
|
|||
|
|
@ -376,3 +376,7 @@ Access control includes a whitelist and a blacklist, support IP and route, use `
|
|||
- discuz cookies
|
||||
|
||||
- `DISCUZ_COOKIE_{cid}`: Cookie of a forum powered by discuz, cid can be anything from 00 to 99. When visiting route discuz, using cid to specify this cookie.
|
||||
|
||||
- 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`.
|
||||
|
|
|
|||
|
|
@ -2,13 +2,11 @@
|
|||
pageClass: routes
|
||||
---
|
||||
|
||||
# Sciences Journal
|
||||
# Scientific Journal
|
||||
|
||||
## Online papers
|
||||
## Cell Journal
|
||||
|
||||
### Cell Journal
|
||||
|
||||
<RouteEn author="yech1990" example="/cell/cell/current" path="/cell/cell/:category" />
|
||||
<RouteEn author="yech1990" example="/cell/cell/current" path="/journal/cell/cell/:category" supportScihub="1" />
|
||||
|
||||
| `:category` | Query Type | Route |
|
||||
| :---------: | :---------------------: | ---------------------------------------- |
|
||||
|
|
@ -17,17 +15,43 @@ pageClass: routes
|
|||
|
||||
</RouteEn>
|
||||
|
||||
### eLife - Latest Research-ALL
|
||||
## eLife
|
||||
|
||||
<RouteEn author="emdoe" example="/elife/latest" path="/elife/latest" />
|
||||
### Latest Research - Research by Subject
|
||||
|
||||
### eLife - Latest Research-Research by Subject
|
||||
<RouteEn author="emdoe" example="/elife/cell-biology" path="/journal/elife/:subject" :paramsDesc="['topic name', 'obtain it from the homepage. `latest` will include all topics.']" supportScihub="1"/>
|
||||
|
||||
<RouteEn author="emdoe" example="/elife/cell-biology" path="/elife/:subject" :paramsDesc="['topic name', 'obtain it from the homepage']" />
|
||||
## Google Scholar
|
||||
|
||||
### Nature Journal - Latest Research
|
||||
### Keywords Monitoring
|
||||
|
||||
<RouteEn author="yech1990" example="/nature/research/ng" path="/nature/research/:journal" :paramsDesc="['short name for a journal']" />
|
||||
<RouteEn author="HenryQW" path="/google/scholar/:query" example="/google/scholar/data+visualization" :paramsDesc="['query statement which supports「Basic」and「Advanced」modes']" anticrawler="1">
|
||||
|
||||
::: warning
|
||||
|
||||
Google Scholar has strict anti-crawling mechanism implemented, the demo below doesn't guarantee availability. Please deploy your own instance as it might increase the stability.
|
||||
|
||||
:::
|
||||
|
||||
1. Basic mode, sample query is the keywords desired, eg.「data visualization」, [https://rsshub.app/google/scholar/data+visualization](https://rsshub.app/google/scholar/data+visualization).
|
||||
|
||||
2. Advanced mode, visit [Google Scholar](https://scholar.google.com/schhp?hl=en&as_sdt=0,5), click the top left corner and select「Advanced Search」, fill in your conditions and submit the search. The URL should look like this: [https://scholar.google.com/scholar?as_q=data+visualization&as_epq=&as_oq=&as_eq=&as_occt=any&as_sauthors=&as_publication=&as_ylo=2018&as_yhi=&hl=en&as_sdt=0%2C5](https://scholar.google.com/scholar?as_q=data+visualization&as_epq=&as_oq=&as_eq=&as_occt=any&as_sauthors=&as_publication=&as_ylo=2018&as_yhi=&hl=en&as_sdt=0%2C5), copy everything after `https://scholar.google.com/scholar?` from the URL and use it as the query for this route. The complete URL for the above example should look like this: [https://rsshub.app/google/scholar/as_q=data+visualization&as_epq=&as_oq=&as_eq=&as_occt=any&as_sauthors=&as_publication=&as_ylo=2018&as_yhi=&hl=en&as_sdt=0%2C5](https://rsshub.app/google/scholar/as_q=data+visualization&as_epq=&as_oq=&as_eq=&as_occt=any&as_sauthors=&as_publication=&as_ylo=2018&as_yhi=&hl=en&as_sdt=0%2C5).
|
||||
|
||||
</RouteEn>
|
||||
|
||||
### Author Citations
|
||||
|
||||
<RouteEn author="KellyHwong" example="/google/citations/mlmE4JMAAAAJ" path="/google/citations/:id" anticrawler="1">
|
||||
|
||||
The parameter id in the route is the id in the URL of the user ’s Google Scholar reference page,for example `https://scholar.google.com/citations?hl=zh-CN&user=mlmE4JMAAAAJ` to `mlmE4JMAAAAJ`
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## Nature Journal
|
||||
|
||||
### Latest Research
|
||||
|
||||
<RouteEn author="yech1990" example="/nature/research/ng" path="/journal/nature/research/:journal" :paramsDesc="['short name for a journal']" />
|
||||
|
||||
| `:journal` | Full Name of the Journal | Route |
|
||||
| :-----------: | :-------------------------: | ---------------------------------------------------------------- |
|
||||
|
|
@ -48,9 +72,9 @@ pageClass: routes
|
|||
|
||||
</RouteEn>
|
||||
|
||||
### Nature Journal - News & Comment
|
||||
### News & Comment
|
||||
|
||||
<RouteEn author="yech1990" example="/nature/news-and-comment/ng" path="/nature/news-and-comment/:journal" :paramsDesc="['short name for a journal']" />
|
||||
<RouteEn author="yech1990" example="/nature/news-and-comment/ng" path="/journal/nature/news-and-comment/:journal" :paramsDesc="['short name for a journal']" />
|
||||
|
||||
| `:journal` | Full Name of the Journal | Route |
|
||||
| :-----------: | :-------------------------: | -------------------------------------------------------------------------------- |
|
||||
|
|
@ -68,25 +92,31 @@ pageClass: routes
|
|||
|
||||
</RouteEn>
|
||||
|
||||
### Nature Journal - News
|
||||
### News
|
||||
|
||||
<RouteEn author="yech1990" example="/nature/nature/news" path="/nature/nature/news" />
|
||||
<RouteEn author="yech1990" example="/nature/news" path="/journal/nature/news" />
|
||||
|
||||
### Nature Journal - Research Highlight
|
||||
### Research Highlight
|
||||
|
||||
<RouteEn author="yech1990" example="/nature/nature/highlight" path="/nature/nature/highlight" />
|
||||
<RouteEn author="yech1990" example="/nature/highlight" path="/journal/nature/highlight" supportScihub="1"/>
|
||||
|
||||
### Proceedings of The National Academy of Sciences (PNAS) - Latest Articles - ALL
|
||||
## Proceedings of The National Academy of Sciences (PNAS)
|
||||
|
||||
<RouteEn author="emdoe" example="/pnas/latest" path="/pnas/latest" />
|
||||
### Latest Articles - Articles by Topic
|
||||
|
||||
### Proceedings of The National Academy of Sciences (PNAS) - Latest Articles-Articles by Topic
|
||||
<RouteEn author="emdoe HenryQW" example="/pnas/Applied Mathematics" path="/journal/pnas/:topic" :paramsDesc="['topic name', 'obtain it from pnas.org (new research in ...). `Latest` will include all.']" supportScihub="1"/>
|
||||
|
||||
<RouteEn author="emdoe" example="/pnas/Applied Mathematics" path="/pnas/:topic" :paramsDesc="['topic name', 'obtain it from pnas.org (new research in ...)']" />
|
||||
## PubMed
|
||||
|
||||
### Science Journal - Current Issue
|
||||
### Trending
|
||||
|
||||
<RouteEn author="yech1990" example="/sciencemag/current/science" path="/nature/research/:journal" :paramsDesc="['short name for a journal']" />
|
||||
<RouteEn author="yech1990" example="/pubmed/trending" path="/journal/pubmed/trending" supportScihub="1"/>
|
||||
|
||||
## Science Journal
|
||||
|
||||
### Current Issue
|
||||
|
||||
<RouteEn author="yech1990" example="/sciencemag/current/science" path="/journal/sciencemag/research/:journal" :paramsDesc="['short name for a journal']" supportScihub="1"/>
|
||||
|
||||
| `:journal` | Full Name of the Journal | Route |
|
||||
| :--------: | :----------------------------: | ---------------------------------------------------------------- |
|
||||
|
|
@ -102,44 +132,16 @@ pageClass: routes
|
|||
|
||||
</RouteEn>
|
||||
|
||||
### Science Journal - First Release
|
||||
### First Release
|
||||
|
||||
<RouteEn author="yech1990" example="/sciencemag/early/science" path="/sciencemag/early/science" />
|
||||
<RouteEn author="yech1990" example="/sciencemag/early/science" path="/journal/sciencemag/early/science" supportScihub="1"/>
|
||||
|
||||
_only support Science Journal_
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## Search Engine
|
||||
## X-MOL Platform
|
||||
|
||||
### PubMed Trending
|
||||
### Journal
|
||||
|
||||
<RouteEn author="yech1990" example="/pubmed/trending" path="/pubmed/trending" />
|
||||
|
||||
### X-MOL Platform - Journal
|
||||
|
||||
<RouteEn author="cssxsh" example="/x-mol/paper/0/9" path="/x-mol/paper/:type/:magazine" :paramsDesc="['类别','机构,两个参数都可从期刊URL获取。']" />
|
||||
|
||||
### Google Scholar - Keywords Monitoring
|
||||
|
||||
<RouteEn author="HenryQW" path="/google/scholar/:query" example="/google/scholar/data+visualization" :paramsDesc="['query statement which supports「Basic」and「Advanced」modes']" anticrawler="1">
|
||||
|
||||
::: warning
|
||||
|
||||
Google Scholar has strict anti-crawling mechanism implemented, the demo below doesn't guarantee availability. Please deploy your own instance as it might increase the stability.
|
||||
|
||||
:::
|
||||
|
||||
1. Basic mode, sample query is the keywords desired, eg.「data visualization」, [https://rsshub.app/google/scholar/data+visualization](https://rsshub.app/google/scholar/data+visualization).
|
||||
|
||||
2. Advanced mode, visit [Google Scholar](https://scholar.google.com/schhp?hl=en&as_sdt=0,5), click the top left corner and select「Advanced Search」, fill in your conditions and submit the search. The URL should look like this: [https://scholar.google.com/scholar?as_q=data+visualization&as_epq=&as_oq=&as_eq=&as_occt=any&as_sauthors=&as_publication=&as_ylo=2018&as_yhi=&hl=en&as_sdt=0%2C5](https://scholar.google.com/scholar?as_q=data+visualization&as_epq=&as_oq=&as_eq=&as_occt=any&as_sauthors=&as_publication=&as_ylo=2018&as_yhi=&hl=en&as_sdt=0%2C5), copy everything after `https://scholar.google.com/scholar?` from the URL and use it as the query for this route. The complete URL for the above example should look like this: [https://rsshub.app/google/scholar/as_q=data+visualization&as_epq=&as_oq=&as_eq=&as_occt=any&as_sauthors=&as_publication=&as_ylo=2018&as_yhi=&hl=en&as_sdt=0%2C5](https://rsshub.app/google/scholar/as_q=data+visualization&as_epq=&as_oq=&as_eq=&as_occt=any&as_sauthors=&as_publication=&as_ylo=2018&as_yhi=&hl=en&as_sdt=0%2C5).
|
||||
|
||||
</RouteEn>
|
||||
|
||||
### Google Scholar - Author Citations
|
||||
|
||||
<RouteEn author="KellyHwong" example="/google/citations/mlmE4JMAAAAJ" path="/google/citations/:id" anticrawler="1">
|
||||
|
||||
The parameter id in the route is the id in the URL of the user ’s Google Scholar reference page,for example `https://scholar.google.com/citations?hl=zh-CN&user=mlmE4JMAAAAJ` to `mlmE4JMAAAAJ`
|
||||
|
||||
</RouteEn>
|
||||
<RouteEn author="cssxsh" example="/x-mol/paper/0/9" path="/journal/x-mol/paper/:type/:magazine" :paramsDesc="['type','magazine']" />
|
||||
|
|
|
|||
|
|
@ -64,6 +64,14 @@ Enable Telegram Instant View requires a page template, it can be obtained from T
|
|||
|
||||
Eg: <https://rsshub.app/novel/biquge/94_94525?tgiv=bd3c42818a7f7e>
|
||||
|
||||
## Sci-hub link
|
||||
|
||||
Output Sci-hub link in scientific journal routes, this supports major journals or routes that output DOIs.
|
||||
|
||||
- scihub: set to any value
|
||||
|
||||
举例: <https://rsshub.app/pnas/latest?scihub=1>
|
||||
|
||||
### Output Formats
|
||||
|
||||
RSSHub conforms to RSS 2.0 and Atom Standard, simply append `.rss` `.atom` to the end of the feed address to obtain the feed in corresponding format, default to RSS 2.0.
|
||||
|
|
|
|||
|
|
@ -413,3 +413,7 @@ RSSHub 支持 `memory` 和 `redis` 两种缓存方式
|
|||
- discuz cookies 设定
|
||||
|
||||
- `DISCUZ_COOKIE_{cid}`: 某 Discuz 驱动的论坛,用户注册后的 Cookie 值 , cid 可自由设定,取值范围[00, 99], 使用 discuz 通用路由时, 通过指定 cid 来调用该 cookie
|
||||
|
||||
- Sci-hub 设置,用于科学期刊路由。
|
||||
|
||||
- `SCIHUB_HOST`: 可访问的 sci-hub 镜像地址,默认为 `https://sci-hub.tw`。
|
||||
|
|
|
|||
106
docs/journal.md
106
docs/journal.md
|
|
@ -4,38 +4,11 @@ pageClass: routes
|
|||
|
||||
# 科学期刊
|
||||
|
||||
## 聚合平台
|
||||
## Cell
|
||||
|
||||
### PubMed-热门文章
|
||||
### 主刊
|
||||
|
||||
<Route author="yech1990" example="/pubmed/trending" path="/pubmed/trending" />
|
||||
|
||||
### X-MOL 平台-期刊
|
||||
|
||||
<Route author="cssxsh" example="/x-mol/paper/0/9" path="/x-mol/paper/:type/:magazine" :paramsDesc="['类别','机构,两个参数都可从期刊URL获取。']" />
|
||||
|
||||
### 谷歌学术-关键词更新
|
||||
|
||||
<Route author="HenryQW" example="/google/scholar/data+visualization" path="/google/scholar/:query" :paramsDesc="['查询语句, 支持「简单」和「高级」两种模式:']" anticrawler="1">
|
||||
|
||||
1. 简单模式, 例如「data visualization」, <https://rsshub.app/google/scholar/data+visualization>.
|
||||
2. 高级模式, 前往 [Google Scholar](https://scholar.google.com/schhp?hl=zh-cn&as_sdt=0,5), 点击左上角, 选择高级搜索并提交查询. 此时 URL 应为: <https://scholar.google.com/scholar?as_q=data+visualization&as_epq=&as_oq=&as_eq=&as_occt=any&as_sauthors=&as_publication=&as_ylo=2018&as_yhi=&hl=zh-CN&as_sdt=0%2C5>, 复制`https://scholar.google.com/scholar?`后的所有语句作为本路由的查询参数. 例子所对应的完整路由为<https://rsshub.app/google/scholar/as_q=data+visualization&as_epq=&as_oq=&as_eq=&as_occt=any&as_sauthors=&as_publication=&as_ylo=2018&as_yhi=&hl=zh-CN&as_sdt=0%2C5>.
|
||||
|
||||
</Route>
|
||||
|
||||
### 谷歌学术-作者引用更新
|
||||
|
||||
<Route author="KellyHwong" example="/google/citations/mlmE4JMAAAAJ" path="/google/citations/:id" anticrawler="1">
|
||||
|
||||
路由中的参数 id,即用户谷歌学术引用页面 url 中的 id,如 https://scholar.google.com/citations?hl=zh-CN&user=mlmE4JMAAAAJ 中 user= 后的 mlmE4JMAAAAJ。
|
||||
|
||||
</Route>
|
||||
|
||||
## 期刊网站
|
||||
|
||||
### Cell 主刊
|
||||
|
||||
<Route author="yech1990" example="/cell/cell/current" path="/cell/cell/:category" />
|
||||
<Route author="yech1990" example="/cell/cell/current" path="/journals/cell/cell/:category" supportScihub="1"/>
|
||||
|
||||
| `:category` | 类型说明 | 路由 |
|
||||
| :---------: | :-----------------: | ---------------------------------------- |
|
||||
|
|
@ -44,17 +17,17 @@ pageClass: routes
|
|||
|
||||
</Route>
|
||||
|
||||
### eLife-最新成果-综合
|
||||
## elife
|
||||
|
||||
<Route author="emdoe" example="/elife/latest" path="/elife/latest" />
|
||||
### 最新成果
|
||||
|
||||
### elife-最新成果-细分领域
|
||||
<Route author="emdoe HenryQW" example="/elife/cell-biology" path="/journals/elife/:subject" :paramsDesc="['方向名称', '请在主页获取。`latest` 则为全部。']" supportScihub="1"/>
|
||||
|
||||
<Route author="emdoe" example="/elife/cell-biology" path="/elife/:subject" :paramsDesc="['方向名称', '请在主页获取']" />
|
||||
## Nature 系列
|
||||
|
||||
### Nature 系列-最新成果
|
||||
### 最新成果
|
||||
|
||||
<Route author="yech1990" example="/nature/research/ng" path="/nature/research/:journal" :paramsDesc="['期刊名简写']" />
|
||||
<Route author="yech1990" example="/nature/research/ng" path="/journals/nature/research/:journal" :paramsDesc="['期刊名简写']" />
|
||||
|
||||
| `:journal` | 期刊名 | 路由 |
|
||||
| :-----------: | :-------------------------: | ---------------------------------------------------------------- |
|
||||
|
|
@ -75,9 +48,9 @@ pageClass: routes
|
|||
|
||||
</Route>
|
||||
|
||||
### Nature-新闻及评论
|
||||
### 新闻及评论
|
||||
|
||||
<Route author="yech1990" example="/nature/news-and-comment/ng" path="/nature/news-and-comment/:journal" :paramsDesc="['期刊名简写']" />
|
||||
<Route author="yech1990" example="/nature/news-and-comment/ng" path="/journals/nature/news-and-comment/:journal" :paramsDesc="['期刊名简写']" supportScihub="1"/>
|
||||
|
||||
| `:journal` | 期刊名 | 路由 |
|
||||
| :-----------: | :-------------------------: | -------------------------------------------------------------------------------- |
|
||||
|
|
@ -91,30 +64,36 @@ pageClass: routes
|
|||
| natmachintell | Nature Machine Intelligence | [/nature/news-and-comment/natmachintell](/nature/news-and-comment/natmachintell) |
|
||||
|
||||
- 通过 `/nature/research/` + “杂志简写”来获取对应杂志的最新文章(Latest Research)。
|
||||
主刊由于格式不同,该 router 并未支持,采用 `/nature/nature/news` 来获取新闻。
|
||||
主刊由于格式不同,该 router 并未支持,采用 `/nature/news` 来获取新闻。
|
||||
- 由于 Nature 系列的刊物是分别由不同的编辑来独立运营,所以页面格式上有些差异。目前**仅**对以下杂志进行了测试。
|
||||
|
||||
</Route>
|
||||
|
||||
### Nature 主刊-新闻动态
|
||||
### 主刊 - 新闻动态
|
||||
|
||||
<Route author="yech1990" example="/nature/nature/news" path="/nature/nature/news" />
|
||||
<Route author="yech1990" example="/nature/news" path="/journals/nature/news" />
|
||||
|
||||
### Nature 主刊-精彩研究
|
||||
### 主刊 - 精彩研究
|
||||
|
||||
<Route author="yech1990" example="/nature/nature/highlight" path="/nature/nature/highlight" />
|
||||
<Route author="yech1990" example="/nature/highlight" path="/journals/nature/highlight" supportScihub="1"/>
|
||||
|
||||
### PNAS-最新文章(全部)
|
||||
## PNAS
|
||||
|
||||
<Route author="emdoe" example="/pnas/latest" path="/pnas/latest" />
|
||||
### 最新文章(根据领域分类)
|
||||
|
||||
### PNAS-最新文章(根据领域分类)
|
||||
<Route author="emdoe HenryQW" example="/pnas/Applied Mathematics" path="/journals/pnas/:topic" :paramsDesc="['领域名称, 可从 pnas.org 获得。`latest` 则为全部。']" supportScihub="1" />
|
||||
|
||||
<Route author="emdoe" example="/pnas/Applied Mathematics" path="/pnas/:topic" :paramsDesc="['领域名称','可从 pnas.org 获得']" />
|
||||
## PubMed
|
||||
|
||||
### Science 系列-本期刊物
|
||||
### 热门文章
|
||||
|
||||
<Route author="yech1990" example="/sciencemag/current/science" path="/nature/research/:journal" :paramsDesc="['期刊名简写']" />
|
||||
<Route author="yech1990" example="/pubmed/trending" path="/journals/pubmed/trending" supportScihub="1"/>
|
||||
|
||||
## Science 系列
|
||||
|
||||
### 本期刊物
|
||||
|
||||
<Route author="yech1990" example="/sciencemag/current/science" path="/journals/sciencemag/current/:journal" :paramsDesc="['期刊名简写']" supportScihub="1"/>
|
||||
|
||||
| `:journal` | 期刊名 | 路由 |
|
||||
| :--------: | :----------------------------: | ---------------------------------------------------------------- |
|
||||
|
|
@ -130,10 +109,35 @@ pageClass: routes
|
|||
|
||||
</Route>
|
||||
|
||||
### Science 主刊-在线发表
|
||||
### 主刊-在线发表
|
||||
|
||||
<Route author="yech1990" example="/sciencemag/early/science" path="/sciencemag/early/science" />
|
||||
<Route author="yech1990" example="/sciencemag/early/science" path="/journals/sciencemag/early/science" supportScihub="1"/>
|
||||
|
||||
_仅支持 Science 主刊_
|
||||
|
||||
</Route>
|
||||
|
||||
## X-MOL
|
||||
|
||||
### 平台-期刊
|
||||
|
||||
<Route author="cssxsh" example="/journals/x-mol/paper/0/9" path="/journals/x-mol/paper/:type/:magazine" :paramsDesc="['类别','机构,两个参数都可从期刊URL获取。']" />
|
||||
|
||||
## 谷歌学术
|
||||
|
||||
### 关键词更新
|
||||
|
||||
<Route author="HenryQW" example="/google/scholar/data+visualization" path="/google/scholar/:query" :paramsDesc="['查询语句, 支持「简单」和「高级」两种模式:']" anticrawler="1">
|
||||
|
||||
1. 简单模式, 例如「data visualization」, <https://rsshub.app/google/scholar/data+visualization>.
|
||||
2. 高级模式, 前往 [Google Scholar](https://scholar.google.com/schhp?hl=zh-cn&as_sdt=0,5), 点击左上角, 选择高级搜索并提交查询. 此时 URL 应为: <https://scholar.google.com/scholar?as_q=data+visualization&as_epq=&as_oq=&as_eq=&as_occt=any&as_sauthors=&as_publication=&as_ylo=2018&as_yhi=&hl=zh-CN&as_sdt=0%2C5>, 复制`https://scholar.google.com/scholar?`后的所有语句作为本路由的查询参数. 例子所对应的完整路由为<https://rsshub.app/google/scholar/as_q=data+visualization&as_epq=&as_oq=&as_eq=&as_occt=any&as_sauthors=&as_publication=&as_ylo=2018&as_yhi=&hl=zh-CN&as_sdt=0%2C5>.
|
||||
|
||||
</Route>
|
||||
|
||||
### 作者引用更新
|
||||
|
||||
<Route author="KellyHwong" example="/google/citations/mlmE4JMAAAAJ" path="/google/citations/:id" anticrawler="1">
|
||||
|
||||
路由中的参数 id,即用户谷歌学术引用页面 url 中的 id,如 https://scholar.google.com/citations?hl=zh-CN&user=mlmE4JMAAAAJ 中 user= 后的 mlmE4JMAAAAJ。
|
||||
|
||||
</Route>
|
||||
|
|
|
|||
|
|
@ -65,6 +65,14 @@ Telegram 即时预览模式需要在官网制作页面处理模板,请前往[
|
|||
|
||||
举例: <https://rsshub.app/novel/biquge/94_94525?tgiv=bd3c42818a7f7e>
|
||||
|
||||
## 输出 Sci-hub 链接
|
||||
|
||||
可以输出 Sci-hub 链接,用于知名期刊或输出 DOI 的科学期刊类 RSS。
|
||||
|
||||
- scihub: 任意值开启
|
||||
|
||||
举例: <https://rsshub.app/pnas/latest?scihub=1>
|
||||
|
||||
## 输出格式
|
||||
|
||||
RSSHub 同时支持 RSS 2.0 和 Atom 输出格式, 在路由末尾添加 `.rss` 或 `.atom` 即可请求对应输出格式, 缺省为 RSS 2.0
|
||||
|
|
|
|||
|
|
@ -124,6 +124,9 @@ const calculateValue = () => {
|
|||
discuz: {
|
||||
cookies: discuz_cookies,
|
||||
},
|
||||
scihub: {
|
||||
host: envs.SCIHUB_HOST || 'https://sci-hub.tw/',
|
||||
},
|
||||
};
|
||||
};
|
||||
calculateValue();
|
||||
|
|
|
|||
|
|
@ -186,7 +186,7 @@ module.exports = async (ctx, next) => {
|
|||
});
|
||||
}
|
||||
|
||||
// fulltest
|
||||
// fulltext
|
||||
if (ctx.query.mode && ctx.query.mode.toLowerCase() === 'fulltext') {
|
||||
const tasks = ctx.state.data.item.map(async (item) => {
|
||||
const { link, author, description } = item;
|
||||
|
|
@ -209,6 +209,14 @@ module.exports = async (ctx, next) => {
|
|||
});
|
||||
await Promise.all(tasks);
|
||||
}
|
||||
|
||||
// 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}`;
|
||||
return item;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1958,8 +1958,8 @@ router.get('/kzfeed/topic/:id', require('./routes/kzfeed/topic'));
|
|||
router.get('/factcheck', require('./routes/tencent/factcheck'));
|
||||
|
||||
// X-MOL化学资讯平台
|
||||
router.get('/x-mol/news/:tag?', require('./routes/x-mol/news.js'));
|
||||
router.get('/x-mol/paper/:type/:magazine', require('./routes/x-mol/paper'));
|
||||
router.get('/x-mol/news/:tag?', require('./routes/journals/x-mol/news.js'));
|
||||
router.get('/x-mol/paper/:type/:magazine', require('./routes/journals/x-mol/paper'));
|
||||
|
||||
// 知识分子
|
||||
router.get('/zhishifenzi/news/:type?', require('./routes/zhishifenzi/news'));
|
||||
|
|
@ -1987,31 +1987,29 @@ router.get('/kaggle/discussion/:forumId/:sort?', require('./routes/kaggle/discus
|
|||
router.get('/kaggle/competitions/:category?', require('./routes/kaggle/competitions'));
|
||||
|
||||
// PubMed Trending
|
||||
router.get('/pubmed/trending', require('./routes/pubmed/trending'));
|
||||
router.get('/pubmed/trending', require('./routes/journals/pubmed/trending'));
|
||||
|
||||
// 领科 (linkresearcher.com)
|
||||
router.get('/linkresearcher/:params', require('./routes/linkresearcher/index'));
|
||||
|
||||
// eLife [Sci Journal]
|
||||
router.get('/elife/latest', require('./routes/elife/latest'));
|
||||
router.get('/elife/:tid', require('./routes/elife/subject'));
|
||||
router.get('/elife/:tid', require('./routes/journals/elife/index'));
|
||||
|
||||
// PNAS [Sci Journal]
|
||||
router.get('/pnas/latest', require('./routes/pnas/latest'));
|
||||
router.get('/pnas/:tid', require('./routes/pnas/topic'));
|
||||
router.get('/pnas/:tid', require('./routes/journals/pnas/index'));
|
||||
|
||||
// cell [Sci Journal]
|
||||
router.get('/cell/cell/:category', require('./routes/cell/cell/index'));
|
||||
router.get('/cell/cell/:category', require('./routes/journals/cell/cell/index'));
|
||||
|
||||
// nature + nature 子刊 [Sci Journal]
|
||||
router.get('/nature/research/:journal?', require('./routes/nature/research'));
|
||||
router.get('/nature/news-and-comment/:journal?', require('./routes/nature/news-and-comment'));
|
||||
router.get('/nature/news', require('./routes/nature/news'));
|
||||
router.get('/nature/highlight', require('./routes/nature/highlight'));
|
||||
router.get('/nature/research/:journal?', require('./routes/journals/nature/research'));
|
||||
router.get('/nature/news-and-comment/:journal?', require('./routes/journals/nature/news-and-comment'));
|
||||
router.get('/nature/news', require('./routes/journals/nature/news'));
|
||||
router.get('/nature/highlight', require('./routes/journals/nature/highlight'));
|
||||
|
||||
// science [Sci Journal]
|
||||
router.get('/sciencemag/current/:journal?', require('./routes/sciencemag/current'));
|
||||
router.get('/sciencemag/early/science', require('./routes/sciencemag/early'));
|
||||
router.get('/sciencemag/current/:journal?', require('./routes/journals/sciencemag/current'));
|
||||
router.get('/sciencemag/early/science', require('./routes/journals/sciencemag/early'));
|
||||
|
||||
// dlsite
|
||||
router.get('/dlsite/new/:type', require('./routes/dlsite/new'));
|
||||
|
|
|
|||
|
|
@ -1,54 +0,0 @@
|
|||
const cheerio = require('cheerio');
|
||||
const got = require('@/utils/got');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const url = `https://elifesciences.org`;
|
||||
|
||||
const res = await got.get(url);
|
||||
const $ = cheerio.load(res.data);
|
||||
$('.grid-secondary-column').remove();
|
||||
const list = $('li.listing-list__item').get();
|
||||
|
||||
const out = await Promise.all(
|
||||
list.map(async (item) => {
|
||||
const $ = cheerio.load(item);
|
||||
const title = $('a.teaser__header_text_link').text();
|
||||
const partial = $('a.teaser__header_text_link').attr('href');
|
||||
const address = `${url}${partial}`;
|
||||
const time = $('time').text();
|
||||
const description = $('div.teaser__body').text();
|
||||
const author = $('div.teaser__secondary_info').text();
|
||||
|
||||
const cache = await ctx.cache.get(address);
|
||||
if (cache) {
|
||||
return Promise.resolve(JSON.parse(cache));
|
||||
}
|
||||
const res = await got.get(address);
|
||||
const capture = cheerio.load(res.data);
|
||||
|
||||
const abstract = capture('#abstract .article-section__body').html();
|
||||
let contents;
|
||||
if (description !== '') {
|
||||
contents = `${description}<br /><br /><h2 style="font-size: 14pt"><center>Abstract</center></h2>${abstract}`;
|
||||
} else {
|
||||
contents = `<h2"><center>Abstract</center></h2>${abstract}`;
|
||||
}
|
||||
|
||||
const single = {
|
||||
title,
|
||||
author: author,
|
||||
description: contents,
|
||||
link: address,
|
||||
guid: address,
|
||||
pubDate: new Date(time).toUTCString(),
|
||||
};
|
||||
ctx.cache.set(address, JSON.stringify(single));
|
||||
return Promise.resolve(single);
|
||||
})
|
||||
);
|
||||
ctx.state.data = {
|
||||
title: `eLife | Latest Research`,
|
||||
link: url,
|
||||
item: out,
|
||||
};
|
||||
};
|
||||
|
|
@ -107,6 +107,7 @@ module.exports = async (ctx) => {
|
|||
description: contents,
|
||||
link: address,
|
||||
guid: address,
|
||||
doi: $('dc\\:identifier').text(),
|
||||
pubDate: pubDate,
|
||||
};
|
||||
ctx.cache.set(address, JSON.stringify(single));
|
||||
|
|
@ -3,12 +3,22 @@ const got = require('@/utils/got');
|
|||
|
||||
module.exports = async (ctx) => {
|
||||
const baseUrl = `https://elifesciences.org`;
|
||||
const url = `${baseUrl}/subjects/${ctx.params.tid}`;
|
||||
const tid = ctx.params.tid;
|
||||
|
||||
let url = baseUrl;
|
||||
if (tid !== 'latest') {
|
||||
url = `${baseUrl}/subjects/${ctx.params.tid}`;
|
||||
}
|
||||
|
||||
const res = await got.get(url);
|
||||
const $ = cheerio.load(res.data);
|
||||
$('.grid-secondary-column').remove();
|
||||
const topic = $('h1.content-header__title.content-header__title--xx-short').text();
|
||||
|
||||
let topic = 'latest';
|
||||
if (tid !== 'latest') {
|
||||
topic = $('h1.content-header__title.content-header__title--xx-short').text();
|
||||
}
|
||||
|
||||
const list = $('li.listing-list__item').get();
|
||||
|
||||
const out = await Promise.all(
|
||||
|
|
@ -19,7 +29,9 @@ module.exports = async (ctx) => {
|
|||
const address = `${baseUrl}${partial}`;
|
||||
const time = $('time').text();
|
||||
const description = $('div.teaser__body').text();
|
||||
const author = $('div.teaser__secondary_info').text();
|
||||
const author = $('div.teaser__secondary_info')
|
||||
.text()
|
||||
.trim();
|
||||
|
||||
const cache = await ctx.cache.get(address);
|
||||
if (cache) {
|
||||
|
|
@ -42,6 +54,7 @@ module.exports = async (ctx) => {
|
|||
description: contents,
|
||||
link: address,
|
||||
guid: address,
|
||||
doi: capture('meta[name="dc.identifier"]')[0].attribs.content,
|
||||
pubDate: new Date(time).toUTCString(),
|
||||
};
|
||||
ctx.cache.set(address, JSON.stringify(single));
|
||||
|
|
@ -3,7 +3,15 @@ const got = require('@/utils/got');
|
|||
|
||||
module.exports = async (ctx) => {
|
||||
const baseUrl = `https://www.pnas.org`;
|
||||
const url = `${baseUrl}/content/by/section/${ctx.params.tid}`;
|
||||
|
||||
const tid = ctx.params.tid;
|
||||
|
||||
let url = `${baseUrl}/content/early/recent`;
|
||||
if (tid !== 'latest') {
|
||||
url = `${baseUrl}/content/by/section/${ctx.params.tid}`;
|
||||
} else {
|
||||
ctx.params.tid = 'Latest Research';
|
||||
}
|
||||
|
||||
const res = await got.get(url);
|
||||
const $ = cheerio.load(res.data);
|
||||
|
|
@ -15,7 +23,6 @@ module.exports = async (ctx) => {
|
|||
const title = $('.highwire-cite-title').text();
|
||||
const partial = $('.highwire-cite-linked-title').attr('href');
|
||||
const address = `${baseUrl}${partial}`;
|
||||
const time = $('time').text();
|
||||
let author;
|
||||
if ($('.highwire-citation-authors span').length > 3) {
|
||||
author = $('.highwire-citation-author.first').text() + ' et al.';
|
||||
|
|
@ -44,7 +51,8 @@ module.exports = async (ctx) => {
|
|||
description: contents,
|
||||
link: address,
|
||||
guid: address,
|
||||
pubDate: new Date(time).toUTCString(),
|
||||
doi: capture('meta[name="DC.Identifier"]')[0].attribs.content,
|
||||
pubDate: new Date(capture('meta[name="DC.Date"]')[0].attribs.content).toUTCString(),
|
||||
};
|
||||
ctx.cache.set(address, JSON.stringify(single));
|
||||
return Promise.resolve(single);
|
||||
|
|
@ -1,58 +0,0 @@
|
|||
const cheerio = require('cheerio');
|
||||
const got = require('@/utils/got');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const baseUrl = `https://www.pnas.org`;
|
||||
const url = `${baseUrl}/content/early/recent`;
|
||||
|
||||
const res = await got.get(url);
|
||||
const $ = cheerio.load(res.data);
|
||||
const list = $('.highwire-citation-pnas-list-complete').get();
|
||||
|
||||
const out = await Promise.all(
|
||||
list.map(async (item) => {
|
||||
const $ = cheerio.load(item);
|
||||
const title = $('.highwire-cite-title').text();
|
||||
const partial = $('.highwire-cite-linked-title').attr('href');
|
||||
const address = `${baseUrl}${partial}`;
|
||||
const time = $('time').text();
|
||||
let author;
|
||||
if ($('.highwire-citation-authors span').length > 3) {
|
||||
author = $('.highwire-citation-author.first').text() + ' et al.';
|
||||
} else {
|
||||
author = $('.highwire-citation-authors span').text();
|
||||
}
|
||||
const cache = await ctx.cache.get(address);
|
||||
if (cache) {
|
||||
return Promise.resolve(JSON.parse(cache));
|
||||
}
|
||||
const res = await got.get(address);
|
||||
const capture = cheerio.load(res.data);
|
||||
|
||||
const significance = capture('.executive-summary').html();
|
||||
const abstract = capture('.section.abstract').html();
|
||||
let contents;
|
||||
if (abstract !== null) {
|
||||
contents = significance + abstract;
|
||||
} else {
|
||||
contents = significance;
|
||||
}
|
||||
|
||||
const single = {
|
||||
title,
|
||||
author: author,
|
||||
description: contents,
|
||||
link: address,
|
||||
guid: address,
|
||||
pubDate: new Date(time).toUTCString(),
|
||||
};
|
||||
ctx.cache.set(address, JSON.stringify(single));
|
||||
return Promise.resolve(single);
|
||||
})
|
||||
);
|
||||
ctx.state.data = {
|
||||
title: `PNAS | Latest Research`,
|
||||
link: url,
|
||||
item: out,
|
||||
};
|
||||
};
|
||||
Loading…
Reference in New Issue