mirror of
https://github.com/DIYgod/RSSHub.git
synced 2026-09-24 23:12:34 +08:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
+1
-1
@@ -11,7 +11,7 @@ ARG PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1;
|
||||
|
||||
RUN ln -sf /bin/bash /bin/sh
|
||||
|
||||
RUN apt-get update && apt-get install -yq libgconf-2-4 apt-transport-https git dumb-init --no-install-recommends && apt-get clean \
|
||||
RUN apt-get update && apt-get install -yq libgconf-2-4 apt-transport-https git dumb-init python make g++ build-essential --no-install-recommends && apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
@@ -83,6 +83,29 @@ Behance 用户主页 URL 获取用户名,如 <https://www.behance.net/mishapet
|
||||
|
||||
<Route author="nczitzk" example="/monotype/article" path="/monotype/article" />
|
||||
|
||||
## Notefolio
|
||||
|
||||
### Works
|
||||
|
||||
<Route author="nczitzk" example="/notefolio" path="/notefolio/:caty?/:order?/:time?/:query?" :paramsDesc="['分类,见下表,默认为 `all`', '排序,可选 `pick` 指 Notefolio 精选,`newest` 指 最新,`noted` 指 知名,默认为 `pick`', '时间,可选 `all` 指 全部,`day` 指 最近24小时,`week` 指 最近一周,`month` 指 最近一个月,`month3` 指 最近三个月,默认为`all`', '关键词,默认为空']">
|
||||
|
||||
| 分类 | 韩文分类名 | 中文分类名 |
|
||||
| ---- | --------------- | --------------- |
|
||||
| all | 전체 | 全部 |
|
||||
| A7 | 공예 | 工艺品 |
|
||||
| J7 | 그래픽 디자인 | 平面设计 |
|
||||
| B7 | 디지털 아트 | 数字艺术 |
|
||||
| C7 | 영상/모션그래픽 | 视频 / 图形动画 |
|
||||
| D7 | 브랜딩/편집 | 品牌创建 / 编辑 |
|
||||
| E7 | 산업 디자인 | 工业设计 |
|
||||
| F7 | UI/UX | UI/UX |
|
||||
| G7 | 일러스트레이션 | 插画 |
|
||||
| K7 | 타이포그래피 | 字体 |
|
||||
| H7 | 파인아트 | 纯艺术 |
|
||||
| I7 | 포토그래피 | 摄影 |
|
||||
|
||||
</Route>
|
||||
|
||||
## UI 中国
|
||||
|
||||
### 推荐文章
|
||||
|
||||
@@ -77,6 +77,29 @@ Default is under 'https://www.methodstudios.com/en/features'.
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## Notefolio
|
||||
|
||||
### Works
|
||||
|
||||
<RouteEn author="nczitzk" example="/notefolio" path="/notefolio/:caty?/:order?/:time?/:query?" :paramsDesc="['Category, see below, `all` by default', 'Order, `pick` as Notefolio Pick, `newest` as Newest, `noted` as Noted, `pick` by default', 'Time, `all` as All the time, `day` as Latest 24 hours, `week` as Latest week, `month` as Latest month, `month3` as Latest 3 months, `all` by default', 'Keyword, empty by default']">
|
||||
|
||||
| Category | Name in Korean | Name in English |
|
||||
| -------- | -------------- | --------------- |
|
||||
| all | 전체 | All |
|
||||
| A7 | 공예 | Crafts |
|
||||
| J7 | 그래픽 디자인 | Graphic Design |
|
||||
| B7 | 디지털 아트 | Digital Art |
|
||||
| C7 | 영상/모션그래픽 | Video / Motion Graphics |
|
||||
| D7 | 브랜딩/편집 | Branding / Editing |
|
||||
| E7 | 산업 디자인 | Industrial Design |
|
||||
| F7 | UI/UX | UI/UX |
|
||||
| G7 | 일러스트레이션 | Illustration |
|
||||
| K7 | 타이포그래피 | Typography |
|
||||
| H7 | 파인아트 | Fine Art |
|
||||
| I7 | 포토그래피 | Photography |
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## Unit Image
|
||||
|
||||
### Films
|
||||
|
||||
@@ -15,3 +15,19 @@ pageClass: routes
|
||||
### US Stock News
|
||||
|
||||
<RouteEn author="HenryQW" example="/finviz/news/AAPL" path="/finviz/news/:ticker" :paramsDesc="['The stock ticker']"/>
|
||||
|
||||
## World Economic Forum
|
||||
|
||||
### Report
|
||||
|
||||
<RouteEn author="nczitzk" example="/weforum/report" path="/weforum/report/:lang?/:year?/:platform?" :paramsDesc="['Language, see below, `en` by default', 'Year, filter by year, all by default', 'Platform, filter by platform, all by default']">
|
||||
|
||||
Languages
|
||||
|
||||
| English | Español | Français | 中文 | 日本語 |
|
||||
| ------- | ------- | -------- | ---- | ------ |
|
||||
| en | es | fr | cn | jp |
|
||||
|
||||
See filters in [Report](https://www.weforum.org/reports) for Year and Platform these two parameters.
|
||||
|
||||
</RouteEn>
|
||||
|
||||
@@ -117,6 +117,18 @@ Official Website: [https://www.ssm.gov.mo/apps1/PreventWuhanInfection/en.aspx](h
|
||||
|
||||
<Route author="sbilly" example="/mitre/publications" path="/mitre/publications" />
|
||||
|
||||
## Nobel Prize
|
||||
|
||||
### List
|
||||
|
||||
<RouteEn author="nczitzk" example="/nobelprize" path="/nobelprize/:caty" :paramsDesc="['Category, see below, all by default']">
|
||||
|
||||
| Physics | Chemistry | Physiology or Medicine | Literature | Peace | Economic Science |
|
||||
| ------- | --------- | ---------------------- | ---------- | ----- | ----------------- |
|
||||
| physics | chemistry | physiology-or-medicine | literature | peace | economic-sciences |
|
||||
|
||||
</RouteEn>
|
||||
|
||||
## Parcel Tracking
|
||||
|
||||
### Hermes UK
|
||||
|
||||
@@ -74,7 +74,13 @@ Output Sci-hub link in scientific journal routes, this supports major journals o
|
||||
|
||||
- scihub: set to any value
|
||||
|
||||
举例: <https://rsshub.app/pnas/latest?scihub=1>
|
||||
Eg: <https://rsshub.app/pnas/latest?scihub=1>
|
||||
|
||||
## Conversion between Traditional and Simplified Chinese
|
||||
|
||||
- opencc: s2t (Simplified Chinese to Traditional Chinese)、t2s (Traditional Chinese to Simplified Chinese), other optional values refer to [OpenCC - Configurations](https://github.com/BYVoid/OpenCC#configurations-%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6)
|
||||
|
||||
Eg: <https://rsshub.app/dcard/posts/popular?opencc=t2s>
|
||||
|
||||
## Output Formats
|
||||
|
||||
|
||||
@@ -62,6 +62,22 @@ pageClass: routes
|
||||
|
||||
<Route author="nczitzk" example="/gelonghui/keyword/ 早报" path="/gelonghui/keyword/:keyword" :paramsDesc="[' 搜索关键字']/>
|
||||
|
||||
## 世界经济论坛
|
||||
|
||||
### 报告
|
||||
|
||||
<Route author="nczitzk" example="/weforum/report" path="/weforum/report/:lang?/:year?/:platform?" :paramsDesc="['语言,见下表,默认为 `en`', '年份,对应年份过滤条件,默认为 `所有`', '平台,对应平台过滤条件,默认为 `所有`']">
|
||||
|
||||
语言
|
||||
|
||||
| English | Español | Français | 中文 | 日本語 |
|
||||
| ------- | ------- | -------- | ---- | ------ |
|
||||
| en | es | fr | cn | jp |
|
||||
|
||||
年份 和 平台 这两个参数请参见 [报告页](https://www.weforum.org/reports) 过滤条件处。
|
||||
|
||||
</Route>
|
||||
|
||||
## 淘股吧股票论坛
|
||||
|
||||
### 论坛总版
|
||||
|
||||
-485
@@ -1,485 +0,0 @@
|
||||
---
|
||||
pageClass: routes
|
||||
---
|
||||
|
||||
# 游戏
|
||||
|
||||
## 3DMGame
|
||||
|
||||
### 新闻中心
|
||||
|
||||
<Route author="zhboner" example="/3dm/news" path="/3dm/news"/>
|
||||
|
||||
### 游戏资讯
|
||||
|
||||
<Route author="sinchang jacky2001114 HenryQW" example="/3dm/detroitbecomehuman/news" path="/3dm/:name/:type" :paramsDesc="['游戏的名字, 可以在专题页的 url 中找到', '资讯类型']">
|
||||
|
||||
| 新闻 | 攻略 | 下载资源 | 区块链快讯 |
|
||||
| ---- | ---- | -------- | ---------- |
|
||||
| news | gl | resource | blockchain |
|
||||
|
||||
</Route>
|
||||
|
||||
## 4Gamers 新闻
|
||||
|
||||
### 分类
|
||||
|
||||
<Route author="hoilc" example="/4gamers/category/352" path="/4gamers/category/:category" :paramsDesc="['分类 ID, 可从分类 URL 中找到']"/>
|
||||
|
||||
### 标签
|
||||
|
||||
<Route author="hoilc" example="/4gamers/tag/英雄聯盟" path="/4gamers/tag/:tag" :paramsDesc="['标签名, 可在标签 URL 中找到']"/>
|
||||
|
||||
### 主題
|
||||
|
||||
<Route author="bestpika" example="/4gamers/topic/gentlemen-topic" path="/4gamers/topic/:topic" :paramsDesc="['主题, 可在首页上方页面内找到']" />
|
||||
|
||||
## a9vgNews 游戏新闻
|
||||
|
||||
### a9vgNews 游戏新闻
|
||||
|
||||
<Route author="monner-henster" example="/a9vg/a9vg" path="/a9vg/a9vg"/>
|
||||
|
||||
## dekudeals
|
||||
|
||||
### 分类
|
||||
|
||||
<Route author="LogicJake" example="/dekudeals/most-wanted" path="/dekudeals/:type" :paramsDesc="['分类名称,可在 URL 中查看']"/>
|
||||
|
||||
## Epic Games Store
|
||||
|
||||
### 免费游戏
|
||||
|
||||
<Route author="Zyx-A" example="/epicgames/freegames" path="/epicgames/freegames"/>
|
||||
|
||||
## Fate Grand Order
|
||||
|
||||
### News
|
||||
|
||||
<Route author="nczitzk" example="/fgo/news" path="/fgo/news"/>
|
||||
|
||||
## GNN.tw 游戏新闻
|
||||
|
||||
### GNN.tw 游戏新闻
|
||||
|
||||
<Route author="monner-henster" example="/gnn/gnn" path="/gnn/gnn"/>
|
||||
|
||||
## Indienova
|
||||
|
||||
### indienova 文章
|
||||
|
||||
<Route author="GensouSakuya kt286" example="/indienova/article" path="indienova/:type" :paramsDesc="['类型: `article` 文章,`development` 开发']"/>
|
||||
|
||||
## Maxjia News
|
||||
|
||||
### Dota 2
|
||||
|
||||
<Route author="dearrrfish" example="/maxnews/dota2" path="maxnews/dota2" />
|
||||
|
||||
## Metacritic
|
||||
|
||||
### 新游发行
|
||||
|
||||
<Route author="HenryQW" example="/metacritic/release/switch/coming" path="/metacritic/release/:platform/:type?/:sort?" :paramsDesc="['主机平台', '发行类型,默认为 `new`', '排序类型,默认为`date`']">
|
||||
|
||||
支持的主机平台:
|
||||
|
||||
| PS 4 | Xbox One | Switch | PC | Wii U | 3DS | PS Vita | iOS |
|
||||
| ---- | -------- | ------ | -- | ----- | --- | ------- | --- |
|
||||
| ps4 | xboxone | switch | pc | wii-u | 3ds | vita | ios |
|
||||
|
||||
发行类型,默认为 `new`:
|
||||
|
||||
| 新游发行 | 即将发行 | 全部 |
|
||||
| -------- | -------- | ---- |
|
||||
| new | coming | all |
|
||||
|
||||
排序类型,默认为`date`:
|
||||
|
||||
| 日期 | Metacritic 评分 | 用户评分 |
|
||||
| ---- | --------------- | --------- |
|
||||
| date | metascore | userscore |
|
||||
|
||||
</Route>
|
||||
|
||||
## Minecraft
|
||||
|
||||
### Java 版游戏更新
|
||||
|
||||
<Route author="TheresaQWQ" example="/minecraft/version" path="/minecraft/version" />
|
||||
|
||||
### CurseForge Mod 更新
|
||||
|
||||
<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` 中找到']"/>
|
||||
|
||||
## Nintendo
|
||||
|
||||
### eShop 新发售游戏
|
||||
|
||||
<Route author="HFO4" example="/nintendo/eshop/hk" path="/nintendo/eshop/:region" :paramsDesc="['地区标识,可为`hk`(港服),`jp`(日服),`us`(美服), `cn`(国服)']"/>
|
||||
|
||||
### 首页资讯(香港)
|
||||
|
||||
<Route author="HFO4" example="/nintendo/news" path="/nintendo/news"/>
|
||||
|
||||
### 首页资讯(中国)
|
||||
|
||||
<Route author="NeverBehave" example="/nintendo/news/china" path="/nintendo/news/china"/>
|
||||
|
||||
### 直面会
|
||||
|
||||
<Route author="HFO4" example="/nintendo/direct" path="/nintendo/direct"/>
|
||||
|
||||
### Switch 本体更新情报(日本)
|
||||
|
||||
<Route author="hoilc" example="/nintendo/system-update" path="/nintendo/system-update"/>
|
||||
|
||||
## PlayStation
|
||||
|
||||
### PlayStation Store 游戏列表
|
||||
|
||||
<Route author="DIYgod" example="/ps/list/STORE-MSF86012-PLUS_FTT_CONTENT" path="/ps/list/:gridName" :paramsDesc="['列表的 grid 名']" radar="1">
|
||||
|
||||
适用于 URL 如 <https://store.playstation.com/zh-hans-hk/grid/STORE-MSF86012-PLUS_FTT_CONTENT> 的列表页,比如 [PSN 每月免费游戏](https://store.playstation.com/zh-hans-hk/grid/STORE-MSF86012-PLUS_FTT_CONTENT) 的 gridName 为 STORE-MSF86012-PLUS_FTT_CONTENT
|
||||
|
||||
</Route>
|
||||
|
||||
### PlayStation Store 游戏折扣 | 价格
|
||||
|
||||
<Route author="MisteryMonster" example="/ps/product/UP9000-CUSA00552_00-THELASTOFUS00000" path="/ps/:lang/product/:gridName" :paramsDesc="['地区语言','游戏的 grid 名']" radar="1">
|
||||
|
||||
地区语言如 `zh-hans-hk` 代表香港区简体中文, `zh-hant-tw` 为台湾繁体中文。不同地区游戏 gridName 不同,非中文地区使用英文提示。
|
||||
|
||||
适用于 URL 如 <https://store.playstation.com/zh-hans-hk/product/HP4497-CUSA16570_00-ASIAFULLGAME0000> 的游戏。
|
||||
|
||||
比如 PlayStation Store 香港简体中文区的 [《赛博朋克 2077》](https://store.playstation.com/zh-hans-hk/product/HP4497-CUSA16570_00-ASIAFULLGAME0000) 的 lang 为 `zh-hans-hk`, gridName 为 `HP4497-CUSA16570_00-ASIAFULLGAME0000`
|
||||
|
||||
</Route>
|
||||
|
||||
### PlayStation Network 用户奖杯
|
||||
|
||||
<Route author="DIYgod" example="/ps/trophy/DIYgod_" path="/ps/trophy/:id" :paramsDesc="['用户 ID']" radar="1"/>
|
||||
|
||||
### PlayStation 4 系统更新纪录
|
||||
|
||||
<Route author="Jeason0228" example="/ps/ps4updates/" path="/ps/ps4updates/" radar="1"/>
|
||||
|
||||
## psnine
|
||||
|
||||
### 首页 - 白金攻略 / 游戏开箱
|
||||
|
||||
<Route author="LightStrawberry" example="/psnine/index" path="/psnine/index"/>
|
||||
|
||||
### 新闻 - 游戏资讯
|
||||
|
||||
<Route author="LightStrawberry" example="/psnine/news" path="/psnine/news"/>
|
||||
### 数折-折扣信息推送
|
||||
|
||||
<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"/>
|
||||
|
||||
## Rockstar Games Social Club
|
||||
|
||||
### 在线活动
|
||||
|
||||
<Route author="kookxiang" example="/socialclub/events/GTAV" path="/socialclub/events/:game?" :paramsDesc="['游戏代码(默认所有)']">
|
||||
|
||||
| 游戏代码 | 游戏名称 |
|
||||
| -------- | ------------ |
|
||||
| GTAV | 侠盗猎车手 5 |
|
||||
| RDR2 | 荒野大镖客 2 |
|
||||
|
||||
</Route>
|
||||
|
||||
## ScoreSaber
|
||||
|
||||
### 用户动态
|
||||
|
||||
<Route author="zhangpeng2k" example="/scoresaber/user/76561198400378578" path="/scoresaber/user/:id" :paramsDesc="['用户 id, 用户主页URL中获取']"/>
|
||||
|
||||
## Steam
|
||||
|
||||
### Steam search
|
||||
|
||||
<Route author="maple3142" example="/steam/search/specials=1&term=atelier" path="/steam/search/:params" :paramsDesc="['搜寻参数']" radar="1">
|
||||
|
||||
参数 params 请从 Steam 的 URL 取得
|
||||
|
||||
Example: `https://store.steampowered.com/search/?specials=1&term=atelier` 中的 params 是 `specials=1&term=atelier`,将它填入 RSSHub 的路由就好
|
||||
|
||||
</Route>
|
||||
|
||||
### Steam news
|
||||
|
||||
<Route author="maple3142" example="/steam/news/282800" path="/steam/news/:appids" :paramsDesc="['游戏 id']" radar="1"/>
|
||||
|
||||
## SteamGifts
|
||||
|
||||
### Discussions
|
||||
|
||||
<Route author="whtsky" example="/steamgifts/discussions" path="/steamgifts/discussions/:category?" :paramsDesc="['分类名称,默认为All']"/>
|
||||
|
||||
## TapTap
|
||||
|
||||
::: warning 注意
|
||||
|
||||
由于区域限制,需要在有国内 IP 的机器上自建才能正常获取 RSS
|
||||
|
||||
:::
|
||||
|
||||
### 游戏论坛
|
||||
|
||||
<Route author="hoilc" example="/taptap/topic/142793/official" path="/taptap/topic/:id/:label?" :paramsDesc="['游戏ID, 游戏主页URL中获取', '论坛版块ID, 默认显示所有帖子, 论坛版块URL中`group_label_id`参数,特别的有']"/>
|
||||
|
||||
| 全部 | 精华 | 官方 |
|
||||
| ---- | ----- | -------- |
|
||||
| all | elite | official |
|
||||
|
||||
### 游戏更新
|
||||
|
||||
<Route author="hoilc" example="/taptap/changelog/142793" path="/taptap/changelog/:id" :paramsDesc="['游戏ID, 游戏主页URL中获取']"/>
|
||||
|
||||
### 游戏评价
|
||||
|
||||
<Route author="hoilc" example="/taptap/review/142793/hot" path="/taptap/review/:id/:order?" :paramsDesc="['游戏ID, 游戏主页URL中获取', '排序方式, 空为默认排序, 可选如下']"/>
|
||||
|
||||
| 最新 | 最热 | 游戏时长 |
|
||||
| ------ | ---- | -------- |
|
||||
| update | hot | spent |
|
||||
|
||||
## 二柄 APP
|
||||
|
||||
### 新闻
|
||||
|
||||
<Route author="wushijishan" example="/erbingapp/news" path="/erbingapp/news"/>
|
||||
|
||||
## 公主链接
|
||||
|
||||
### 日服公告
|
||||
|
||||
<Route author="SayaSS" example="/pcr/news" path="/pcr/news"/>
|
||||
|
||||
### 台服公告
|
||||
|
||||
<Route author="hoilc" example="/pcr/news-tw" path="/pcr/news-tw"/>
|
||||
|
||||
### 国服公告
|
||||
|
||||
<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"/>
|
||||
|
||||
## 怪物猎人世界
|
||||
|
||||
### 更新情报
|
||||
|
||||
<Route author="DIYgod" example="/mhw/update" path="/mhw/update" radar="1"/>
|
||||
|
||||
### 最新消息
|
||||
|
||||
<Route author="DIYgod" example="/mhw/news" path="/mhw/news" radar="1"/>
|
||||
|
||||
## 旅法师营地
|
||||
|
||||
### 旅法师营地
|
||||
|
||||
<Route author="qwertyuiop6" example="/lfsyd/1" path="/lfsyd/:typecode" :paramsDesc="['订阅分区类型']">
|
||||
|
||||
| 主页资讯 | 炉石传说 | 万智牌 | 昆特牌 | 游戏王 | 电子游戏 | 手机游戏 | 桌面游戏 |
|
||||
| -------- | -------- | ------ | ------ | ------ | -------- | -------- | -------- |
|
||||
| 1 | 2 | 3 | 14 | 16 | 4 | 22 | 9 |
|
||||
|
||||
| 影之诗 | Artifact | 玩家杂谈 | 营地电台 | 2047 | 魂武 |
|
||||
| ------ | -------- | -------- | -------- | ---- | ---- |
|
||||
| 17 | 67 | 21 | 5 | 62 | 68 |
|
||||
|
||||
</Route>
|
||||
|
||||
## 米哈游
|
||||
|
||||
### 崩坏 2 - 游戏公告
|
||||
|
||||
<Route author="deepred5" example="/mihoyo/bh2/gach" path="/mihoyo/bh2/:type" :paramsDesc="['公告种类']">
|
||||
|
||||
| 最新公告 | 版本信息 | 祈愿信息 | 活动介绍 |
|
||||
| -------- | -------- | -------- | -------- |
|
||||
| new | version | gach | event |
|
||||
|
||||
</Route>
|
||||
|
||||
### 崩坏 3 - 游戏公告
|
||||
|
||||
<Route author="deepred5 nczitzk" example="/mihoyo/bh3/latest" path="/mihoyo/bh3/:type" :paramsDesc="['公告种类']">
|
||||
|
||||
| 最新 | 动态 | 公告 | 活动 | 补给 |
|
||||
| ------ | ---- | ------ | -------- | -------- |
|
||||
| latest | news | notice | activity | strategy |
|
||||
|
||||
</Route>
|
||||
|
||||
## 明日方舟
|
||||
|
||||
### 游戏公告与新闻
|
||||
|
||||
<Route author="Astrian" example="/arknights/news" path="/arknights/news"/>
|
||||
|
||||
## 奶牛关
|
||||
|
||||
### 元素文章
|
||||
|
||||
<Route author="hoilc" example="/cowlevel/element/1370" path="/cowlevel/element/:id" :paramsDesc="['元素 ID, 可在 URL 中找到']" radar="1" />
|
||||
|
||||
## 网易大神
|
||||
|
||||
### 用户发帖
|
||||
|
||||
<Route author="luyuhuang" example="/netease/ds/63dfbaf4117741daaf73404601165843" path="/netease/ds/:id" :paramsDesc="['用户ID']"/>
|
||||
|
||||
## 王者荣耀
|
||||
|
||||
### 新闻中心
|
||||
|
||||
<Route author="Jeason0228" example="/pvp/newsindex/all" path="/pvp/newsindex/:type" :paramsDesc="['栏目分类,all=全部,rm=热门,xw=新闻,gg=公告,hd=活动,ss=赛事']"/>
|
||||
|
||||
## 小黑盒
|
||||
|
||||
### 用户动态
|
||||
|
||||
<Route author="LogicJake" example="/xiaoheihe/user/7775687" path="xiaoheihe/user/:id" :paramsDesc="['用户 id']"/>
|
||||
|
||||
### 游戏新闻
|
||||
|
||||
<Route author="MyFaith" example="/xiaoheihe/news" path="xiaoheihe/news"/>
|
||||
|
||||
### 游戏折扣信息
|
||||
|
||||
<Route author="MyFaith" example="/xiaoheihe/discount/pc" path="xiaoheihe/discount/:platform?" :paramsDesc="['平台, 默认为Steam']">
|
||||
|
||||
| Steam | PlatStation4 | Switch |
|
||||
| ----- | ------------ | ------ |
|
||||
| pc | ps4 | switch |
|
||||
|
||||
</Route>
|
||||
|
||||
## 英雄联盟
|
||||
|
||||
### 新闻中心
|
||||
|
||||
<Route author="Jeason0228" example="/lol/newsindex/all" path="/lol/newsindex/:type" :paramsDesc="['栏目分类,all=全部,zh=综合,gg=公告,ss=赛事,gl=攻略,sq=社区']"/>
|
||||
|
||||
## 游民星空
|
||||
|
||||
### 游民星空今日推荐
|
||||
|
||||
<Route author="LightStrawberry" example="/gamersky/news" path="/gamersky/news"/>
|
||||
|
||||
### 游民娱乐
|
||||
|
||||
<Route author="LogicJake" example="/gamersky/ent/ymfl" path="/gamersky/ent/:category" :paramsDesc="['分类类型']">
|
||||
|
||||
| 趣囧时间 | 游民影院 | 游观天下 | 壁纸图库 | 游民盘点 | 游民福利 |
|
||||
| -------- | -------- | -------- | -------- | -------- | -------- |
|
||||
| qysj | ymyy | ygtx | bztk | ympd | ymfl |
|
||||
|
||||
</Route>
|
||||
|
||||
## 游戏打折情报
|
||||
|
||||
### 游戏折扣
|
||||
|
||||
<Route author="LogicJake" example="/yxdzqb/hot_chinese" path="/yxdzqb/:type" :paramsDesc="['折扣类型']">
|
||||
|
||||
| Steam 最新折扣 | Steam 热门游戏折扣 | Steam 热门中文游戏折扣 | Steam 历史低价 | Steam 中文游戏历史低价 |
|
||||
| -------------- | ------------------ | ---------------------- | -------------- | ---------------------- |
|
||||
| new | hot | hot_chinese | low | low_chinese |
|
||||
|
||||
</Route>
|
||||
|
||||
## 游戏时光
|
||||
|
||||
### 游戏时光新闻
|
||||
|
||||
<Route author="MyFaith" example="/vgtime/news" path="/vgtime/news" radar="1"/>
|
||||
|
||||
### 游戏时光游戏发售表
|
||||
|
||||
<Route author="MyFaith" example="/vgtime/release" path="/vgtime/release" radar="1"/>
|
||||
|
||||
### 关键词资讯
|
||||
|
||||
<Route author="DIYgod" example="/vgtime/keyword/怪物猎人" path="/vgtime/keyword/:keyword" radar="1"/>
|
||||
|
||||
## 游研社
|
||||
|
||||
### 游研社
|
||||
|
||||
<Route author="LightStrawberry" example="/yystv/category/recommend" path="/yystv/category/:category" :paramsDesc="['专栏类型']">
|
||||
|
||||
| 推游 | 游戏史 | 大事件 | 文化 | 趣闻 | 经典回顾 |
|
||||
| --------- | ------- | ------ | ------- | ---- | -------- |
|
||||
| recommend | history | big | culture | news | retro |
|
||||
|
||||
</Route>
|
||||
|
||||
## 掌上英雄联盟
|
||||
|
||||
### 推荐
|
||||
|
||||
<Route author="alizeegod" example="/lolapp/recommend" path="/lolapp/recommend"/>
|
||||
|
||||
## 最终幻想 14
|
||||
|
||||
### 最终幻想 14 国服
|
||||
|
||||
<Route author="Kiotlin" example="/ff14/ff14_zh/news" path="/ff14/ff14_zh/:type" :paramsDesc="['分类名']"/>
|
||||
|
||||
| 新闻 | 公告 | 活动 | 广告 | 所有 |
|
||||
| ---- | -------- | ------ | --------- | ---- |
|
||||
| news | announce | events | advertise | all |
|
||||
|
||||
## きららファンタジア|奇拉拉幻想曲
|
||||
|
||||
### 公告
|
||||
|
||||
<Route author="magic-akari" example="/kirara/news" path="/kirara/news"/>
|
||||
|
||||
## マギアレコード(Magia Record, 魔法纪录)
|
||||
|
||||
### 游戏公告
|
||||
|
||||
<Route author="y2361547758" example="/magireco/announcements" path="/magireco/announcements"/>
|
||||
|
||||
### 游戏横幅
|
||||
|
||||
<Route author="y2361547758" example="/magireco/event_banner" path="/magireco/event_banner"/>
|
||||
|
||||
## 巴哈姆特
|
||||
|
||||
### GNN新闻
|
||||
|
||||
<Route author="Arracc" example="/gamer/gnn/1" path="/gamer/gnn/:category?" :paramsDesc="['分类']"/>
|
||||
|
||||
暂无图片
|
||||
|
||||
| 首页 | PC | TV 掌機 | 手機遊戲 | 動漫畫 | 主題報導 | 活動展覽 | 電競 |
|
||||
| ---- | -- | ------ | -------- | ----- | ------- | -------- | ------ |
|
||||
| 缺省 | 1 | 3 | 4 | 5 | 9 | 11 | 13 |
|
||||
@@ -380,6 +380,12 @@ pageClass: routes
|
||||
|
||||
* * *
|
||||
|
||||
#### 马来西亚 `MY`
|
||||
|
||||
- 大使馆: `/embassy/my`
|
||||
|
||||
* * *
|
||||
|
||||
#### 新加坡 `SG`
|
||||
|
||||
- 大使馆: `/embassy/sg`
|
||||
@@ -412,6 +418,12 @@ pageClass: routes
|
||||
| 贝尔法斯特 | `/embassy/uk/belfast` |
|
||||
| 曼彻斯特 | `/embassy/uk/manchester` |
|
||||
|
||||
## 中華民國國防部
|
||||
|
||||
### 即時軍事動態
|
||||
|
||||
<Route author="nczitzk" example="/gov/taiwan/mnd" path="/gov/taiwan/mnd"/>
|
||||
|
||||
## 中华人民共和国海关总署
|
||||
|
||||
### 拍卖信息 / 海关法规
|
||||
|
||||
@@ -131,6 +131,116 @@ pageClass: routes
|
||||
|
||||
<Route author="MegrezZhu CoderTonyChan Felix2yu" example="/javbus/western/series/20" path="/javbus/western/series/:seriesid" :paramsDesc="['系列id,详见作品中系列的链接']" />
|
||||
|
||||
## JavDB
|
||||
|
||||
### 主页
|
||||
|
||||
<Route author="nczitzk" example="/javdb/home" path="/javdb/home/:caty?/:sort?/:filter?" :paramsDesc="['分类,见下表,默认为 `有碼`', '排序,见下表,默认为 `磁鏈更新排序`', '过滤,见下表,默认为 `可下载`']">
|
||||
|
||||
分类
|
||||
|
||||
| 有碼 | 無碼 | 歐美 | FC2 |
|
||||
| -------- | ---------- | ------- | --- |
|
||||
| censored | uncensored | western | fc2 |
|
||||
|
||||
排序
|
||||
|
||||
| 发布日期排序 | 磁鏈更新排序 |
|
||||
| ------------ | ------------ |
|
||||
| 1 | 2 |
|
||||
|
||||
过滤
|
||||
|
||||
| 全部 | 可下载 | 含字幕 | 含短評 |
|
||||
| ---- | ------ | ------ | ------ |
|
||||
| 0 | 1 | 2 | 3 |
|
||||
|
||||
</Route>
|
||||
|
||||
### 分類
|
||||
|
||||
<Route author="nczitzk" example="/javdb/tags/c2=5&c10=1" path="/javdb/tags/:query?/:caty?" :paramsDesc="['筛选,默认为 `c10=1`', '分类,见下表,默认为 `有碼`']">
|
||||
|
||||
::: tip 提示
|
||||
|
||||
在 [分類](https://javdb.com/tags) 中选定分类后,URL 中 `tags?` 后的字段即为筛选参数。
|
||||
|
||||
如 <https://javdb.com/tags?c2=5&c10=1> 中 `c2=5&c10=1` 为筛选参数。
|
||||
|
||||
:::
|
||||
|
||||
分类
|
||||
|
||||
| 有碼 | 無碼 | 歐美 | FC2 |
|
||||
| -------- | ---------- | ------- | --- |
|
||||
| censored | uncensored | western | fc2 |
|
||||
|
||||
</Route>
|
||||
|
||||
### 排行榜
|
||||
|
||||
<Route author="nczitzk" example="/javdb/rankings" path="/javdb/rankings/:caty?/:time?" :paramsDesc="['分类,见下表,默认为 `有碼`', '时间,见下表,默认为 `日榜`']">
|
||||
|
||||
分类
|
||||
|
||||
| 有碼 | 無碼 | 歐美 | FC2 |
|
||||
| -------- | ---------- | ------- | --- |
|
||||
| censored | uncensored | western | fc2 |
|
||||
|
||||
时间
|
||||
|
||||
| 日榜 | 週榜 | 月榜 |
|
||||
| ----- | ------ | ------- |
|
||||
| daily | weekly | monthly |
|
||||
|
||||
</Route>
|
||||
|
||||
### 搜索
|
||||
|
||||
<Route author="nczitzk" example="/javdb/search/巨乳" path="/javdb/search/:keyword?/:filter?" :paramsDesc="['关键字,默认为空', '过滤,见下表,默认为 `可播放`']">
|
||||
|
||||
| 全部 | 可播放 | 單體作品 | 演員 | 片商 | 導演 | 系列 | 番號 | 可下載 | 字幕 | 預覽圖 |
|
||||
| ---- | -------- | -------- | ----- | ----- | -------- | ------ | ---- | -------- | ----- | ------- |
|
||||
| | playable | single | actor | maker | director | series | code | download | cnsub | preview |
|
||||
|
||||
</Route>
|
||||
|
||||
### 演員
|
||||
|
||||
<Route author="nczitzk" example="/javdb/actors/R2Vg" path="/javdb/actors/:id/:filter?" :paramsDesc="['编号,可在演员页 URL 中找到', '过滤,见下表,默认为 `全部`']">
|
||||
|
||||
| 全部 | 可播放 | 單體作品 | 可下載 | 含字幕 |
|
||||
| ---- | ------ | -------- | ------ | ------ |
|
||||
| | p | s | d | c |
|
||||
|
||||
所有演员编号参见 [演員庫](https://javdb.com/actors)
|
||||
|
||||
</Route>
|
||||
|
||||
### 系列
|
||||
|
||||
<Route author="nczitzk" example="/javdb/series/1NW" path="/javdb/series/:id/:filter?" :paramsDesc="['编号,可在系列页 URL 中找到', '过滤,见下表,默认为 `全部`']">
|
||||
|
||||
| 全部 | 可播放 | 單體作品 | 可下載 | 字幕 | 預覽圖 |
|
||||
| ---- | -------- | -------- | -------- | ----- | ------- |
|
||||
| | playable | single | download | cnsub | preview |
|
||||
|
||||
所有系列编号参见 [系列庫](https://javdb.com/series)
|
||||
|
||||
</Route>
|
||||
|
||||
### 片商
|
||||
|
||||
<Route author="nczitzk" example="/javdb/makers/7R" path="/javdb/makers/:id/:filter?" :paramsDesc="['编号,可在片商页 URL 中找到', '过滤,见下表,默认为 `全部`']">
|
||||
|
||||
| 全部 | 可播放 | 單體作品 | 可下載 | 字幕 | 預覽圖 |
|
||||
| ---- | -------- | -------- | -------- | ----- | ------- |
|
||||
| | playable | single | download | cnsub | preview |
|
||||
|
||||
所有片商编号参见 [片商庫](https://javdb.com/makers)
|
||||
|
||||
</Route>
|
||||
|
||||
## JavLibrary
|
||||
|
||||
### 影片
|
||||
|
||||
@@ -521,6 +521,18 @@ type 为 all 时,category 参数不支持 cost 和 free
|
||||
|
||||
<Route author="cc798461" example="/moxingnet" path="/moxingnet"/>
|
||||
|
||||
## 诺贝尔奖
|
||||
|
||||
### 获奖名单
|
||||
|
||||
<Route author="nczitzk" example="/nobelprize" path="/nobelprize/:caty" :paramsDesc="['类别,见下表,默认为全部']">
|
||||
|
||||
| 物理学 | 化学 | 生理学或医学 | 文学 | 和平 | 经济学 |
|
||||
| ------- | --------- | ---------------------- | ---------- | ----- | ----------------- |
|
||||
| physics | chemistry | physiology-or-medicine | literature | peace | economic-sciences |
|
||||
|
||||
</Route>
|
||||
|
||||
## 且听风吟福利
|
||||
|
||||
### 分类
|
||||
|
||||
@@ -77,6 +77,12 @@ Telegram 即时预览模式需要在官网制作页面处理模板,请前往[
|
||||
|
||||
举例: <https://rsshub.app/pnas/latest?scihub=1>
|
||||
|
||||
## 中文简繁体转换
|
||||
|
||||
- opencc: s2t 简体转繁体、t2s 繁体转简体,其它可选值见 [OpenCC - Configurations](https://github.com/BYVoid/OpenCC#configurations-%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6)
|
||||
|
||||
举例: <https://rsshub.app/dcard/posts/popular?opencc=t2s>
|
||||
|
||||
## 输出格式
|
||||
|
||||
RSSHub 同时支持 RSS 2.0 和 Atom 输出格式,在路由末尾添加 `.rss` 或 `.atom` 即可请求对应输出格式,缺省为 RSS 2.0
|
||||
|
||||
@@ -1,770 +0,0 @@
|
||||
---
|
||||
pageClass: routes
|
||||
---
|
||||
|
||||
# 传统媒体
|
||||
|
||||
## 21 财经
|
||||
|
||||
### 频道
|
||||
|
||||
<Route author="brilon" example="/21caijing/channel/readnumber" path="/21caijing/channel/:name" :paramsDesc="['频道名称,可在[https://m.21jingji.com/](https://m.21jingji.com/)页面URL中找到']"/>
|
||||
|
||||
## AP News
|
||||
|
||||
### 话题
|
||||
|
||||
<Route author="zoenglinghou" example="/apnews/topics/apf-topnews" path="/apnews/topics/:topic" :paramsDesc="['话题名称,可在 URL 中找到,例如 AP Top News [https://apnews.com/apf-topnews](https://apnews.com/apf-topnews) 的话题为 `apf-topnews`']" radar="1"/>
|
||||
|
||||
## BBC
|
||||
|
||||
### BBC 英文
|
||||
|
||||
<Route author="HenryQW" example="/bbc/world-asia" path="/bbc/:channel" :paramsDesc="['频道, 缺省为热门']">
|
||||
|
||||
通过提取文章全文,以提供比官方源更佳的阅读体验.
|
||||
|
||||
支持大部分频道,频道名称见[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`.
|
||||
|
||||
</Route>
|
||||
|
||||
### BBC 中文网
|
||||
|
||||
<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)。
|
||||
|
||||
简体版:
|
||||
|
||||
- 频道,如金融财经 `http://www.bbc.co.uk/zhongwen/simp/business/index.xml` 则为 `/bbc/chinese/business`.
|
||||
|
||||
繁体版:
|
||||
|
||||
- 频道,如金融财经 `http://www.bbc.co.uk/zhongwen/trad/business/index.xml` 则为 `/bbc/traditionalchinese/business`.
|
||||
|
||||
</Route>
|
||||
|
||||
## Boston.com
|
||||
|
||||
### 新闻
|
||||
|
||||
<Route author="oppilate" example="/boston/technology" path="/boston/:tag?" :paramsDesc="['Tag']">
|
||||
|
||||
生成官方未提供的全文订阅点。
|
||||
有哪些 tag 请参考 [Boston.com 官网上的订阅页面](https://www.boston.com/rss-feeds)。例如,`https://www.boston.com/tag/local-news/?feed=rss` 对应 RSSHub 路由 `/boston/local-news`。
|
||||
|
||||
</Route>
|
||||
|
||||
## CBC
|
||||
|
||||
通过提取文章全文,以提供比官方源更佳的阅读体验。
|
||||
|
||||
<Route author="wb14123" example="/cbc/topics" path="/cbc/topics/:topic?" :paramsDesc="['CBC 频道。默认为 Top Stories。二级话题如 canada/toronto,需要用 `-` 替换掉 `/`。']"/>
|
||||
|
||||
## Chicago Tribune
|
||||
|
||||
### 新闻
|
||||
|
||||
<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`。由于官方源的部分路由有两级,因此这里也相应需要填写子分类。
|
||||
|
||||
</Route>
|
||||
|
||||
## e 公司
|
||||
|
||||
### 快讯
|
||||
|
||||
<Route author="hillerliao" example="/egsea/flash" path="/egsea/flash" />
|
||||
|
||||
## FT 中文网
|
||||
|
||||
### FT 中文网
|
||||
|
||||
<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 协议获取.
|
||||
|
||||
:::
|
||||
|
||||
通过提取文章全文,以提供比官方源更佳的阅读体验.
|
||||
|
||||
支持所有频道,频道名称见[官方频道 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>
|
||||
|
||||
## NHK
|
||||
|
||||
### News Web Easy
|
||||
|
||||
<Route author="Andiedie" example="/nhk/news_web_easy" path="/nhk/news_web_easy"/>
|
||||
|
||||
## Solidot
|
||||
|
||||
### 最新消息
|
||||
|
||||
<Route author="sgqy" example="/solidot/linux" path="/solidot/:type?" :paramsDesc="['消息类型. 默认为 www. 在网站上方选择后复制子域名即可']">
|
||||
|
||||
::: tip 提示
|
||||
|
||||
Solidot 提供的 feed:
|
||||
|
||||
- <https://www.solidot.org/index.rss>
|
||||
|
||||
:::
|
||||
|
||||
| 全部 | 创业 | Linux | 科学 | 科技 | 移动 | 苹果 | 硬件 | 软件 | 安全 | 游戏 | 书籍 | ask | idle | 博客 | 云计算 |
|
||||
| ---- | ------- | ----- | ------- | ---------- | ------ | ----- | -------- | -------- | -------- | ----- | ----- | --- | ---- | ---- | ------ |
|
||||
| www | startup | linux | science | technology | mobile | apple | hardware | software | security | games | books | ask | idle | blog | cloud |
|
||||
|
||||
</Route>
|
||||
|
||||
## Telecompaper
|
||||
|
||||
### 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`,默认为不限', '搜索关键字']">
|
||||
|
||||
可选分类如下
|
||||
|
||||
| WIRELESS | BROADBAND | VIDEO | GENERAL | IT | INDUSTRY RESOURCES |
|
||||
| -------- | --------- | --------- | ------- | -- | ------------------ |
|
||||
| mobile | internet | boardcast | general | it | industry-resources |
|
||||
|
||||
::: tip 提示
|
||||
|
||||
若 `country` 或 `type` 参数包含空格,则用 `-` 替代。如 `United States` 更换为 `United-States`,`White paper` 更换为 `White-paper`
|
||||
|
||||
[INDUSTRY RESOURCES](https://www.telecompaper.com/industry-resources) 分类页的 Filter 仅提供了 `Content Type` 选择器,对应路由中 `type` 参数。`year` 和 `country` 参数则对该分类无效。
|
||||
|
||||
:::
|
||||
|
||||
</Route>
|
||||
|
||||
## The Economist
|
||||
|
||||
### 分类
|
||||
|
||||
<Route author="ImSingee" example="/the-economist/latest" path="/the-economist/:endpoint" :paramsDesc="['分类名称,可在 [官方 RSS 页面 ](https://www.economist.com/rss) 找到,例如 https://www.economist.com/china/rss.xml 即为 china']"/>
|
||||
|
||||
### GRE Vocabulary
|
||||
|
||||
<Route author="xyqfer" example="/the-economist/gre-vocabulary" path="/the-economist/gre-vocabulary" />
|
||||
|
||||
## Yahoo
|
||||
|
||||
### 新聞
|
||||
|
||||
<Route author="KeiLongW" example="/yahoo-news/hk/world" path="/yahoo-news/:region/:category?" :paramsDesc="['地区','类别']">
|
||||
|
||||
`地区`
|
||||
|
||||
| 香港 | 台灣 | 美國 |
|
||||
| ---- | ---- | ---- |
|
||||
| hk | tw | en |
|
||||
|
||||
`类別`
|
||||
|
||||
| 新聞總集 | 兩岸國際 | 財經 | 娛樂 | 體育 | 健康 |
|
||||
| -------- | -------- | -------- | ------------- | ------ | ------ |
|
||||
| (空) | world | business | entertainment | sports | health |
|
||||
|
||||
</Route>
|
||||
|
||||
## 半月谈
|
||||
|
||||
### 板块
|
||||
|
||||
<Route author="LogicJake" example="/banyuetan/jicengzhili" path="/banyuetan/:name" :paramsDesc="['板块名称,可在 URL 中找到']"/>
|
||||
|
||||
## 北极星电力网
|
||||
|
||||
### 北极星环保
|
||||
|
||||
<Route author="zsimple" example="/bjx/huanbao" path="/bjx/huanbao" />
|
||||
|
||||
## 财新网
|
||||
|
||||
> 网站部分内容需要付费订阅,RSS 仅做更新提醒,不含付费内容.
|
||||
|
||||
### 新闻分类
|
||||
|
||||
<Route author="idealclover" example="/caixin/finance/regulation" path="/caixin/:column/:category" :paramsDesc="['栏目名', '栏目下的子分类名']">
|
||||
|
||||
Column 列表:
|
||||
|
||||
| 经济 | 金融 | 政经 | 环科 | 世界 | 观点网 | 文化 | 周刊 |
|
||||
| ------- | ------- | ----- | ------- | ------------- | ------- | ------- | ------ |
|
||||
| economy | finance | china | science | international | opinion | culture | weekly |
|
||||
|
||||
以金融板块为例的 category 列表: (其余 column 以类似方式寻找)
|
||||
|
||||
| 监管 | 银行 | 证券基金 | 信托保险 | 投资 | 创新 | 市场 |
|
||||
| ---------- | ---- | -------- | --------------- | ---------- | ---------- | ------ |
|
||||
| regulation | bank | stock | insurance_trust | investment | innovation | market |
|
||||
|
||||
Category 列表:
|
||||
|
||||
| 封面报道 | 开卷 | 社论 | 时事 | 编辑寄语 | 经济 | 金融 | 商业 | 环境与科技 | 民生 | 副刊 |
|
||||
| ---------- | ----- | --------- | --------------- | ----------- | ------- | ------- | -------- | ---------------------- | ------- | ------ |
|
||||
| coverstory | first | editorial | current_affairs | editor_desk | economy | finance | business | environment_technology | cwcivil | column |
|
||||
|
||||
</Route>
|
||||
|
||||
### 首页新闻
|
||||
|
||||
<Route author="EsuRt" example="/caixin/article" path="/caixin/article"/>
|
||||
|
||||
## 第一财经
|
||||
|
||||
### 直播区
|
||||
|
||||
<Route author="sanmmm" example="/yicai/brief" path="/yicai/brief" />
|
||||
|
||||
## 东方网
|
||||
|
||||
### 上海新闻
|
||||
|
||||
<Route author="saury" example="/eastday/sh" path="/eastday/sh" />
|
||||
|
||||
## 端传媒
|
||||
|
||||
### 端传媒
|
||||
|
||||
<Route author="prnake" example="/initium/feature/zh-hans" path="/initium/:type?/:language?" :paramsDesc="['栏目,缺省为深度', '语言,简体`zh-hans`,繁体`zh-hant`,缺省为简体']"/>
|
||||
|
||||
::: warning 注意
|
||||
|
||||
付费内容全文需要登陆获取,详情见部署页面的配置模块。
|
||||
|
||||
:::
|
||||
|
||||
Type 栏目:
|
||||
|
||||
| 深度 | What’s New | 广场 | Pick-Up |
|
||||
| ------- | ---------- | ----------------- | ------- |
|
||||
| feature | news-brief | notes-and-letters | pick_up |
|
||||
|
||||
通过提取文章全文,以提供比官方源更佳的阅读体验.
|
||||
|
||||
</Route>
|
||||
|
||||
## 多维新闻网
|
||||
|
||||
### 要闻
|
||||
|
||||
<Route author="HenryQW" example="/dwnews/yaowen/global" path="/dwnews/yaowen/:region?" :paramsDesc="['要闻地区,默认`全部`,可选地区如下']">
|
||||
|
||||
| 全部 | 国际 | 中国 | 香港 | 台湾 | 经济 | 视觉 |
|
||||
| ------ | ------ | ----- | -------- | ------ | ------ | ------ |
|
||||
| yaowen | global | china | hongkong | taiwan | jingji | shijue |
|
||||
|
||||
</Route>
|
||||
|
||||
### 24 小时新闻排行榜
|
||||
|
||||
<Route author="HenryQW" example="/dwnews/rank" path="/dwnews/rank"/>
|
||||
|
||||
## 华尔街见闻
|
||||
|
||||
### 华尔街见闻
|
||||
|
||||
<Route author="conanjunn" example="/wallstreetcn/news/global" path="/wallstreetcn/news/global" />
|
||||
|
||||
## 极客公园
|
||||
|
||||
### 全球快讯
|
||||
|
||||
<Route author="xyqfer" example="/geekpark/breakingnews" path="/geekpark/breakingnews" />
|
||||
|
||||
## 界面新闻
|
||||
|
||||
### 栏目
|
||||
|
||||
<Route author="WenhuWee" example="/jiemian/list/79" path="/jiemian/list/:category" :paramsDesc="['对应栏目后在地址栏找到']"/>
|
||||
|
||||
## 经济观察网
|
||||
|
||||
### 分类资讯
|
||||
|
||||
<Route author="epirus" example="/eeo/15" path="/eeo/:category" :paramsDesc="['分类']">
|
||||
|
||||
category 对应的关键词有
|
||||
|
||||
| 时事 | 政策 | 证券 | 资本 | 理财 | 新科技 | 大健康 | 房产 | 汽车 | 消费 | 影视 | 娱乐 | 体育 | 教育 | 观察家 | 专栏 | 书评 | 个人历史 | 宏观 |
|
||||
| ---- | ---- | ---- | ---- | ---- | ------ | ------ | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ------ | ---- | ---- | -------- | ---- |
|
||||
| 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
|
||||
|
||||
</Route>
|
||||
|
||||
## 靠谱新闻
|
||||
|
||||
### 新闻聚合
|
||||
|
||||
<Route author="wushijishan" example="/kaopunews/all" path="/kaopunews/all"/>
|
||||
|
||||
## 联合早报
|
||||
|
||||
### 即时新闻
|
||||
|
||||
<Route author="lengthmin" example="/zaobao/realtime/china" path="/zaobao/realtime/:type?" :paramsDesc="['分类, 缺省为 china']">
|
||||
|
||||
| 中国 | 新加坡 | 国际 | 财经 |
|
||||
| ----- | --------- | ----- | -------- |
|
||||
| china | singapore | world | zfinance |
|
||||
|
||||
</Route>
|
||||
|
||||
### 新闻
|
||||
|
||||
<Route author="lengthmin" example="/zaobao/znews/china" path="/zaobao/znews/:type?" :paramsDesc="['分类, 缺省为 china']">
|
||||
|
||||
| 中国 | 新加坡 | 东南亚 | 国际 | 体育 | 早报现在 |
|
||||
| ----- | --------- | ------ | ----- | ------ | -------- |
|
||||
| china | singapore | sea | world | sports | fukan |
|
||||
|
||||
</Route>
|
||||
|
||||
### 其他栏目
|
||||
|
||||
除了上面两个兼容规则之外,联合早报网站里所有页面形如 <https://www.zaobao.com/wencui/politic> 这样的栏目都能被这个规则解析到,早报的大部分栏目都是这个样式的。你可以测试之后再订阅。
|
||||
|
||||
<Route author="lengthmin" example="/zaobao/wencui/politic" path="/zaobao/:type/:section" :paramsDesc="['https://www.zaobao.com/**wencui**/politic 中的 **wencui**', 'https://www.zaobao.com/wencui/**politic** 中的 **politic**']" />
|
||||
|
||||
## 连线 Wired
|
||||
|
||||
非订阅用户每月有阅读全文次数限制。
|
||||
|
||||
### 标签
|
||||
|
||||
<Route author="Naiqus" example="/wired/tag/bitcoin" path="/wired/tag/:tag" :paramsDesc="['标签']"/>
|
||||
|
||||
## 路透社
|
||||
|
||||
### 实时资讯
|
||||
|
||||
<Route author="black-desk" example="/reuters/theWire" path="/reuters/theWire" />
|
||||
|
||||
### 频道
|
||||
|
||||
<Route author="HenryQW proletarius101" example="/reuters/channel/cn/analyses" path="/reuters/channel/:site/:channel" :paramsDesc="['语言,支持的分站列表如下','频道名,请注意大小写需与如下表格中一致。']">
|
||||
|
||||
支持语言列表
|
||||
|
||||
- 中国分站 `cn`:
|
||||
|
||||
- 主频道:
|
||||
|
||||
| 深度分析 | 时事要闻 | 生活 | 投资 |
|
||||
| -------- | ----------- | ---- | --------- |
|
||||
| analyses | generalnews | life | investing |
|
||||
|
||||
- 资讯子频道:
|
||||
|
||||
| 中国财经 | 国际财经 | 新闻人物 | 财经视点 |
|
||||
| -------- | --------------------- | --------- | -------- |
|
||||
| china | internationalbusiness | newsmaker | opinions |
|
||||
|
||||
- 专栏子频道:
|
||||
|
||||
| 中国财经专栏 | 国际财经专栏 | 大宗商品专栏 |
|
||||
| ------------ | ------------ | ------------ |
|
||||
| CnColumn | IntColumn | ComColumn |
|
||||
|
||||
- 美国分站 `us`:
|
||||
|
||||
- 主频道:
|
||||
|
||||
| Business | Markets | World | Politics | Tech | Breakingviews | Wealth | Life |
|
||||
| -------- | ------- | ----- | -------- | ---------- | ------------- | ------ | --------- |
|
||||
| business | markets | world | politics | technology | breakingviews | wealth | lifestyle |
|
||||
|
||||
- 英国分站 `uk`:
|
||||
|
||||
- 主频道:
|
||||
|
||||
| Business | Markets | World | UK | Tech | Money | Breakingviews | Sport | Life |
|
||||
| -------- | ------- | ----- | -- | ---------- | --------------- | ------------- | ------ | --------- |
|
||||
| business | markets | world | uk | technology | personalFinance | breakingviews | sports | lifestyle |
|
||||
|
||||
</Route>
|
||||
|
||||
## 每经网
|
||||
|
||||
### 重磅原创
|
||||
|
||||
<Route author="MeXunco" example="/nbd/daily" path="/nbd/daily" />
|
||||
|
||||
## 南方周末
|
||||
|
||||
### 新闻分类
|
||||
|
||||
<Route author="ranpox xyqfer" example="/infzm/2" path="/infzm/:id" :paramsDesc="['南方周末内容分区 id, 可在该内容分区的 URL 中找到(即 https://www.infzm.com/contents?term_id=:id)']">
|
||||
|
||||
下面给出部分参考:
|
||||
|
||||
| 推荐 | 新闻 | 观点 | 文化 | 人物 | 影像 | 专题 | 生活 | 视频 |
|
||||
| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
|
||||
| 1 | 2 | 3 | 4 | 7 | 8 | 6 | 5 | 131 |
|
||||
|
||||
</Route>
|
||||
|
||||
## 南华早报 SCMP
|
||||
|
||||
### 新闻
|
||||
|
||||
<Route author="proletarius101" example="/scmp/3" path="/scmp/:category_id" :paramsDesc="['栏目分类']">
|
||||
|
||||
栏目分类对应的数字编号见[官方 RSS](https://www.scmp.com/rss)。相比官方提供的 RSS,多提供了全文输出。
|
||||
|
||||
</Route>
|
||||
|
||||
## 纽约时报
|
||||
|
||||
### 新闻
|
||||
|
||||
<Route author="HenryQW" example="/nytimes/dual" path="/nytimes/:lang?" :paramsDesc="['语言, 缺省中文']">
|
||||
|
||||
通过提取文章全文,以提供比官方源更佳的阅读体验。
|
||||
|
||||
| 默认中文 | 中英对照 | 英文 | 中英对照 (繁体中文) | 繁体中文 |
|
||||
| -------- | -------- | ---- | ----------------------- | ------------------ |
|
||||
| (空) | dual | en | dual-traditionalchinese | traditionalchinese |
|
||||
|
||||
</Route>
|
||||
|
||||
### 每日简报
|
||||
|
||||
<Route author="xyqfer" example="/nytimes/morning_post" path="/nytimes/morning_post"/>
|
||||
|
||||
## 澎湃新闻
|
||||
|
||||
### 首页头条
|
||||
|
||||
<Route author="HenryQW" example="/thepaper/featured" path="/thepaper/featured"/>
|
||||
|
||||
### 频道
|
||||
|
||||
<Route author="xyqfer" example="/thepaper/channel/27224" path="/thepaper/channel/:id" :paramsDesc="['频道 id']"/>
|
||||
|
||||
### 澎湃美数组作品集
|
||||
|
||||
<Route author="umm233" example="/thepaper/839studio/2" path="/thepaper/839studio/:id?" :paramsDesc="['分类 id 可选,默认订阅全部分类']">
|
||||
|
||||
| 视频 | 交互 | 信息图 | 数据故事 |
|
||||
| ---- | ---- | ------ | -------- |
|
||||
| 2 | 4 | 3 | 453 |
|
||||
|
||||
</Route>
|
||||
|
||||
## 齐鲁晚报
|
||||
|
||||
### 新闻
|
||||
|
||||
<Route author="nczitzk" example="/qlwb/news" path="/qlwb/news"/>
|
||||
|
||||
### 今日城市
|
||||
|
||||
<Route author="nczitzk" example="/qlwb/city/:city" path="/qlwb/city" :paramsDesc="['城市代码']">
|
||||
|
||||
| 今日临沂 | 今日德州 | 今日威海 | 今日枣庄 | 今日淄博 | 今日烟台 | 今日潍坊 | 今日菏泽 | 今日日照 | 今日泰山 | 今日聊城 | 今日济宁 |
|
||||
| -------- | -------- | -------- | --------- | -------- | -------- | -------- | -------- | -------- | -------- | --------- | -------- |
|
||||
| linyi | dezhou | weihai | zaozhuang | zibo | yantai | weifang | heze | rizhao | taishan | liaocheng | jining |
|
||||
|
||||
</Route>
|
||||
|
||||
## 人民日报
|
||||
|
||||
### 观点
|
||||
|
||||
<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="LogicJake" example="/people/xjpjh" path="/people/xjpjh/:keyword?/:year?" :paramsDesc="['关键词,默认不填','年份,默认all']"/>
|
||||
|
||||
## 人民日报社 国际金融报
|
||||
|
||||
### 栏目
|
||||
|
||||
<Route author="Origami404" example="/ifnews/48" path="/ifnews/:cid" :paramsDesc="['栏目ID']">
|
||||
|
||||
`cid`可在对应栏目的 url 后的参数中获取,如`热点快报`的栏目 url 为`http://www.ifnews.com/column.html?cid=48`, `cid`即为`48`.
|
||||
|
||||
</Route>
|
||||
|
||||
## 日本経済新聞
|
||||
|
||||
### ホームページ
|
||||
|
||||
<Route author="zjysdhr" example="/nikkei/index" path="/nikkei/index" radar="1">
|
||||
|
||||
日文版首页
|
||||
|
||||
</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
|
||||
|
||||
通过提取文章全文,以提供比官方源更佳的阅读体验。
|
||||
|
||||
### Editorial
|
||||
|
||||
<Route author="HenryQW" example="/guardian/editorial" path="/guardian/editorial"/>
|
||||
|
||||
### China
|
||||
|
||||
<Route author="Polynomia" example="/guardian/china" path="/guardian/china"/>
|
||||
|
||||
## 文汇报
|
||||
|
||||
### 分类
|
||||
|
||||
<Route author="hoilc" example="/whb/bihui" path="/whb/:category" :paramsDesc="['文汇报分类名, 可在该分类的 URL 中找到(即 http://www.whb.cn/zhuzhan/:category/index.html)']" />
|
||||
|
||||
## 香港 01
|
||||
|
||||
### 热门
|
||||
|
||||
<Route author="hoilc" example="/hk01/hot" path="/hk01/hot" radar="1"/>
|
||||
|
||||
### 栏目
|
||||
|
||||
<Route author="hoilc" example="/hk01/zone/11" path="/hk01/zone/:id" :paramsDesc="['栏目id, 可在URL中找到']" radar="1"/>
|
||||
|
||||
### 子栏目
|
||||
|
||||
<Route author="hoilc" example="/hk01/channel/391" path="/hk01/channel/:id" :paramsDesc="['子栏目id, 可在URL中找到']" radar="1"/>
|
||||
|
||||
### 专题
|
||||
|
||||
<Route author="hoilc" example="/hk01/issue/649" path="/hk01/issue/:id" :paramsDesc="['专题id, 可在URL中找到']" radar="1"/>
|
||||
|
||||
### 标签
|
||||
|
||||
<Route author="hoilc" example="/hk01/tag/2787" path="/hk01/tag/:id" :paramsDesc="['标签id, 可在URL中找到']" radar="1"/>
|
||||
|
||||
## 香港電台
|
||||
|
||||
### 新聞
|
||||
|
||||
香港電台官方已有提供全文 RSS,詳細可前往官方網站: <https://news.rthk.hk/rthk/ch/rss.htm>
|
||||
|
||||
此路由主要補回官方 RSS 缺少的圖片以及 Link 元素。(官方 RSS 沒有 Link 元素可能導致某些 RSS 客戶端出現問題)
|
||||
|
||||
<Route author="KeiLongW" example="/rthk-news/hk/international" path="/rthk-news/:lang/:category" :paramsDesc="['语言,繁体`hk`,英文`en`','类别']">
|
||||
|
||||
| local | greaterchina | international | finance | sport |
|
||||
| -------- | ------------ | ------------- | -------- | -------- |
|
||||
| 本地新聞 | 大中華新聞 | 國際新聞 | 財經新聞 | 體育新聞 |
|
||||
|
||||
</Route>
|
||||
|
||||
## 新京报
|
||||
|
||||
### 栏目
|
||||
|
||||
<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="LogicJake" example="/sina/discovery/zx" path="/sina/discovery/:type" :paramsDesc="['订阅分区类型']">
|
||||
|
||||
分类:
|
||||
|
||||
| zx | twhk | dwzw | zrdl | lskg | smyx | shbk | kjqy |
|
||||
| ---- | -------- | -------- | -------- | -------- | -------- | -------- | -------- |
|
||||
| 最新 | 天文航空 | 动物植物 | 自然地理 | 历史考古 | 生命医学 | 生活百科 | 科技前沿 |
|
||||
|
||||
</Route>
|
||||
|
||||
### 滚动新闻
|
||||
|
||||
<Route author="xyqfer" example="/sina/rollnews" path="/sina/rollnews" />
|
||||
|
||||
## 央视新闻
|
||||
|
||||
### 新闻联播
|
||||
|
||||
<Route author="zengxs" example="/cctv/xwlb" path="/cctv/xwlb">
|
||||
|
||||
新闻联播内容摘要。
|
||||
|
||||
</Route>
|
||||
|
||||
### 专题
|
||||
|
||||
<Route author="idealclover xyqfer" example="/cctv/world" path="/cctv/:category" :paramsDesc="['分类名']">
|
||||
|
||||
| 新闻 | 国内 | 国际 | 社会 | 法治 | 文娱 | 科技 | 生活 | 教育 | 每周质量报告 |
|
||||
| ---- | ----- | ----- | ------- | ---- | ---- | ---- | ---- | ---- | ------------ |
|
||||
| news | china | world | society | law | ent | tech | life | edu | mzzlbg |
|
||||
|
||||
</Route>
|
||||
|
||||
### 新闻联播文字版
|
||||
|
||||
<Route author="luyuhuang" example="/xinwenlianbo/index" path="/xinwenlianbo/index" radar="1"/>
|
||||
|
||||
### 新闻联播文字版全文
|
||||
|
||||
<Route author="xfangbao" example="/xwlb" path="/xwlb/index" />
|
||||
|
||||
## 朝日新聞中文網(繁體中文版)
|
||||
|
||||
### 新聞分類
|
||||
|
||||
<Route author="qiwihui" example="/asahichinese-f/society" path="/asahichinese-f/:category/:subCate?" :paramsDesc="['版块', '子版块']">
|
||||
|
||||
版块:
|
||||
|
||||
| society | politics_economy | cool_japan | travel | sports | business | technology | world | opinion | whatsnew |
|
||||
| -------- | ---------------- | ---------- | ---------- | ---------- | ---------- | ---------- | ---------- | ---------- | -------- |
|
||||
| 國內綜合 | 政治・經濟 | 文化・生活 | 旅遊・活動 | 體育・奧運 | 商業・商品 | IT ・科技 | 國際・東亞 | 評論・專欄 | 最新消息 |
|
||||
|
||||
版块 `cool_japan` 和 `travel` 包含子版块:
|
||||
|
||||
`cool_japan`:
|
||||
|
||||
| entertainment | anime | life | style_culture |
|
||||
| ------------- | ----- | ---------- | ------------- |
|
||||
| 藝能 | 動漫 | 生活・美食 | 時尚・藝文 |
|
||||
|
||||
`travel`:
|
||||
|
||||
| news | scenery | topic | move |
|
||||
| ---- | ------- | ----- | ---- |
|
||||
| 資訊 | 風景 | 體驗 | 交通 |
|
||||
|
||||
</Route>
|
||||
|
||||
## 朝日新聞中文网(简体中文版)
|
||||
|
||||
### 新闻分类
|
||||
|
||||
<Route author="zhouchang29" example="/asahichinese-j/society" path="/asahichinese-j/:category/:subCate?" :paramsDesc="['版块', '子版块']">
|
||||
|
||||
版块:
|
||||
|
||||
| society | politics_economy | cool_japan | travel | sports | business | technology | world | opinion | whatsnew |
|
||||
| -------- | ---------------- | ---------- | ---------- | ---------- | ---------- | ---------- | ---------- | ---------- | -------- |
|
||||
| 日本社会 | 政治・经济 | 文娱・生活 | 旅游・活动 | 体育・奥运 | 商务・商品 | IT ・科技 | 国际・东亚 | 观点・专栏 | 最新 |
|
||||
|
||||
版块 `cool_japan` 和 `travel` 包含子版块:
|
||||
|
||||
`cool_japan`:
|
||||
|
||||
| entertainment | anime | life | style_culture |
|
||||
| ------------- | ----- | ---------- | ------------- |
|
||||
| 艺能 | 动漫 | 生活・美食 | 时尚・文化 |
|
||||
|
||||
`travel`:
|
||||
|
||||
| news | scenery | topic | move |
|
||||
| ---- | ------- | ----- | ---- |
|
||||
| 资讯 | 风景 | 体验 | 交通 |
|
||||
|
||||
</Route>
|
||||
|
||||
## 中国日报
|
||||
|
||||
### 英语点津
|
||||
|
||||
<Route author="sanmmm" example="/chinadaily/english/thelatest" path="/chinadaily/english/:category" :paramsDesc="['目录分类']">
|
||||
|
||||
目录分类
|
||||
|
||||
| 最新 | 双语 | 热词 | 口语 | 译词 | 视频 | 听力 | 专栏 | 文件 | 考试 |
|
||||
| --------- | -------------- | ------------- | --------------- | ------------- | ----------- | -------- | --------- | ------------------------ | ------------ |
|
||||
| thelatest | news_bilingual | news_hotwords | practice_tongue | trans_collect | video_links | audio_cd | columnist | 5af95d44a3103f6866ee845c | englishexams |
|
||||
|
||||
</Route>
|
||||
|
||||
## 中時電子報
|
||||
|
||||
### 新聞
|
||||
|
||||
<Route author="luyuhuang" example="/chinatimes/realtimenews" path="/chinatimes/:caty" :paramsDesc="['类别']" radar="1">
|
||||
|
||||
| realtimenews | politic | opinion | life | star | money | society | hottopic | tube | world | armament | chinese | fashion | sports | technologynews | travel | album |
|
||||
| ------------ | ------- | ------- | ---- | ---- | ----- | ------- | -------- | ------- | ----- | -------- | ------- | ------- | ------ | -------------- | ------ | ----- |
|
||||
| 即時 | 政治 | 言論 | 生活 | 娛樂 | 財經 | 社會 | 話題 | 快點 TV | 國際 | 軍事 | 兩岸 | 時尚 | 體育 | 科技 | 玩食 | 專輯 |
|
||||
|
||||
</Route>
|
||||
|
||||
## 中外对话
|
||||
|
||||
### 主题
|
||||
|
||||
<Route author="zoenglinghou" example="/chinadialogue/topics/cities" path="/chinadialogue/topics/:topic" :paramsDesc="['主题分类']">
|
||||
|
||||
| 商业 | 城市化 | 气候变化与能源 | 自然保护 | 管制与法律 | 健康与食品 | 自然灾害 | 污染 | 科学与技术 | 安全 | 水 |
|
||||
| -------- | ------ | ------------------------- | ------------ | ------------------ | --------------- | ----------------- | --------- | ---------------- | -------- | ----- |
|
||||
| business | cities | climate-change-and-energy | conservation | governance-and-law | health-and-food | natural-disasters | pollution | science-and-tech | security | water |
|
||||
|
||||
</Route>
|
||||
|
||||
### 栏目
|
||||
|
||||
<Route author="zoenglinghou" example="/chinadialogue/article" path="/chinadialogue/:column" :paramsDesc="['栏目分类']">
|
||||
|
||||
| 文章 | 博客 | 文化 | 报告 |
|
||||
| ------- | ---- | ------- | ------- |
|
||||
| article | blog | culture | reports |
|
||||
|
||||
</Route>
|
||||
|
||||
### 福建新闻
|
||||
|
||||
<Route author="jjlzg" example="/fjnews/fj/30" path="/fjnews/fznews"/>
|
||||
|
||||
### 福州新闻
|
||||
|
||||
<Route author="jjlzg" example="/fjnews/fz/30" path="/fjnews/fznews"/>
|
||||
|
||||
### 九江新闻
|
||||
|
||||
<Route author="jjlzg" example="/fjnews/jjnews" path="/fjnews/jjnews"/>
|
||||
|
||||
## 読売新聞
|
||||
|
||||
### 新聞
|
||||
|
||||
<Route author="Arracc" example="/yomiuri/news" path="/yomiuri/:category" :paramsDesc="['分类']"/>
|
||||
|
||||
| 総合 | 社会 | 政治 | 経済 | スポーツ | 国際 | 科学・IT | 選挙・世論調査 | エンタメ・文化 | 囲碁・将棋 | ライフ | 地域 | 社説 |
|
||||
| ---- |--------- | -------- | ------- | ------- | ----- | -------- | ------------- | ------------- | ---------- | ------ | ----- | --------- |
|
||||
| news | national | politics | economy | sports | world | science | election | culture | igoshougi | life | local | editorial |
|
||||
+3
-3
@@ -1547,9 +1547,9 @@ type 列表:
|
||||
全文内容需使用校园网或 VPN 获取
|
||||
:::
|
||||
|
||||
| 全部 | 信息发布 | 通知公告 | 教务信息 | 教学研究 | 教学实践 | 招生信息 | 质量监控 |
|
||||
| :--: | :------: | :------: | :------: | :------: | :------: | :------: | :------: |
|
||||
| all | xxfb | tzgg | jwxx | jxyj | jxsj | zsxx | zljk |
|
||||
| 全部 | 教学信息 | 教学研究 | 实践教学 | 质量监控 | 通知公告 |
|
||||
| :--: | :------: | :------: | :------: | :------: | :------: |
|
||||
| all | jxxx | jxyj | sjjx | zljk | tzgg |
|
||||
|
||||
</Route>
|
||||
|
||||
|
||||
+5
-4
@@ -39,15 +39,13 @@ app.use(favicon(__dirname + '/favicon.png'));
|
||||
// global error handing
|
||||
app.use(onerror);
|
||||
|
||||
// 1 set header
|
||||
app.use(header);
|
||||
|
||||
app.use(accessControl);
|
||||
|
||||
// 6 debug
|
||||
// 7 debug
|
||||
app.context.debug = {
|
||||
hitCache: 0,
|
||||
request: 0,
|
||||
etag: 0,
|
||||
paths: [],
|
||||
routes: [],
|
||||
ips: [],
|
||||
@@ -56,6 +54,9 @@ app.context.debug = {
|
||||
};
|
||||
app.use(debug);
|
||||
|
||||
// 6 set header
|
||||
app.use(header);
|
||||
|
||||
// 5 fix incorrect `utf-8` characters
|
||||
app.use(utf8);
|
||||
|
||||
|
||||
@@ -23,4 +23,8 @@ module.exports = async (ctx, next) => {
|
||||
}
|
||||
|
||||
ctx.state.debuged = true;
|
||||
|
||||
if (ctx.status === 304) {
|
||||
ctx.debug.etag++;
|
||||
}
|
||||
};
|
||||
|
||||
+13
-11
@@ -19,8 +19,7 @@ module.exports = async (ctx, next) => {
|
||||
|
||||
await next();
|
||||
|
||||
let body = ctx.body;
|
||||
if (!body || typeof body !== 'string' || ctx.response.get('ETag')) {
|
||||
if (!ctx.body || typeof ctx.body !== 'string' || ctx.response.get('ETag')) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -29,14 +28,17 @@ module.exports = async (ctx, next) => {
|
||||
return;
|
||||
}
|
||||
|
||||
const match = body.match(/<lastBuildDate>(.*)<\/lastBuildDate>/);
|
||||
if (match) {
|
||||
ctx.set({
|
||||
'Last-Modified': body.match(/<lastBuildDate>(.*)<\/lastBuildDate>/)[1],
|
||||
});
|
||||
ctx.set('ETag', etagCalculate(ctx.body.replace(/<lastBuildDate>(.*)<\/lastBuildDate>/, '').replace(/<atom:link(.*)\/>/, '')));
|
||||
|
||||
if (ctx.fresh) {
|
||||
ctx.status = 304;
|
||||
ctx.body = null;
|
||||
} else {
|
||||
const match = ctx.body.match(/<lastBuildDate>(.*)<\/lastBuildDate>/);
|
||||
if (match) {
|
||||
ctx.set({
|
||||
'Last-Modified': match[1],
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
body = body.replace(/<lastBuildDate>(.*)<\/lastBuildDate>/, '');
|
||||
|
||||
ctx.response.etag = etagCalculate(body);
|
||||
};
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
const he = require('he');
|
||||
const mercury_parser = require('@postlight/mercury-parser');
|
||||
const cheerio = require('cheerio');
|
||||
const OpenCC = require('opencc');
|
||||
const got = require('@/utils/got');
|
||||
const config = require('@/config').value;
|
||||
|
||||
@@ -224,6 +225,16 @@ module.exports = async (ctx, next) => {
|
||||
return item;
|
||||
});
|
||||
}
|
||||
|
||||
// opencc
|
||||
if (ctx.query.opencc) {
|
||||
const converter = new OpenCC(`${ctx.query.opencc}.json`);
|
||||
const tasks = ctx.state.data.item.map(async (item) => {
|
||||
item.title = await converter.convertPromise(item.title);
|
||||
item.description = await converter.convertPromise(item.description);
|
||||
});
|
||||
await Promise.all(tasks);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
-3246
File diff suppressed because it is too large
Load Diff
@@ -76,6 +76,11 @@ const ProcessFeed = ($, link) => {
|
||||
content = $('div.story-body');
|
||||
}
|
||||
|
||||
if (content.length === 0) {
|
||||
// chinese version has different structure
|
||||
content = $('main[role="main"]');
|
||||
}
|
||||
|
||||
// remove useless DOMs
|
||||
content.find('div.bbccom_slot, .off-screen, .embed-report-link').each((i, e) => {
|
||||
$(e).remove();
|
||||
|
||||
@@ -3,7 +3,11 @@ const got = require('@/utils/got');
|
||||
module.exports = async (ctx) => {
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: 'https://mappsv5.caixin.com/index_page_v5/index_page_1.json',
|
||||
url: 'http://mapiv5.caixin.com//m/api/getWapIndexListByPage?page=1&callback=&_=1560140003179',
|
||||
headers: {
|
||||
Referer: `http://mapiv5.caixin.com/`,
|
||||
Host: 'mapiv5.caixin.com',
|
||||
},
|
||||
});
|
||||
|
||||
const data = response.data.data.list;
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
const got = require('@/utils/got');
|
||||
const cheerio = require('cheerio');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
ctx.params.id = ctx.params.id || '315';
|
||||
|
||||
let rootUrl;
|
||||
|
||||
if (ctx.params.id === '315') {
|
||||
rootUrl = `https://315.cctv.com`;
|
||||
} else {
|
||||
rootUrl = `https://news.cctv.com/special/${ctx.params.id}/index.shtml`;
|
||||
}
|
||||
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: rootUrl,
|
||||
});
|
||||
|
||||
const $ = cheerio.load(response.data);
|
||||
const list = $('h3>a, h4>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 () => {
|
||||
let date;
|
||||
|
||||
if (item.link.indexOf('photo.cctv.com') > 0) {
|
||||
const imageLink = item.link.split('.shtml')[0] + '.xml?randomNum=26';
|
||||
const imageResponse = await got({
|
||||
method: 'get',
|
||||
url: imageLink,
|
||||
});
|
||||
const images = cheerio.load(imageResponse.data);
|
||||
|
||||
let description;
|
||||
|
||||
item.description = '';
|
||||
|
||||
images('li')
|
||||
.get()
|
||||
.forEach((i) => {
|
||||
i = images(i);
|
||||
item.description += `<img src="${i.attr('photourl')}">`;
|
||||
date = i.attr('time').replace(/年/g, '-').replace(/月/g, '-').replace(/日/g, '');
|
||||
description = i.html();
|
||||
});
|
||||
|
||||
item.description += `<p>${description}</p>`;
|
||||
} else {
|
||||
const detailResponse = await got({
|
||||
method: 'get',
|
||||
url: item.link,
|
||||
});
|
||||
const content = cheerio.load(detailResponse.data);
|
||||
const match = detailResponse.data.match(/publishDate ="(.*)";/);
|
||||
|
||||
if (match === null) {
|
||||
let dateSpan;
|
||||
|
||||
if (content('div.info span').html() !== null) {
|
||||
dateSpan = content('div.info span').text();
|
||||
} else if (content('div.info1').html() !== null) {
|
||||
dateSpan = content('div.info1').text().split(' | ')[1];
|
||||
} else {
|
||||
dateSpan = content('span.time').text();
|
||||
}
|
||||
|
||||
date = dateSpan.replace(/年/g, '-').replace(/月/g, '-').replace(/日/g, '');
|
||||
} else {
|
||||
const dateString = match[1];
|
||||
date = `${dateString.slice(0, 4)}-${dateString.slice(4, 6)}-${dateString.slice(6, 8)} ${dateString.slice(8, 10)}:${dateString.slice(10, 12)}:${dateString.slice(12, 14)}`;
|
||||
}
|
||||
|
||||
if (content('#content_area').html() !== null) {
|
||||
item.description = content('#content_area').html();
|
||||
} else if (content('div.cnt_bd').html() !== null) {
|
||||
content('div.function,h1,h2').remove();
|
||||
item.description = content('div.cnt_bd').html();
|
||||
} else if (content('#text_area').html() !== null) {
|
||||
item.description = content('#text_area').html();
|
||||
} else {
|
||||
item.description = content('div.con').html();
|
||||
}
|
||||
}
|
||||
|
||||
item.pubDate = new Date(date + ' GMT+8').toUTCString();
|
||||
|
||||
return item;
|
||||
})
|
||||
)
|
||||
);
|
||||
|
||||
ctx.state.data = {
|
||||
title: `${$('title').text().split('_')[0]} - 新闻专题 - 央视网`,
|
||||
link: rootUrl,
|
||||
item: items,
|
||||
};
|
||||
};
|
||||
@@ -147,6 +147,15 @@ module.exports = {
|
||||
},
|
||||
},
|
||||
},
|
||||
my: {
|
||||
country: 'my',
|
||||
countryCN: '马来西亚',
|
||||
link: 'http://my.china-embassy.org/chn/zytz/',
|
||||
list: 'div[class=nbox_ul] > ul a',
|
||||
title: '#News_Body_Title',
|
||||
description: '#News_Body_Txt_A',
|
||||
pubDate: '#News_Body_Time',
|
||||
},
|
||||
sg: {
|
||||
country: 'sg',
|
||||
countryCN: '新加坡',
|
||||
|
||||
@@ -42,6 +42,7 @@ module.exports = async (ctx) => {
|
||||
link: host,
|
||||
item: data.map((follower) => ({
|
||||
title: `${follower.node.login} started following ${user}`,
|
||||
author: follower.node.login,
|
||||
description: `<a href="https://github.com/${follower.node.login}">${follower.node.login}</a> <br> <img sytle="width:50px;" src='${follower.node.avatarUrl}'>`,
|
||||
link: `https://github.com/${follower.node.login}`,
|
||||
})),
|
||||
|
||||
@@ -33,6 +33,7 @@ module.exports = async (ctx) => {
|
||||
link: host,
|
||||
item: data.map((item) => ({
|
||||
title: item.title,
|
||||
author: item.user.login,
|
||||
description: item.body ? md.render(item.body) : 'No description',
|
||||
pubDate: new Date(item.created_at).toUTCString(),
|
||||
link: `${link}/${item.number}`,
|
||||
|
||||
@@ -24,6 +24,7 @@ module.exports = async (ctx) => {
|
||||
const a = $(this).find('.f4.text-normal > a');
|
||||
const single = {
|
||||
title: a.text(),
|
||||
author: a.text().split('/')[0].trim(),
|
||||
link: host.concat(a.attr('href')),
|
||||
description: $(this).find('div p').text().trim(),
|
||||
};
|
||||
|
||||
@@ -43,6 +43,7 @@ module.exports = async (ctx) => {
|
||||
link: host,
|
||||
item: data.map((follower) => ({
|
||||
title: `${follower.node.login} starred ${user}/${repo}`,
|
||||
author: follower.node.login,
|
||||
description: `<a href="https://github.com/${follower.node.login}">${follower.node.login}</a> <br> <img sytle="width:50px;" src='${follower.node.avatarUrl}'>`,
|
||||
link: `https://github.com/${follower.node.login}`,
|
||||
})),
|
||||
|
||||
@@ -52,6 +52,7 @@ module.exports = async (ctx) => {
|
||||
description: `${user}’s starred repositories`,
|
||||
item: data.map((repo) => ({
|
||||
title: `${user} starred ${repo.node.name}`,
|
||||
author: user,
|
||||
description: `${repo.node.description === null ? 'no description' : repo.node.description} <br> primary language: ${
|
||||
repo.node.primaryLanguage === null ? 'no primary language' : repo.node.primaryLanguage.name
|
||||
} <br> stargazers: ${repo.node.stargazers.totalCount} <br> <img sytle="width:50px;" src='${repo.node.openGraphImageUrl}'>`,
|
||||
|
||||
@@ -29,6 +29,7 @@ module.exports = async (ctx) => {
|
||||
item = $(item);
|
||||
return {
|
||||
title: item.find('h1').text(),
|
||||
author: item.find('h1').text().split('/')[0].trim(),
|
||||
description: `${item.find('.pr-4').text()}<br>
|
||||
<br>Language: ${item.find('span[itemprop="programmingLanguage"]').text() || 'unknown'}
|
||||
<br>Star: ${item.find('.muted-link').eq(0).text()}
|
||||
|
||||
@@ -26,6 +26,7 @@ module.exports = async (ctx) => {
|
||||
item = $(item);
|
||||
return {
|
||||
title: item.find('.project-full-name').text(),
|
||||
author: item.find('.namespace-name').text().slice(0, -1).split('\n').join('').trim(),
|
||||
description: item.find('.description').text(),
|
||||
link: `https://gitlab.com${item.find('a.text-plain').attr('href')}`,
|
||||
};
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
const got = require('@/utils/got');
|
||||
const cheerio = require('cheerio');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const rootUrl = 'https://www.mnd.gov.tw';
|
||||
const currentUrl = `${rootUrl}/PublishTable.aspx?Types=即時軍事動態&title=國防消息`;
|
||||
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: currentUrl,
|
||||
});
|
||||
const $ = cheerio.load(response.data);
|
||||
|
||||
const list = $('table.newstitles tbody tr')
|
||||
.map((_, item) => {
|
||||
item = $(item);
|
||||
const a = item.find('a');
|
||||
const dateSplit = item.find('td.w-10').text().split('/');
|
||||
dateSplit[0] = (parseInt(dateSplit[0]) + 1911).toString();
|
||||
|
||||
return {
|
||||
title: a.text(),
|
||||
link: a.attr('id').replace(/_/g, '$'),
|
||||
pubDate: new Date(dateSplit.join('-') + ' GMT+8').toUTCString(),
|
||||
};
|
||||
})
|
||||
.get();
|
||||
|
||||
const items = await Promise.all(
|
||||
list.map(
|
||||
async (item) =>
|
||||
await ctx.cache.tryGet(item.link, async () => {
|
||||
const detailResponse = await got({
|
||||
method: 'post',
|
||||
url: currentUrl,
|
||||
headers: {
|
||||
Referer: 'https://www.mnd.gov.tw/',
|
||||
},
|
||||
form: {
|
||||
__EVENTTARGET: item.link,
|
||||
__EVENTARGUMENT: '',
|
||||
__VIEWSTATE: response.data.match(/id="__VIEWSTATE" value="(.*)" \/>/)[1],
|
||||
__VIEWSTATEGENERATOR: response.data.match(/id="__VIEWSTATEGENERATOR" value="(.*)" \/>/)[1],
|
||||
__EVENTVALIDATION: response.data.match(/id="__EVENTVALIDATION" value="(.*)" \/>/)[1],
|
||||
TbSearch2: '',
|
||||
TbSearch: '',
|
||||
},
|
||||
});
|
||||
const content = cheerio.load(detailResponse.data);
|
||||
|
||||
item.description = content('div.thisPages').html();
|
||||
item.link = content('form[name="aspnetForm"]').attr('action').replace('.', `${rootUrl}`);
|
||||
|
||||
return item;
|
||||
})
|
||||
)
|
||||
);
|
||||
|
||||
ctx.state.data = {
|
||||
title: '即時軍事動態 - 中華民國國防部',
|
||||
link: currentUrl,
|
||||
item: items,
|
||||
};
|
||||
};
|
||||
@@ -40,11 +40,17 @@ module.exports = async (ctx) => {
|
||||
|
||||
item.title = content('h1').text();
|
||||
|
||||
const article = content('section[data-test-id="ArticleBodyContent"]').html();
|
||||
const gallery = content('section[data-test-id="GalleryImage"]').html();
|
||||
|
||||
if (ctx.params.caty === 'video') {
|
||||
item.description = content('div[data-test-id="EmbedIframe"]').html() + content('p[data-test-id="DekText"]').parent().html();
|
||||
item.pubDate = new Date(detailResponse.data.match(/pubDate":"(.*?)","channel/)[1]).toUTCString();
|
||||
} else if (gallery !== null) {
|
||||
item.description = gallery;
|
||||
item.pubDate = new Date(detailResponse.data.match(/pubDate":"(.*?)","items/)[1]).toUTCString();
|
||||
} else {
|
||||
item.description = content('section[data-test-id="ArticleBodyContent"]').html();
|
||||
item.description = article;
|
||||
item.pubDate = new Date(detailResponse.data.match(/pubDate":"(.*?)","publishedRevisions/)[1]).toUTCString();
|
||||
}
|
||||
|
||||
|
||||
@@ -32,9 +32,19 @@ const ProcessFeed = async (list, cache) => {
|
||||
});
|
||||
$('img.dialog_add_wxxy_qrcode_icon').remove();
|
||||
|
||||
let description = '';
|
||||
|
||||
const videoMatch = response.data.match(/"hd_link":"(.*)","duration/);
|
||||
if (videoMatch !== null) {
|
||||
description += `<video height="100%" controls="controls" src="${videoMatch[1].replace(/\\u002F/g, '/')}"></video>`;
|
||||
}
|
||||
if ($('.top-img').html() !== null) {
|
||||
description += $('.top-img').html();
|
||||
}
|
||||
|
||||
return {
|
||||
title: $('.article__title').text().trim(),
|
||||
description: $('.article__top-img-video') + $('.article__content').html(),
|
||||
description: description + $('.article__content').html(),
|
||||
pubDate: date($('.article__time').text(), 8),
|
||||
author: $('.author-info__username').text(),
|
||||
link,
|
||||
|
||||
+19
-15
@@ -71,56 +71,60 @@ module.exports = async (ctx) => {
|
||||
debug: [
|
||||
config.nodeName
|
||||
? {
|
||||
name: 'node name',
|
||||
name: 'Node Name',
|
||||
value: config.nodeName,
|
||||
}
|
||||
: null,
|
||||
{
|
||||
name: 'git hash',
|
||||
name: 'Git Hash',
|
||||
value: gitHash,
|
||||
},
|
||||
{
|
||||
name: 'request amount',
|
||||
name: 'Request Amount',
|
||||
value: ctx.debug.request,
|
||||
},
|
||||
{
|
||||
name: 'request frequency',
|
||||
value: ((ctx.debug.request / (stats.elapsed / 1000)) * 60).toFixed(3) + ' 次/分钟',
|
||||
name: 'Request Frequency',
|
||||
value: ((ctx.debug.request / (stats.elapsed / 1000)) * 60).toFixed(3) + ' times/minute',
|
||||
},
|
||||
{
|
||||
name: 'cache hit ratio',
|
||||
name: 'Cache Hit Ratio',
|
||||
value: ctx.debug.request ? (ctx.debug.hitCache / ctx.debug.request).toFixed(3) : 0,
|
||||
},
|
||||
{
|
||||
name: 'memory usage',
|
||||
name: 'ETag Matched',
|
||||
value: ctx.debug.etag,
|
||||
},
|
||||
{
|
||||
name: 'Memory Usage',
|
||||
value: stats.memory / 1000000 + ' MB',
|
||||
},
|
||||
{
|
||||
name: 'CPU usage',
|
||||
name: 'CPU Usage',
|
||||
value: stats.cpu + '%',
|
||||
},
|
||||
{
|
||||
name: 'run time',
|
||||
value: (stats.elapsed / 3600000).toFixed(2) + ' 小时',
|
||||
name: 'Run Time',
|
||||
value: (stats.elapsed / 3600000).toFixed(2) + ' hour(s)',
|
||||
},
|
||||
{
|
||||
name: 'hot routes',
|
||||
name: 'Hot Routes',
|
||||
value: hotRoutesValue,
|
||||
},
|
||||
{
|
||||
name: 'hot paths',
|
||||
name: 'Hot Paths',
|
||||
value: hotPathsValue,
|
||||
},
|
||||
{
|
||||
name: 'hot IP',
|
||||
name: 'Hot IP',
|
||||
value: hotIPsValue,
|
||||
},
|
||||
{
|
||||
name: 'hot error routes',
|
||||
name: 'Hot Error Routes',
|
||||
value: hotErrorRoutesValue,
|
||||
},
|
||||
{
|
||||
name: 'hot error paths',
|
||||
name: 'Hot Error Paths',
|
||||
value: hotErrorPathsValue,
|
||||
},
|
||||
],
|
||||
|
||||
@@ -43,7 +43,7 @@ module.exports = async (ctx) => {
|
||||
});
|
||||
|
||||
const $ = cheerio.load(response.data);
|
||||
const list = $('div.wrap_left_top div.mf div.new-list-1 li[class!="top"] span.title a')
|
||||
const list = $('#list > div.fl > ul > li > div > h2 > a')
|
||||
.slice(0, 10)
|
||||
.map((_, item) => {
|
||||
item = $(item);
|
||||
@@ -60,16 +60,15 @@ module.exports = async (ctx) => {
|
||||
await ctx.cache.tryGet(item.link, async () => {
|
||||
const res = await got({ method: 'get', url: item.link });
|
||||
const content = cheerio.load(res.data);
|
||||
const post = content('div#con div.content');
|
||||
const paragraph = post.find('div#paragraph');
|
||||
paragraph.find('img[data-original]').each((_, ele) => {
|
||||
const post = content('#paragraph');
|
||||
post.find('img[data-original]').each((_, ele) => {
|
||||
ele = $(ele);
|
||||
ele.attr('src', ele.attr('data-original'));
|
||||
ele.removeAttr('class');
|
||||
ele.removeAttr('data-original');
|
||||
});
|
||||
item.description = paragraph.html();
|
||||
item.pubDate = new Date(post.find('span#pubtime_baidu').text() + ' GMT+8').toUTCString();
|
||||
item.description = post.html();
|
||||
item.pubDate = new Date(content('#pubtime_baidu').text() + ' GMT+8').toUTCString();
|
||||
return item;
|
||||
})
|
||||
)
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
const utils = require('./utils');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
ctx.params.filter = ctx.params.filter || '';
|
||||
|
||||
const currentUrl = `${utils.rootUrl}/actors/${ctx.params.id}?t=${ctx.params.filter}`;
|
||||
|
||||
const filter = {
|
||||
'': '',
|
||||
p: '可播放',
|
||||
s: '單體作品',
|
||||
d: '可下載',
|
||||
c: '含字幕',
|
||||
};
|
||||
|
||||
const title = `JavDB${filter[ctx.params.filter] === '' ? '' : ` - ${filter[ctx.params.filter]}`} `;
|
||||
|
||||
ctx.state.data = await utils.ProcessItems(ctx, currentUrl, title);
|
||||
};
|
||||
@@ -0,0 +1,32 @@
|
||||
const utils = require('./utils');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
ctx.params.caty = ctx.params.caty || 'censored';
|
||||
ctx.params.sort = ctx.params.sort || '2';
|
||||
ctx.params.filter = ctx.params.filter || '1';
|
||||
|
||||
const currentUrl = `${utils.rootUrl}/${ctx.params.caty === 'censored' ? '' : ctx.params.caty}?vft=${ctx.params.filter}&vst=${ctx.params.sort}`;
|
||||
|
||||
const category = {
|
||||
censored: '有碼',
|
||||
uncensored: '無碼',
|
||||
western: '歐美',
|
||||
fc2: 'FC2',
|
||||
};
|
||||
|
||||
const filter = {
|
||||
0: '',
|
||||
1: '可下载',
|
||||
2: '含字幕',
|
||||
3: '含短評',
|
||||
};
|
||||
|
||||
const sort = {
|
||||
1: '发布日期排序',
|
||||
2: '磁鏈更新排序',
|
||||
};
|
||||
|
||||
const title = `${category[ctx.params.caty]} - JavDB - ${filter[ctx.params.filter] === '' ? '|' : `${filter[ctx.params.filter]} | `}${sort[ctx.params.sort]}`;
|
||||
|
||||
ctx.state.data = await utils.ProcessItems(ctx, currentUrl, title);
|
||||
};
|
||||
@@ -0,0 +1,20 @@
|
||||
const utils = require('./utils');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
ctx.params.filter = ctx.params.filter || '';
|
||||
|
||||
const currentUrl = `${utils.rootUrl}/makers/${ctx.params.id}?f=${ctx.params.filter}`;
|
||||
|
||||
const filter = {
|
||||
'': '',
|
||||
playable: '可播放',
|
||||
single: '單體作品',
|
||||
download: '可下載',
|
||||
cnsub: '字幕',
|
||||
preview: '預覽圖',
|
||||
};
|
||||
|
||||
const title = `JavDB${filter[ctx.params.filter] === '' ? '' : ` - ${filter[ctx.params.filter]}`} `;
|
||||
|
||||
ctx.state.data = await utils.ProcessItems(ctx, currentUrl, title);
|
||||
};
|
||||
@@ -0,0 +1,12 @@
|
||||
const utils = require('./utils');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
ctx.params.caty = ctx.params.caty || 'censored';
|
||||
ctx.params.time = ctx.params.time || 'daily';
|
||||
|
||||
const currentUrl = `${utils.rootUrl}/rankings/video_${ctx.params.caty}?period=${ctx.params.time}`;
|
||||
|
||||
const title = 'JavDB';
|
||||
|
||||
ctx.state.data = await utils.ProcessItems(ctx, currentUrl, title);
|
||||
};
|
||||
@@ -0,0 +1,26 @@
|
||||
const utils = require('./utils');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
ctx.params.filter = ctx.params.filter || '';
|
||||
ctx.params.keyword = ctx.params.keyword || '';
|
||||
|
||||
const currentUrl = `${utils.rootUrl}/search?q=${ctx.params.keyword}&f=${ctx.params.filter}`;
|
||||
|
||||
const filter = {
|
||||
'': '',
|
||||
playable: '可播放',
|
||||
single: '單體作品',
|
||||
actor: '演員',
|
||||
maker: '片商',
|
||||
director: '導演',
|
||||
series: '系列',
|
||||
code: '番號',
|
||||
download: '可下載',
|
||||
cnsub: '字幕',
|
||||
preview: '預覽圖',
|
||||
};
|
||||
|
||||
const title = `關鍵字 ${ctx.params.keyword} ${filter[ctx.params.filter] === '' ? '' : `+ ${filter[ctx.params.filter]}`} 搜索結果 - JavDB `;
|
||||
|
||||
ctx.state.data = await utils.ProcessItems(ctx, currentUrl, title);
|
||||
};
|
||||
@@ -0,0 +1,20 @@
|
||||
const utils = require('./utils');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
ctx.params.filter = ctx.params.filter || '';
|
||||
|
||||
const currentUrl = `${utils.rootUrl}/series/${ctx.params.id}?f=${ctx.params.filter}`;
|
||||
|
||||
const filter = {
|
||||
'': '',
|
||||
playable: '可播放',
|
||||
single: '單體作品',
|
||||
download: '可下載',
|
||||
cnsub: '字幕',
|
||||
preview: '預覽圖',
|
||||
};
|
||||
|
||||
const title = `JavDB${filter[ctx.params.filter] === '' ? '' : ` - ${filter[ctx.params.filter]}`} `;
|
||||
|
||||
ctx.state.data = await utils.ProcessItems(ctx, currentUrl, title);
|
||||
};
|
||||
@@ -0,0 +1,12 @@
|
||||
const utils = require('./utils');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
ctx.params.caty = ctx.params.caty || 'censored';
|
||||
ctx.params.query = ctx.params.query || '';
|
||||
|
||||
const currentUrl = `${utils.rootUrl}/tags${ctx.params.caty === 'censored' ? '' : `/${ctx.params.caty}`}?${ctx.params.query}`;
|
||||
|
||||
const title = `JavDB${ctx.params.query === '' ? '' : ` - ${ctx.params.query}`} `;
|
||||
|
||||
ctx.state.data = await utils.ProcessItems(ctx, currentUrl, title);
|
||||
};
|
||||
@@ -0,0 +1,72 @@
|
||||
const got = require('@/utils/got');
|
||||
const cheerio = require('cheerio');
|
||||
|
||||
const rootUrl = 'https://javdb.com';
|
||||
|
||||
module.exports = {
|
||||
rootUrl: rootUrl,
|
||||
ProcessItems: async (ctx, currentUrl, title) => {
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: currentUrl,
|
||||
});
|
||||
|
||||
const $ = cheerio.load(response.data);
|
||||
|
||||
$('.tags').remove();
|
||||
|
||||
const list = $('.grid-item a')
|
||||
.slice(0, 5)
|
||||
.map((_, item) => {
|
||||
item = $(item);
|
||||
return {
|
||||
title: item.text(),
|
||||
link: `${rootUrl}${item.attr('href')}`,
|
||||
pubDate: new Date(item.find('.meta').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.enclosure_url = content('#magnets-content button[data-clipboard-text]').eq(0).attr('data-clipboard-text');
|
||||
item.enclosure_type = 'application/x-bittorrent';
|
||||
|
||||
content('icon, .review-buttons, .copy-to-clipboard').remove();
|
||||
content('#modal-review-watched, #modal-save-list').remove();
|
||||
content('.video-cover').eq(1).remove();
|
||||
|
||||
content('img.video-cover').attr('src', content(this).parent().attr('href'));
|
||||
|
||||
content('.preview-images img').each(function () {
|
||||
content(this).removeAttr('data-src');
|
||||
content(this).attr('src', content(this).parent().attr('href'));
|
||||
});
|
||||
|
||||
content('#preview-video').css('display', 'block');
|
||||
|
||||
item.description = content('.movie-info-panel .columns').html() + content('#magnets-content').html() + content('.preview-images').html();
|
||||
|
||||
return item;
|
||||
})
|
||||
)
|
||||
);
|
||||
|
||||
const htmlTitle = $('title').text();
|
||||
const subject = htmlTitle.indexOf('|') === -1 ? '' : htmlTitle.split('|')[0];
|
||||
|
||||
return {
|
||||
title: subject === '' ? title : `${subject} - ${title}`,
|
||||
link: currentUrl,
|
||||
item: items,
|
||||
};
|
||||
},
|
||||
};
|
||||
@@ -31,14 +31,14 @@ const ProcessFeed = async (list, caches) =>
|
||||
await Promise.all(
|
||||
list.map(async (item) => {
|
||||
// 解析时间,补偿时区offset
|
||||
const pubdate = new Date(parseInt(item.article_info.ctime) * 1000 - 8 * 60 * 60 * 1000);
|
||||
const link = `https://juejin.im/post/${item.article_id}`;
|
||||
const pubdate = new Date(parseInt(item.item_info.ctime || item.item_info.article_info.ctime) * 1000 - 8 * 60 * 60 * 1000);
|
||||
const link = item.item_info.url || `https://juejin.im/post/${item.item_info.article_info.article_id}`;
|
||||
// 列表上提取到的信息
|
||||
const single = {
|
||||
title: item.article_info.title,
|
||||
title: item.item_info.title || item.item_info.article_info.title,
|
||||
description: `${(item.content || item.summaryInfo || '无描述').replace(/[\x00-\x08\x0b-\x0c\x0e-\x1f\x7f]/g, '')}`,
|
||||
pubDate: pubdate.toUTCString(),
|
||||
author: item.author_user_info.user_name,
|
||||
author: item.item_info.author_name || item.item_info.author_user_info.user_name,
|
||||
link,
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
const url = require('url');
|
||||
const got = require('@/utils/got');
|
||||
const cheerio = require('cheerio');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
ctx.params.caty = ctx.params.caty || 'allnews';
|
||||
|
||||
let query;
|
||||
|
||||
if (ctx.params.caty === 'hd') {
|
||||
query = 'div.article_list article div h3 a';
|
||||
} else {
|
||||
query = 'div.article_list ul li a';
|
||||
}
|
||||
|
||||
const rootUrl = 'https://jx3.xoyo.com';
|
||||
const currentUrl = `${rootUrl}/${ctx.params.caty}`;
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: currentUrl,
|
||||
});
|
||||
|
||||
const $ = cheerio.load(response.data);
|
||||
|
||||
const list = $(query)
|
||||
.slice(0, 10)
|
||||
.map((_, item) => {
|
||||
item = $(item);
|
||||
return {
|
||||
title: item.text(),
|
||||
link: url.resolve(rootUrl, 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);
|
||||
|
||||
item.description = content('div.detail_con').html();
|
||||
item.pubDate = new Date(content('p.detail_time').text() + ' GMT+8').toUTCString();
|
||||
|
||||
return item;
|
||||
})
|
||||
)
|
||||
);
|
||||
|
||||
ctx.state.data = {
|
||||
title: `${$('ul.allnews_list_ul li.active').text()} - 剑网3`,
|
||||
link: currentUrl,
|
||||
item: items,
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,79 @@
|
||||
const got = require('@/utils/got');
|
||||
const cheerio = require('cheerio');
|
||||
|
||||
const config = {
|
||||
physics: {
|
||||
link: 'all-nobel-prizes-in-physics',
|
||||
title: 'Physics',
|
||||
},
|
||||
chemistry: {
|
||||
link: 'all-nobel-prizes-in-chemistry',
|
||||
title: 'Chemistry',
|
||||
},
|
||||
'physiology-or-medicine': {
|
||||
link: 'all-nobel-laureates-in-physiology-or-medicine',
|
||||
title: 'Physiology or Medicine',
|
||||
},
|
||||
literature: {
|
||||
link: 'all-nobel-prizes-in-literature',
|
||||
title: 'Literature',
|
||||
},
|
||||
peace: {
|
||||
link: 'all-nobel-peace-prizes',
|
||||
title: 'Peace',
|
||||
},
|
||||
'economic-sciences': {
|
||||
link: 'all-prizes-in-economic-sciences',
|
||||
title: 'Economic Science',
|
||||
},
|
||||
};
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
let rootUrl = 'https://www.nobelprize.org/prizes/lists/all-nobel-prizes/';
|
||||
|
||||
const cfg = config[ctx.params.caty];
|
||||
if (cfg) {
|
||||
rootUrl = `https://www.nobelprize.org/prizes/lists/${cfg.link}/`;
|
||||
}
|
||||
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: rootUrl,
|
||||
});
|
||||
|
||||
const $ = cheerio.load(response.data);
|
||||
|
||||
const items = $('div.by_year h3')
|
||||
.map((_, item) => {
|
||||
item = $(item);
|
||||
if (item.text().length === 4) {
|
||||
return Promise.resolve('');
|
||||
}
|
||||
|
||||
const a = item.find('a');
|
||||
|
||||
let description = '';
|
||||
|
||||
item.nextAll().each(function () {
|
||||
if ($(this).get(0).tagName === 'p') {
|
||||
description += `<p>${$(this).html()}</p>`;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
return {
|
||||
title: a.text(),
|
||||
link: a.attr('href'),
|
||||
pubDate: new Date(`${a.text().match(/([0-9]{4})/)[1]}-01-01 00:00:00 GMT+0`).toUTCString(),
|
||||
description,
|
||||
};
|
||||
})
|
||||
.get();
|
||||
|
||||
ctx.state.data = {
|
||||
title: $('title').eq(0).text(),
|
||||
link: rootUrl,
|
||||
item: items,
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,68 @@
|
||||
const got = require('@/utils/got');
|
||||
const cheerio = require('cheerio');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const caty = ctx.params.caty || 'all';
|
||||
const order = ctx.params.order || 'pick';
|
||||
const time = ctx.params.time || 'all';
|
||||
const query = ctx.params.query || '';
|
||||
|
||||
const rootUrl = `https://notefolio.net/?work_categories=${caty === 'all' ? '' : caty}&order=${order}&from=${time}&q=${query}`;
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: rootUrl,
|
||||
});
|
||||
|
||||
const $ = cheerio.load(response.data);
|
||||
|
||||
$('div.mobile-category-order').remove();
|
||||
|
||||
const list = $('div.work-list div.work-list-item')
|
||||
.slice(0, 5)
|
||||
.map((_, item) => {
|
||||
item = $(item);
|
||||
const a = item.find('a.go-to-work-info').eq(0);
|
||||
return {
|
||||
title: item.find('div.title').text(),
|
||||
link: `https://notefolio.net${a.attr('href')}`,
|
||||
author: item.find('span.go-profile-area').text(),
|
||||
};
|
||||
})
|
||||
.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 = '<ul>';
|
||||
|
||||
content('li.block-image a img').each((_, i) => {
|
||||
i = content(i);
|
||||
item.description += `<li><img src="${i.attr('src')}"></li>`;
|
||||
});
|
||||
|
||||
content('li.block-video iframe').each((_, i) => {
|
||||
i = content(i);
|
||||
item.description += `<li><iframe src="${i.attr('src')}"></li>`;
|
||||
});
|
||||
|
||||
item.description += `<li>${content('li.block-text').html()}</li></ul>`;
|
||||
|
||||
return item;
|
||||
})
|
||||
)
|
||||
);
|
||||
|
||||
ctx.state.data = {
|
||||
title: `${$('title').text()}`,
|
||||
link: rootUrl,
|
||||
item: items,
|
||||
};
|
||||
};
|
||||
@@ -1,4 +1,5 @@
|
||||
const got = require('@/utils/got');
|
||||
const date = require('@/utils/date');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const { rank_type, rank_id, hour } = ctx.params;
|
||||
@@ -31,7 +32,7 @@ module.exports = async (ctx) => {
|
||||
item: list.map((item) => ({
|
||||
title: `${item.article_title} - ${item.article_price}`,
|
||||
description: `${item.article_title} - ${item.article_price}<br><img src="${item.article_pic}">`,
|
||||
pubDate: new Date(item.article_pubdate).toUTCString(),
|
||||
pubDate: date(item.article_pubdate, 8),
|
||||
link: item.article_url,
|
||||
})),
|
||||
};
|
||||
|
||||
@@ -126,6 +126,14 @@ module.exports = async (ctx) => {
|
||||
pubDate: 1546272000000,
|
||||
author: `DIYgod0`,
|
||||
});
|
||||
} else if (ctx.params.id === 'opencc') {
|
||||
item.push({
|
||||
title: '小可愛',
|
||||
description: '宇宙無敵',
|
||||
link: `/DIYgod/RSSHub/issues/0`,
|
||||
pubDate: new Date(1546272000000).toUTCString(),
|
||||
author: `DIYgod0`,
|
||||
});
|
||||
}
|
||||
|
||||
for (let i = 1; i < 6; i++) {
|
||||
|
||||
@@ -7,12 +7,12 @@ module.exports = {
|
||||
const res = await got.get(link);
|
||||
|
||||
const $ = cheerio.load(res.data);
|
||||
const list = $('.t_news').slice(0, 10).get();
|
||||
const list = $('.list_item').slice(0, 10).get();
|
||||
|
||||
return await Promise.all(
|
||||
list.map(async (item) => {
|
||||
const $ = cheerio.load(item);
|
||||
const itemUrlID = $(item).find('.news_tit02 a').attr('href');
|
||||
const itemUrlID = $(item).find('.list_item_title a').attr('href');
|
||||
const itemUrl = `https://m.thepaper.cn/${itemUrlID}`;
|
||||
const cache = await ctx.cache.get(itemUrl);
|
||||
if (cache) {
|
||||
@@ -25,11 +25,11 @@ module.exports = {
|
||||
content('.contheight').replaceWith('<br>');
|
||||
|
||||
const single = {
|
||||
title: content('h1.t_newsinfo').text(),
|
||||
title: content('.news_video_name').text() || content('.title').text(),
|
||||
link: itemUrl,
|
||||
description: $(content('.news_part_limit div')[0]).html(),
|
||||
pubDate: date($(content('.about_news')[1]).text().trim()),
|
||||
author: $(content('.about_news')[0]).text(),
|
||||
description: content('#vdetail_sum_p').html() || content('.news_part_limit div').html(),
|
||||
pubDate: date(content('.date').text().trim()),
|
||||
author: content('.author').text(),
|
||||
};
|
||||
return Promise.resolve(single);
|
||||
})
|
||||
|
||||
@@ -7,25 +7,41 @@ module.exports = async (ctx) => {
|
||||
method: 'get',
|
||||
url: 'https://jwc.xidian.edu.cn',
|
||||
});
|
||||
const arrC = ['信息发布', '通知公告', '教务信息', '教学研究', '教学实践', '招生信息', '质量监控'];
|
||||
const arrE = ['xxfb', 'tzgg', 'jwxx', 'jxyj', 'jxsj', 'zsxx', 'zljk'];
|
||||
const arrC = ['教学信息', '教学研究', '实践教学', '质量监控', '通知公告'];
|
||||
const arrE = ['jxxx', 'jxyj', 'sjjx', 'zljk', 'tzgg'];
|
||||
|
||||
const data = response.data;
|
||||
const data = response.body;
|
||||
|
||||
const $ = cheerio.load(data);
|
||||
const list = $('#__01 > tbody > tr > td:nth-child(2)');
|
||||
const titleTables = list.children().filter((index) => index % 2 !== 1);
|
||||
const leftItems = $('div .con2 .fl').children();
|
||||
const rightItems = $('div .con2 .fr').children();
|
||||
const mainItems = $('div .main_right').children();
|
||||
const list = { 0: leftItems[1], 1: leftItems[4], 2: rightItems[1], 3: rightItems[4], 4: mainItems[5] };
|
||||
|
||||
const parseTable = (index, item) => {
|
||||
const title = arrC[index];
|
||||
const aTags = $(item).next().find('a');
|
||||
const aTags = $(item).find('a');
|
||||
return aTags
|
||||
.map((_, item) => {
|
||||
item = $(item);
|
||||
let date;
|
||||
if (index === '0' || index === '1') {
|
||||
date = new Date(item.find('span').text()).toUTCString();
|
||||
} else if (index === '4') {
|
||||
const a = item.find('div p').text();
|
||||
const b = item.find('span').text();
|
||||
const c = b + '.' + a;
|
||||
date = new Date(c).toUTCString();
|
||||
} else {
|
||||
const a = item.find('div p').text();
|
||||
const b = item.find('span').text();
|
||||
const c = a + '.' + b;
|
||||
date = new Date(c).toUTCString();
|
||||
}
|
||||
return {
|
||||
title: item.attr('title'),
|
||||
description: title + '<br/>' + item.attr('title') + '<br/>全文内容需使用校园网或VPN获取',
|
||||
pubDate: new Date(item.parent().next().text()).toUTCString(),
|
||||
pubDate: date,
|
||||
link: `https://jwc.xidian.edu.cn/${item.attr('href')}`,
|
||||
};
|
||||
})
|
||||
@@ -33,12 +49,14 @@ module.exports = async (ctx) => {
|
||||
};
|
||||
|
||||
const arrIndex = arrE.indexOf(category);
|
||||
let result;
|
||||
let result = new Array();
|
||||
if (arrIndex === -1) {
|
||||
result = titleTables.map(parseTable).get();
|
||||
for (const i in list) {
|
||||
result = result.concat(parseTable(i, list[i]));
|
||||
}
|
||||
result.sort((a, b) => new Date(b.pubDate) - new Date(a.pubDate));
|
||||
} else {
|
||||
result = parseTable(arrIndex, titleTables[arrIndex]);
|
||||
result = parseTable(arrIndex, list[arrIndex]);
|
||||
}
|
||||
|
||||
ctx.state.data = {
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
const got = require('@/utils/got');
|
||||
|
||||
const config = {
|
||||
global: '要闻',
|
||||
'a-stock': 'A股',
|
||||
'us-stock': '美股',
|
||||
'hk-stock': '港股',
|
||||
forex: '外汇',
|
||||
commodity: '商品',
|
||||
financing: '理财',
|
||||
};
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
ctx.params.channel = ctx.params.channel || 'global';
|
||||
|
||||
const currentUrl = `https://wallstreetcn.com/live/${ctx.params.channel}`;
|
||||
const rootUrl = `https://api.wallstcn.com/apiv1/content/lives?channel=${ctx.params.channel}-channel`;
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: rootUrl,
|
||||
});
|
||||
|
||||
const items = response.data.data.items.map((item) => {
|
||||
let title;
|
||||
const match = item.content_text.match(/【(.*)】/);
|
||||
if (match !== null) {
|
||||
title = match[1];
|
||||
} else {
|
||||
title = item.content_text;
|
||||
}
|
||||
return {
|
||||
title,
|
||||
link: `https://wallstreetcn.com/livenews/${item.id}`,
|
||||
pubDate: new Date(item.display_time * 1000).toUTCString(),
|
||||
description: item.content,
|
||||
};
|
||||
});
|
||||
|
||||
ctx.state.data = {
|
||||
title: `${config[ctx.params.channel]} - 实时快讯 - 华尔街见闻`,
|
||||
link: currentUrl,
|
||||
item: items,
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,53 @@
|
||||
const got = require('@/utils/got');
|
||||
const cheerio = require('cheerio');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
ctx.params.lang = ctx.params.lang || 'www';
|
||||
ctx.params.platform = ctx.params.platform || '';
|
||||
ctx.params.year = ctx.params.year || '';
|
||||
|
||||
const rootUrl = `https://${ctx.params.lang === 'en' ? 'www' : ctx.params.lang}.weforum.org`;
|
||||
const currentUrl = `${rootUrl}/reports?platform=${ctx.params.platform}&year=${ctx.params.year}`;
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: currentUrl,
|
||||
});
|
||||
|
||||
const $ = cheerio.load(response.data);
|
||||
|
||||
const list = $('.report-listing-tout__content')
|
||||
.map((_, item) => {
|
||||
item = $(item);
|
||||
return {
|
||||
title: item.find('.report-listing-tout__title').text(),
|
||||
link: `${rootUrl}${item.find('.report-listing-tout__cta').attr('href')}`,
|
||||
description: `<a href="${item.find('.report__link').attr('href')}">Download PDF</a>`,
|
||||
};
|
||||
})
|
||||
.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('.report__meta').remove();
|
||||
|
||||
item.description += content('.report__display-info').html();
|
||||
|
||||
return item;
|
||||
})
|
||||
)
|
||||
);
|
||||
|
||||
ctx.state.data = {
|
||||
title: $('title').text(),
|
||||
link: currentUrl,
|
||||
item: items,
|
||||
};
|
||||
};
|
||||
+47
-26
@@ -1,12 +1,10 @@
|
||||
const { google } = require('googleapis');
|
||||
const config = require('@/config').value;
|
||||
|
||||
let getYoutube = () => null;
|
||||
let count = 0;
|
||||
const youtube = {};
|
||||
if (config.youtube.key) {
|
||||
const keys = config.youtube.key.split(',');
|
||||
const youtube = {};
|
||||
let count = 0;
|
||||
let index = -1;
|
||||
|
||||
keys.forEach((key, index) => {
|
||||
if (key) {
|
||||
@@ -17,44 +15,67 @@ if (config.youtube.key) {
|
||||
count = index + 1;
|
||||
}
|
||||
});
|
||||
|
||||
getYoutube = () => {
|
||||
index++;
|
||||
return youtube[index % count];
|
||||
};
|
||||
}
|
||||
|
||||
let index = -1;
|
||||
const exec = async (func) => {
|
||||
let result;
|
||||
for (let i = 0; i < count; i++) {
|
||||
index++;
|
||||
try {
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
result = await func(youtube[index % count]);
|
||||
break;
|
||||
} catch (error) {
|
||||
// console.error(error);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
const youtubeUtils = {
|
||||
getPlaylistItems: async (id, part) => {
|
||||
const res = await getYoutube().playlistItems.list({
|
||||
part,
|
||||
playlistId: id,
|
||||
maxResults: 50, // youtube api param value default is 5
|
||||
});
|
||||
const res = await exec(
|
||||
async (youtube) =>
|
||||
await youtube.playlistItems.list({
|
||||
part,
|
||||
playlistId: id,
|
||||
maxResults: 50, // youtube api param value default is 5
|
||||
})
|
||||
);
|
||||
return res;
|
||||
},
|
||||
getPlaylist: async (id, part, cache) =>
|
||||
await cache.tryGet('getPlaylist' + id, async () => {
|
||||
const res = await getYoutube().playlists.list({
|
||||
part,
|
||||
id: id,
|
||||
});
|
||||
const res = await exec(
|
||||
async (youtube) =>
|
||||
await youtube.playlists.list({
|
||||
part,
|
||||
id: id,
|
||||
})
|
||||
);
|
||||
return res;
|
||||
}),
|
||||
getChannelWithId: async (id, part, cache) =>
|
||||
await cache.tryGet('getChannelWithId' + id, async () => {
|
||||
const res = await getYoutube().channels.list({
|
||||
part,
|
||||
id: id,
|
||||
});
|
||||
const res = await exec(
|
||||
async (youtube) =>
|
||||
await youtube.channels.list({
|
||||
part,
|
||||
id: id,
|
||||
})
|
||||
);
|
||||
return res;
|
||||
}),
|
||||
getChannelWithUsername: async (username, part, cache) =>
|
||||
await cache.tryGet('getPlaylist' + username, async () => {
|
||||
const res = await getYoutube().channels.list({
|
||||
part,
|
||||
forUsername: username,
|
||||
});
|
||||
const res = await exec(
|
||||
async (youtube) =>
|
||||
await youtube.channels.list({
|
||||
part,
|
||||
forUsername: username,
|
||||
})
|
||||
);
|
||||
return res;
|
||||
}),
|
||||
getThumbnail: (thumbnails) => thumbnails.maxres || thumbnails.standard || thumbnails.high || thumbnails.medium || thumbnails.default,
|
||||
|
||||
+14
-13
@@ -34,23 +34,23 @@
|
||||
},
|
||||
"homepage": "https://github.com/DIYgod/RSSHub#readme",
|
||||
"devDependencies": {
|
||||
"@types/cheerio": "0.22.21",
|
||||
"@types/cheerio": "0.22.22",
|
||||
"@types/got": "9.6.11",
|
||||
"@types/koa": "2.11.4",
|
||||
"@vuepress/plugin-back-to-top": "1.5.4",
|
||||
"@vuepress/plugin-google-analytics": "1.5.4",
|
||||
"@vuepress/plugin-pwa": "1.5.4",
|
||||
"@vuepress/plugin-back-to-top": "1.6.0",
|
||||
"@vuepress/plugin-google-analytics": "1.6.0",
|
||||
"@vuepress/plugin-pwa": "1.6.0",
|
||||
"cross-env": "7.0.2",
|
||||
"entities": "2.0.3",
|
||||
"eslint": "7.9.0",
|
||||
"eslint-config-prettier": "6.11.0",
|
||||
"eslint": "7.10.0",
|
||||
"eslint-config-prettier": "6.12.0",
|
||||
"eslint-plugin-prettier": "3.1.4",
|
||||
"jest": "26.4.2",
|
||||
"mockdate": "3.0.2",
|
||||
"nock": "13.0.4",
|
||||
"nodemon": "2.0.4",
|
||||
"pinyin": "2.9.1",
|
||||
"prettier": "2.1.1",
|
||||
"prettier": "2.1.2",
|
||||
"prettier-check": "2.0.0",
|
||||
"pretty-quick": "3.0.2",
|
||||
"remark": "12.0.1",
|
||||
@@ -59,8 +59,8 @@
|
||||
"remark-preset-prettier": "0.4.0",
|
||||
"staged-git-files": "1.2.0",
|
||||
"string-width": "4.2.0",
|
||||
"supertest": "4.0.2",
|
||||
"vuepress": "1.5.3",
|
||||
"supertest": "5.0.0",
|
||||
"vuepress": "1.6.0",
|
||||
"yorkie": "2.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
@@ -74,13 +74,13 @@
|
||||
"co-redis": "2.1.1",
|
||||
"crypto-js": "4.0.0",
|
||||
"currency-symbol-map": "4.0.4",
|
||||
"dayjs": "1.8.36",
|
||||
"dayjs": "1.9.1",
|
||||
"dotenv": "8.2.0",
|
||||
"emailjs-imap-client": "3.1.0",
|
||||
"etag": "1.8.1",
|
||||
"fanfou-sdk": "4.2.0",
|
||||
"git-rev-sync": "3.0.1",
|
||||
"googleapis": "59.0.0",
|
||||
"googleapis": "60.0.1",
|
||||
"got": "11.7.0",
|
||||
"he": "1.2.0",
|
||||
"hooman": "1.2.6",
|
||||
@@ -99,11 +99,12 @@
|
||||
"mailparser": "3.0.0",
|
||||
"markdown-it": "11.0.1",
|
||||
"module-alias": "2.2.2",
|
||||
"opencc": "1.1.1",
|
||||
"parse-torrent": "7.1.3",
|
||||
"pidusage": "2.0.21",
|
||||
"plist": "3.0.1",
|
||||
"puppeteer": "5.3.0",
|
||||
"query-string": "6.13.2",
|
||||
"puppeteer": "5.3.1",
|
||||
"query-string": "6.13.4",
|
||||
"redis": "3.0.2",
|
||||
"require-all": "3.0.0",
|
||||
"rss-parser": "3.9.0",
|
||||
|
||||
+16
-12
@@ -18,8 +18,9 @@ afterAll(() => {
|
||||
|
||||
describe('debug', () => {
|
||||
it('debug', async () => {
|
||||
await request.get('/test/1').set('X-Forwarded-For', '233.233.233.233');
|
||||
await request.get('/test/1').set('X-Forwarded-For', '233.233.233.233');
|
||||
const response1 = await request.get('/test/1').set('X-Forwarded-For', '233.233.233.233');
|
||||
const etag = response1.headers.etag;
|
||||
await request.get('/test/1').set('If-None-Match', etag).set('X-Forwarded-For', '233.233.233.233');
|
||||
await request.get('/test/1').set('X-Forwarded-For', '233.233.233.234');
|
||||
await request.get('/test/2').set('X-Forwarded-For', '233.233.233.233');
|
||||
await request.get('/test/2').set('X-Forwarded-For', '233.233.233.234');
|
||||
@@ -33,28 +34,31 @@ describe('debug', () => {
|
||||
const key = $(item).find('.debug-key').html().trim();
|
||||
const value = $(item).find('.debug-value').html().trim();
|
||||
switch (key) {
|
||||
case 'node name:':
|
||||
case 'Node Name:':
|
||||
expect(value).toBe('mock');
|
||||
break;
|
||||
case 'git hash:':
|
||||
case 'Git Hash:':
|
||||
expect(value).toBe(gitHash);
|
||||
break;
|
||||
case 'request amount:':
|
||||
case 'Request Amount:':
|
||||
expect(value).toBe('8');
|
||||
break;
|
||||
case 'hot routes:':
|
||||
expect(value).toBe('3 /test/:id<br>');
|
||||
case 'ETag Matched:':
|
||||
expect(value).toBe('1');
|
||||
break;
|
||||
case 'hot paths:':
|
||||
case 'Hot Routes:':
|
||||
expect(value).toBe('7 /test/:id<br>');
|
||||
break;
|
||||
case 'Hot Paths:':
|
||||
expect(value).toBe('3 /test/1<br>2 /test/2<br>2 /test/empty<br>1 /<br>');
|
||||
break;
|
||||
case 'hot IP:':
|
||||
case 'Hot IP:':
|
||||
expect(value).toBe('5 233.233.233.233<br>3 233.233.233.234<br>');
|
||||
break;
|
||||
case 'hot error routes:':
|
||||
expect(value).toBe('1 /test/:id<br>');
|
||||
case 'Hot Error Routes:':
|
||||
expect(value).toBe('2 /test/:id<br>');
|
||||
break;
|
||||
case 'hot error paths:':
|
||||
case 'Hot Error Paths:':
|
||||
expect(value).toBe('2 /test/empty<br>');
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ jest.mock('request-promise-native');
|
||||
const server = require('../../lib/index');
|
||||
const request = supertest(server);
|
||||
const config = require('../../lib/config').value;
|
||||
let etag;
|
||||
|
||||
afterAll(() => {
|
||||
server.close();
|
||||
@@ -19,5 +20,14 @@ describe('header', () => {
|
||||
expect(response.headers['cache-control']).toBe(`public, max-age=${config.cache.routeExpire}`);
|
||||
expect(response.headers['last-modified']).toBe(response.text.match(/<lastBuildDate>(.*)<\/lastBuildDate>/)[1]);
|
||||
expect(response.headers['rsshub-node']).toBe('mock');
|
||||
expect(response.headers.etag).not.toBe(undefined);
|
||||
etag = response.headers.etag;
|
||||
});
|
||||
|
||||
it(`etag`, async () => {
|
||||
const response = await request.get('/test/1').set('If-None-Match', etag);
|
||||
expect(response.status).toBe(304);
|
||||
expect(response.text).toBe('');
|
||||
expect(response.headers['last-modified']).toBe(undefined);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -301,3 +301,12 @@ describe('mess parameter', () => {
|
||||
expect(parsed.items[0].link).toBe('https://github.com/DIYgod/RSSHub/issues/0');
|
||||
});
|
||||
});
|
||||
|
||||
describe('opencc', () => {
|
||||
it(`opencc`, async () => {
|
||||
const response = await request.get('/test/opencc?opencc=t2s');
|
||||
const parsed = await parser.parseString(response.text);
|
||||
expect(parsed.items[0].title).toBe('小可爱');
|
||||
expect(parsed.items[0].content).toBe('宇宙无敌');
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1525,10 +1525,10 @@
|
||||
"@types/node" "*"
|
||||
"@types/responselike" "*"
|
||||
|
||||
"@types/cheerio@0.22.21":
|
||||
version "0.22.21"
|
||||
resolved "https://registry.yarnpkg.com/@types/cheerio/-/cheerio-0.22.21.tgz#5e37887de309ba11b2e19a6e14cad7874b31a8a3"
|
||||
integrity sha512-aGI3DfswwqgKPiEOTaiHV2ZPC9KEhprpgEbJnv0fZl3SGX0cGgEva1126dGrMC6AJM6v/aihlUgJn9M5DbDZ/Q==
|
||||
"@types/cheerio@0.22.22":
|
||||
version "0.22.22"
|
||||
resolved "https://registry.yarnpkg.com/@types/cheerio/-/cheerio-0.22.22.tgz#ae71cf4ca59b8bbaf34c99af7a5d6c8894988f5f"
|
||||
integrity sha512-05DYX4zU96IBfZFY+t3Mh88nlwSMtmmzSYaQkKN48T495VV1dkHSah6qYyDTN5ngaS0i0VonH37m+RuzSM0YiA==
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
@@ -1856,18 +1856,18 @@
|
||||
source-map "~0.6.1"
|
||||
vue-template-es2015-compiler "^1.9.0"
|
||||
|
||||
"@vuepress/core@1.5.3":
|
||||
version "1.5.3"
|
||||
resolved "https://registry.yarnpkg.com/@vuepress/core/-/core-1.5.3.tgz#e48728a26a60b21673c7b8f1f7377c03fb17e34f"
|
||||
integrity sha512-ZZpDkYVtztN2eWZ5+oj5DoGMEQdV9Bz4et0doKhLXfIEQFwjWUyN6HHnIgqjnmSFIqfjzbWdOKVxMLENs8njpA==
|
||||
"@vuepress/core@1.6.0":
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/@vuepress/core/-/core-1.6.0.tgz#8abca498cd8c589dd621be5d5b1c9c805dfed3fd"
|
||||
integrity sha512-zce6xMB77pk4g44CHYE75cBuJpa3lmLPujknymH0sD1LKkSrlkgH04x+LGhu98bVU/hiS0xjV3jDs3X37Texbw==
|
||||
dependencies:
|
||||
"@babel/core" "^7.8.4"
|
||||
"@vue/babel-preset-app" "^4.1.2"
|
||||
"@vuepress/markdown" "1.5.3"
|
||||
"@vuepress/markdown-loader" "1.5.3"
|
||||
"@vuepress/plugin-last-updated" "1.5.3"
|
||||
"@vuepress/plugin-register-components" "1.5.3"
|
||||
"@vuepress/shared-utils" "1.5.3"
|
||||
"@vuepress/markdown" "1.6.0"
|
||||
"@vuepress/markdown-loader" "1.6.0"
|
||||
"@vuepress/plugin-last-updated" "1.6.0"
|
||||
"@vuepress/plugin-register-components" "1.6.0"
|
||||
"@vuepress/shared-utils" "1.6.0"
|
||||
autoprefixer "^9.5.1"
|
||||
babel-loader "^8.0.4"
|
||||
cache-loader "^3.0.0"
|
||||
@@ -1900,21 +1900,21 @@
|
||||
webpack-merge "^4.1.2"
|
||||
webpackbar "3.2.0"
|
||||
|
||||
"@vuepress/markdown-loader@1.5.3":
|
||||
version "1.5.3"
|
||||
resolved "https://registry.yarnpkg.com/@vuepress/markdown-loader/-/markdown-loader-1.5.3.tgz#3d0eec1d37318b71029f051525f0bff3bc36647d"
|
||||
integrity sha512-Y1FLkEZw1p84gPer14CjA1gPSdmc/bfPuZ/7mE0dqBtpsU3o9suaubWpFs75agjHew4IJap5TibtUs57FWGSfA==
|
||||
"@vuepress/markdown-loader@1.6.0":
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/@vuepress/markdown-loader/-/markdown-loader-1.6.0.tgz#5a666c5b01c01181a3c0802ceed5a2b96577d9c7"
|
||||
integrity sha512-7cYD9+td89u0EePoHw+nVwxCoafYvpP10r6RfdN3Ongvd2apyn37Mjjv+85U1jnSTRvjZHV4v7KFs4H8+Y0xiw==
|
||||
dependencies:
|
||||
"@vuepress/markdown" "1.5.3"
|
||||
"@vuepress/markdown" "1.6.0"
|
||||
loader-utils "^1.1.0"
|
||||
lru-cache "^5.1.1"
|
||||
|
||||
"@vuepress/markdown@1.5.3":
|
||||
version "1.5.3"
|
||||
resolved "https://registry.yarnpkg.com/@vuepress/markdown/-/markdown-1.5.3.tgz#90807f0366ebdde8380b27f249396cffe9c5d300"
|
||||
integrity sha512-TI6pSkmvu8SZhIfZR0VbDmmGAWOaoI+zIaXMDY27ex7Ty/KQ/JIsVSgr5wbiSJMhkA0efbZzAVFu1NrHIc1waw==
|
||||
"@vuepress/markdown@1.6.0":
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/@vuepress/markdown/-/markdown-1.6.0.tgz#6702a1938b5d5308919261ffcc5c369eabfa6694"
|
||||
integrity sha512-niFP+mKbEPu82OkkYf+dZMd8cWYfKEeIFq2jrQCJcVnCuSGVmJbKJbQF+cP/iu+94RHFVUtKwsh4X3Ef/1PLXw==
|
||||
dependencies:
|
||||
"@vuepress/shared-utils" "1.5.3"
|
||||
"@vuepress/shared-utils" "1.6.0"
|
||||
markdown-it "^8.4.1"
|
||||
markdown-it-anchor "^5.0.2"
|
||||
markdown-it-chain "^1.3.0"
|
||||
@@ -1922,80 +1922,64 @@
|
||||
markdown-it-table-of-contents "^0.4.0"
|
||||
prismjs "^1.13.0"
|
||||
|
||||
"@vuepress/plugin-active-header-links@1.5.3":
|
||||
version "1.5.3"
|
||||
resolved "https://registry.yarnpkg.com/@vuepress/plugin-active-header-links/-/plugin-active-header-links-1.5.3.tgz#736f51a3aab126b6a003d896d3d77254b656a76e"
|
||||
integrity sha512-x9U3bVkwwUkfXtf7db1Gg/m32UGpSWRurdl9I5ePFFxwEy8ffGmvhpzCBL878q8TNa90jd1XueQJCq6hQ9/KsQ==
|
||||
"@vuepress/plugin-active-header-links@1.6.0":
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/@vuepress/plugin-active-header-links/-/plugin-active-header-links-1.6.0.tgz#7d94db2e34a0b4af10b93171f56e7efc3bb7bd40"
|
||||
integrity sha512-AsbUptcwtBJtlvrcDyiW2HZAHz/tLoYXrGopJVPtWUZ9LzNIcXuSFVIRzKd1Jc+86VPUYLeDhLBIWe0rfsphAQ==
|
||||
dependencies:
|
||||
lodash.debounce "^4.0.8"
|
||||
|
||||
"@vuepress/plugin-back-to-top@1.5.4":
|
||||
version "1.5.4"
|
||||
resolved "https://registry.yarnpkg.com/@vuepress/plugin-back-to-top/-/plugin-back-to-top-1.5.4.tgz#f7904e1220fcd1cb457a819a6bf963b55c584bea"
|
||||
integrity sha512-FqT3F8VztSiDXtI7xjD4SOeEuyaPYx2zxxU3cH3wfe/amlFWyFPjTWJwAf1GRT5CqS13J2qfEnfWMU/Ct7Xg/Q==
|
||||
"@vuepress/plugin-back-to-top@1.6.0":
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/@vuepress/plugin-back-to-top/-/plugin-back-to-top-1.6.0.tgz#a10df98b7a4f57c627f72289cd0ab2ff0f075a1d"
|
||||
integrity sha512-nJr/qlBcCN8vUyAb3nZPKqBS1DjfgZJquroOOd41CcLgsq3yAxmWLmxbLjg1MoBxk1Q8TrWz8qI7JRIw7W4aVw==
|
||||
dependencies:
|
||||
lodash.debounce "^4.0.8"
|
||||
|
||||
"@vuepress/plugin-google-analytics@1.5.4":
|
||||
version "1.5.4"
|
||||
resolved "https://registry.yarnpkg.com/@vuepress/plugin-google-analytics/-/plugin-google-analytics-1.5.4.tgz#43dff0a84b18b21ea597f3d97281c40d754a5083"
|
||||
integrity sha512-JVmIPBqKNiOVvow+XAZE+jgGvIRMBVxZOpKb5HBQ0xwz/E81Opl7cxdX9VkPKX+i9VoRBPWEiD/874RivzbW1g==
|
||||
"@vuepress/plugin-google-analytics@1.6.0":
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/@vuepress/plugin-google-analytics/-/plugin-google-analytics-1.6.0.tgz#1a3960259556016b668276ab00417f1c96ddf4bd"
|
||||
integrity sha512-CPRTQsq6KnZEb4SEB/6KdXHFKGvKdsg0GWtSYpLTbF/aUETVRUVJsqR7i/tLWgtyB8qFMwzPUiTc7KlEFjvYyg==
|
||||
|
||||
"@vuepress/plugin-last-updated@1.5.3":
|
||||
version "1.5.3"
|
||||
resolved "https://registry.yarnpkg.com/@vuepress/plugin-last-updated/-/plugin-last-updated-1.5.3.tgz#1f2dcc653d3b829d65094433395f9a92642eb301"
|
||||
integrity sha512-xb4FXSRTTPrERX2DigGDAJrVFLsTQwsY4QSzRBFYSlfZkK3gcZMNmUISXS/4tDkyPgxh/TtcMwbcUiUu0LQOnQ==
|
||||
"@vuepress/plugin-last-updated@1.6.0":
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/@vuepress/plugin-last-updated/-/plugin-last-updated-1.6.0.tgz#9c27739b87adc908b1fbb90f96b3456065c20f08"
|
||||
integrity sha512-/gnk9HGaZw3ow/i9ODjZxK40TbriTWuMY3YYIzqvP7CT3mrM92nMKYDygYbffbu6xkWdUZppN8JadtJ7we4z9A==
|
||||
dependencies:
|
||||
cross-spawn "^6.0.5"
|
||||
|
||||
"@vuepress/plugin-nprogress@1.5.3":
|
||||
version "1.5.3"
|
||||
resolved "https://registry.yarnpkg.com/@vuepress/plugin-nprogress/-/plugin-nprogress-1.5.3.tgz#01c699739ecfe94569986ff838665dcb30e6cb05"
|
||||
integrity sha512-SBa4uoRBaBPF+TrN38y/eFSnj1c2a53EuyY+vYijrWq5+nmDCQkpoClpS4a90f2eG2shMIvsMxUsS8waMKFZ8w==
|
||||
"@vuepress/plugin-nprogress@1.6.0":
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/@vuepress/plugin-nprogress/-/plugin-nprogress-1.6.0.tgz#7c93a3ed233ef8cc21b689d54f518902502e064c"
|
||||
integrity sha512-dhIho2z33aGjPavcdVYRlqR3+ZC5Vd3FPd+HkRP8MdIIFxhVR1HLFxVgaSUcASOCGAwuG58OB2RStvgMQLtTEA==
|
||||
dependencies:
|
||||
nprogress "^0.2.0"
|
||||
|
||||
"@vuepress/plugin-pwa@1.5.4":
|
||||
version "1.5.4"
|
||||
resolved "https://registry.yarnpkg.com/@vuepress/plugin-pwa/-/plugin-pwa-1.5.4.tgz#97fe6d917f8815cdea7a8025e065c5a08480cd94"
|
||||
integrity sha512-d3XWS0Zbae1c6IDU64BpIAIr78A7kTZTA7qkqk1H5sbO1SqlXMWQVMsiFZuraxiEY2uDc0N5j3Yr4Kkmo+0o0w==
|
||||
"@vuepress/plugin-pwa@1.6.0":
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/@vuepress/plugin-pwa/-/plugin-pwa-1.6.0.tgz#4de907286cf5afc6e8ced03625ec7ed66a7c2310"
|
||||
integrity sha512-8Y3KnbEtprolA83AGBcRdzVs64+ZjQRGWaRWAeEZIsWl1gNuwcMT+voS69IpbqMUH7cw8v/KDQdIJkEjvOBe0w==
|
||||
dependencies:
|
||||
"@vuepress/shared-utils" "1.5.4"
|
||||
"@vuepress/shared-utils" "1.6.0"
|
||||
register-service-worker "^1.7.0"
|
||||
workbox-build "^4.3.1"
|
||||
|
||||
"@vuepress/plugin-register-components@1.5.3":
|
||||
version "1.5.3"
|
||||
resolved "https://registry.yarnpkg.com/@vuepress/plugin-register-components/-/plugin-register-components-1.5.3.tgz#70e28460475e42b43435c6647ace537129116fb1"
|
||||
integrity sha512-OzL7QOKhR+biUWrDqPisQz35cXVdI274cDWw2tTUTw3yr7aPyezDw3DFRFXzPaZzk9Jo+d+kkOTwghXXC88Xbg==
|
||||
"@vuepress/plugin-register-components@1.6.0":
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/@vuepress/plugin-register-components/-/plugin-register-components-1.6.0.tgz#bdf7271a38edffa83d48ab82210489f4fc6343e8"
|
||||
integrity sha512-w9Lafh1G3514rulpjSoIfZXt94wZ5oMkpXyVzXyC2wRHqSu/4fKpcxhwxf6HeT57jIBdPifT+eUrL+XIZWnXLQ==
|
||||
dependencies:
|
||||
"@vuepress/shared-utils" "1.5.3"
|
||||
"@vuepress/shared-utils" "1.6.0"
|
||||
|
||||
"@vuepress/plugin-search@1.5.3":
|
||||
version "1.5.3"
|
||||
resolved "https://registry.yarnpkg.com/@vuepress/plugin-search/-/plugin-search-1.5.3.tgz#c2a93fceab3830e4f07ba6ac68e3bfc27c7d908d"
|
||||
integrity sha512-LCqqgKQ1I26oWE3N5OKeZMV0xtWv2WURI+bhxirM1xL0OpCQyqwk/rLHWBto+j4Y0ScxgXiRxa9Zs2E6eY6Dnw==
|
||||
"@vuepress/plugin-search@1.6.0":
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/@vuepress/plugin-search/-/plugin-search-1.6.0.tgz#a064f638a8f30485859b871047deaf9194ffc886"
|
||||
integrity sha512-Js7zRmM6/b6dYfnJsSP2MQN0lzjUfSX8l3z9y/QHxK8BaXIx7LdTcQY6FGK4pxuwlWcg02CIUS5BMc1gZKn6Nw==
|
||||
|
||||
"@vuepress/shared-utils@1.5.3":
|
||||
version "1.5.3"
|
||||
resolved "https://registry.yarnpkg.com/@vuepress/shared-utils/-/shared-utils-1.5.3.tgz#071bb68c3ec0dfb5f3939c14d3a8795a03617ad4"
|
||||
integrity sha512-/eTSADRZ0Iz1REnIkQ1ouoWY0ZH9ivH6IuGT19H/WBe8gru2EoK7jUqpXE8JHcGf6pxkK3qB4E/DNCO9Cyy4yg==
|
||||
dependencies:
|
||||
chalk "^2.3.2"
|
||||
diacritics "^1.3.0"
|
||||
escape-html "^1.0.3"
|
||||
fs-extra "^7.0.1"
|
||||
globby "^9.2.0"
|
||||
gray-matter "^4.0.1"
|
||||
hash-sum "^1.0.2"
|
||||
semver "^6.0.0"
|
||||
toml "^3.0.0"
|
||||
upath "^1.1.0"
|
||||
|
||||
"@vuepress/shared-utils@1.5.4":
|
||||
version "1.5.4"
|
||||
resolved "https://registry.yarnpkg.com/@vuepress/shared-utils/-/shared-utils-1.5.4.tgz#d2c8693b8cd354d3a13a76f8f4259335e5540099"
|
||||
integrity sha512-HCeMPEAPjFN1Ongii0BUCI1iB4gBBiQ4PUgh7F4IGG8yBg4tMqWO4NHqCuDCuGEvK7lgHy8veto0SsSvdSKp3g==
|
||||
"@vuepress/shared-utils@1.6.0":
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/@vuepress/shared-utils/-/shared-utils-1.6.0.tgz#8bf0c9c4e502bc6f10e70db3b236e816d8165631"
|
||||
integrity sha512-+TMHgW7gmVY2lRX5qpPbsLkbxTBbzRo+Ar05tvEI0bAG0c6v2gWyQr3BchdbLyRJxrAVk530PABAjM8roDJ9bw==
|
||||
dependencies:
|
||||
chalk "^2.3.2"
|
||||
escape-html "^1.0.3"
|
||||
@@ -2007,17 +1991,17 @@
|
||||
toml "^3.0.0"
|
||||
upath "^1.1.0"
|
||||
|
||||
"@vuepress/theme-default@1.5.3":
|
||||
version "1.5.3"
|
||||
resolved "https://registry.yarnpkg.com/@vuepress/theme-default/-/theme-default-1.5.3.tgz#98112065b3c987d41463eca5db91a47dce823e45"
|
||||
integrity sha512-LRldV8U4FRV26bKXtJFT1oe5lhYbfCxPRFnRXPgf/cLZC+mQd1abl9njCAP7fjmmS33ZgF1dFARGbpCsYWY1Gg==
|
||||
"@vuepress/theme-default@1.6.0":
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/@vuepress/theme-default/-/theme-default-1.6.0.tgz#870c4513a186ae233d2c818fb8bef753f35da972"
|
||||
integrity sha512-dV6awQzV+gQqxYK8oHY5A9Hwj34H23bA2khPjqqLDpgLMnw4tvxMfriwK5tuaAjgnHT+MZB1VmgsNdUA9T9HIQ==
|
||||
dependencies:
|
||||
"@vuepress/plugin-active-header-links" "1.5.3"
|
||||
"@vuepress/plugin-nprogress" "1.5.3"
|
||||
"@vuepress/plugin-search" "1.5.3"
|
||||
"@vuepress/plugin-active-header-links" "1.6.0"
|
||||
"@vuepress/plugin-nprogress" "1.6.0"
|
||||
"@vuepress/plugin-search" "1.6.0"
|
||||
docsearch.js "^2.5.2"
|
||||
lodash "^4.17.15"
|
||||
stylus "^0.54.5"
|
||||
stylus "^0.54.8"
|
||||
stylus-loader "^3.0.2"
|
||||
vuepress-plugin-container "^2.0.2"
|
||||
vuepress-plugin-smooth-scroll "^0.0.3"
|
||||
@@ -2327,11 +2311,6 @@ alphanum-sort@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
|
||||
integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=
|
||||
|
||||
amdefine@>=0.0.4:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
|
||||
integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=
|
||||
|
||||
ansi-align@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb"
|
||||
@@ -2584,7 +2563,7 @@ asynckit@^0.4.0:
|
||||
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
|
||||
integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
|
||||
|
||||
atob@^2.1.1:
|
||||
atob@^2.1.1, atob@^2.1.2:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
|
||||
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
|
||||
@@ -3630,7 +3609,7 @@ commondir@^1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
|
||||
integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
|
||||
|
||||
component-emitter@^1.2.0, component-emitter@^1.2.1:
|
||||
component-emitter@^1.2.1, component-emitter@^1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
|
||||
integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
|
||||
@@ -3757,7 +3736,7 @@ cookie@^0.4.1:
|
||||
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1"
|
||||
integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==
|
||||
|
||||
cookiejar@^2.1.0:
|
||||
cookiejar@^2.1.2:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c"
|
||||
integrity sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==
|
||||
@@ -3972,10 +3951,12 @@ css-loader@^2.1.1:
|
||||
postcss-value-parser "^3.3.0"
|
||||
schema-utils "^1.0.0"
|
||||
|
||||
css-parse@1.7.x:
|
||||
version "1.7.0"
|
||||
resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b"
|
||||
integrity sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=
|
||||
css-parse@~2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-2.0.0.tgz#a468ee667c16d81ccf05c58c38d2a97c780dbfd4"
|
||||
integrity sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=
|
||||
dependencies:
|
||||
css "^2.0.0"
|
||||
|
||||
css-select-base-adapter@^0.1.1:
|
||||
version "0.1.1"
|
||||
@@ -4033,6 +4014,16 @@ css-what@2.1, css-what@^2.1.2:
|
||||
resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2"
|
||||
integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==
|
||||
|
||||
css@^2.0.0:
|
||||
version "2.2.4"
|
||||
resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929"
|
||||
integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==
|
||||
dependencies:
|
||||
inherits "^2.0.3"
|
||||
source-map "^0.6.1"
|
||||
source-map-resolve "^0.5.2"
|
||||
urix "^0.1.0"
|
||||
|
||||
cssesc@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703"
|
||||
@@ -4182,23 +4173,16 @@ date-now@^0.1.4:
|
||||
resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
|
||||
integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=
|
||||
|
||||
dayjs@1.8.36, dayjs@^1.8.29:
|
||||
version "1.8.36"
|
||||
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.8.36.tgz#be36e248467afabf8f5a86bae0de0cdceecced50"
|
||||
integrity sha512-3VmRXEtw7RZKAf+4Tv1Ym9AGeo8r8+CjDi26x+7SYQil1UqtqdaokhzoEJohqlzt0m5kacJSDhJQkG/LWhpRBw==
|
||||
dayjs@1.9.1, dayjs@^1.8.29:
|
||||
version "1.9.1"
|
||||
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.9.1.tgz#201a755f7db5103ed6de63ba93a984141c754541"
|
||||
integrity sha512-01NCTBg8cuMJG1OQc6PR7T66+AFYiPwgDvdJmvJBn29NGzIG+DIFxPLNjHzwz3cpFIvG+NcwIjP9hSaPVoOaDg==
|
||||
|
||||
de-indent@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
|
||||
integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=
|
||||
|
||||
debug@*, debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
|
||||
integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
|
||||
dependencies:
|
||||
ms "^2.1.1"
|
||||
|
||||
debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9:
|
||||
version "2.6.9"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
|
||||
@@ -4206,7 +4190,14 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9:
|
||||
dependencies:
|
||||
ms "2.0.0"
|
||||
|
||||
debug@^3.1.0, debug@^3.2.5, debug@^3.2.6:
|
||||
debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
|
||||
integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
|
||||
dependencies:
|
||||
ms "^2.1.1"
|
||||
|
||||
debug@^3.2.5, debug@^3.2.6:
|
||||
version "3.2.6"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
|
||||
integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
|
||||
@@ -4416,11 +4407,6 @@ devtools-protocol@0.0.799653:
|
||||
resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.799653.tgz#86fc95ce5bf4fdf4b77a58047ba9d2301078f119"
|
||||
integrity sha512-t1CcaZbvm8pOlikqrsIM9GOa7Ipp07+4h/q9u0JXBWjPCjHdBl9KkddX87Vv9vBHoBGtwV79sYQNGnQM6iS5gg==
|
||||
|
||||
diacritics@^1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/diacritics/-/diacritics-1.3.0.tgz#3efa87323ebb863e6696cebb0082d48ff3d6f7a1"
|
||||
integrity sha1-PvqHMj67hj5mls67AILUj/PW96E=
|
||||
|
||||
diff-sequences@^26.3.0:
|
||||
version "26.3.0"
|
||||
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.3.0.tgz#62a59b1b29ab7fd27cef2a33ae52abe73042d0a2"
|
||||
@@ -4878,10 +4864,10 @@ escodegen@^1.14.1, escodegen@^1.8.1, escodegen@^1.9.1:
|
||||
optionalDependencies:
|
||||
source-map "~0.6.1"
|
||||
|
||||
eslint-config-prettier@6.11.0:
|
||||
version "6.11.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz#f6d2238c1290d01c859a8b5c1f7d352a0b0da8b1"
|
||||
integrity sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA==
|
||||
eslint-config-prettier@6.12.0:
|
||||
version "6.12.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.12.0.tgz#9eb2bccff727db1c52104f0b49e87ea46605a0d2"
|
||||
integrity sha512-9jWPlFlgNwRUYVoujvWTQ1aMO8o6648r+K7qU7K5Jmkbyqav1fuEZC0COYpGBxyiAJb65Ra9hrmFx19xRGwXWw==
|
||||
dependencies:
|
||||
get-stdin "^6.0.0"
|
||||
|
||||
@@ -4900,12 +4886,12 @@ eslint-scope@^4.0.0:
|
||||
esrecurse "^4.1.0"
|
||||
estraverse "^4.1.1"
|
||||
|
||||
eslint-scope@^5.1.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5"
|
||||
integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==
|
||||
eslint-scope@^5.1.1:
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
|
||||
integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
|
||||
dependencies:
|
||||
esrecurse "^4.1.0"
|
||||
esrecurse "^4.3.0"
|
||||
estraverse "^4.1.1"
|
||||
|
||||
eslint-utils@^2.1.0:
|
||||
@@ -4920,10 +4906,10 @@ eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:
|
||||
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
|
||||
integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
|
||||
|
||||
eslint@7.9.0:
|
||||
version "7.9.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.9.0.tgz#522aeccc5c3a19017cf0cb46ebfd660a79acf337"
|
||||
integrity sha512-V6QyhX21+uXp4T+3nrNfI3hQNBDa/P8ga7LoQOenwrlEFXrEnUEE+ok1dMtaS3b6rmLXhT1TkTIsG75HMLbknA==
|
||||
eslint@7.10.0:
|
||||
version "7.10.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.10.0.tgz#494edb3e4750fb791133ca379e786a8f648c72b9"
|
||||
integrity sha512-BDVffmqWl7JJXqCjAK6lWtcQThZB/aP1HXSH1JKwGwv0LQEdvpR7qzNrUT487RM39B5goWuboFad5ovMBmD8yA==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.0.0"
|
||||
"@eslint/eslintrc" "^0.1.3"
|
||||
@@ -4933,7 +4919,7 @@ eslint@7.9.0:
|
||||
debug "^4.0.1"
|
||||
doctrine "^3.0.0"
|
||||
enquirer "^2.3.5"
|
||||
eslint-scope "^5.1.0"
|
||||
eslint-scope "^5.1.1"
|
||||
eslint-utils "^2.1.0"
|
||||
eslint-visitor-keys "^1.3.0"
|
||||
espree "^7.3.0"
|
||||
@@ -4991,6 +4977,13 @@ esrecurse@^4.1.0:
|
||||
dependencies:
|
||||
estraverse "^4.1.0"
|
||||
|
||||
esrecurse@^4.3.0:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
|
||||
integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
|
||||
dependencies:
|
||||
estraverse "^5.2.0"
|
||||
|
||||
estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
|
||||
@@ -5001,6 +4994,11 @@ estraverse@^5.1.0:
|
||||
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642"
|
||||
integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==
|
||||
|
||||
estraverse@^5.2.0:
|
||||
version "5.2.0"
|
||||
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
|
||||
integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
|
||||
|
||||
esutils@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
|
||||
@@ -5275,6 +5273,11 @@ fast-safe-stringify@^2.0.4:
|
||||
resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.6.tgz#04b26106cc56681f51a044cfc0d76cf0008ac2c2"
|
||||
integrity sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg==
|
||||
|
||||
fast-safe-stringify@^2.0.7:
|
||||
version "2.0.7"
|
||||
resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743"
|
||||
integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==
|
||||
|
||||
fast-text-encoding@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.0.tgz#3e5ce8293409cfaa7177a71b9ca84e1b1e6f25ef"
|
||||
@@ -5448,7 +5451,7 @@ forever-agent@~0.6.1:
|
||||
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
|
||||
integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
|
||||
|
||||
form-data@^2.3.1, form-data@^2.5.0:
|
||||
form-data@^2.5.0:
|
||||
version "2.5.1"
|
||||
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4"
|
||||
integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==
|
||||
@@ -5480,10 +5483,10 @@ format@^0.2.0:
|
||||
resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b"
|
||||
integrity sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=
|
||||
|
||||
formidable@^1.2.0:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.2.1.tgz#70fb7ca0290ee6ff961090415f4b3df3d2082659"
|
||||
integrity sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==
|
||||
formidable@^1.2.2:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.2.2.tgz#bf69aea2972982675f00865342b982986f6b8dd9"
|
||||
integrity sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==
|
||||
|
||||
forwarded@~0.1.2:
|
||||
version "0.1.2"
|
||||
@@ -5701,18 +5704,6 @@ glob-to-regexp@^0.3.0:
|
||||
resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab"
|
||||
integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=
|
||||
|
||||
glob@7.0.x:
|
||||
version "7.0.6"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a"
|
||||
integrity sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=
|
||||
dependencies:
|
||||
fs.realpath "^1.0.0"
|
||||
inflight "^1.0.4"
|
||||
inherits "2"
|
||||
minimatch "^3.0.2"
|
||||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3:
|
||||
version "7.1.4"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
|
||||
@@ -5725,7 +5716,7 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3:
|
||||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
glob@^7.1.4:
|
||||
glob@^7.1.4, glob@^7.1.6:
|
||||
version "7.1.6"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
|
||||
integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
|
||||
@@ -5842,10 +5833,10 @@ googleapis-common@^4.4.0:
|
||||
url-template "^2.0.8"
|
||||
uuid "^8.0.0"
|
||||
|
||||
googleapis@59.0.0:
|
||||
version "59.0.0"
|
||||
resolved "https://registry.yarnpkg.com/googleapis/-/googleapis-59.0.0.tgz#aec5c6f5b0b347c9c6996d45fa8ad8176e585fae"
|
||||
integrity sha512-GV/E4KRN89a4GxSk7D7cwUfRYgcJHR05sOgm/WGdwc/u8dxNXG5lWmz9gF5ZwFGk2yKtVxL4VZNn4zBuZ6rmGg==
|
||||
googleapis@60.0.1:
|
||||
version "60.0.1"
|
||||
resolved "https://registry.yarnpkg.com/googleapis/-/googleapis-60.0.1.tgz#f0614cbf798e1308ef6e7dd6b7cbf3c464692975"
|
||||
integrity sha512-r/7pDeIMAm/FepbAl2iM+uRQURf2manjOaOVR0j7v2fDPU8QEme44z6N6qGroqJtne0JO5BM0FUz4LuskcwGeQ==
|
||||
dependencies:
|
||||
google-auth-library "^6.0.0"
|
||||
googleapis-common "^4.4.0"
|
||||
@@ -8272,7 +8263,7 @@ merge2@^1.2.3:
|
||||
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5"
|
||||
integrity sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==
|
||||
|
||||
methods@^1.1.1, methods@^1.1.2, methods@~1.1.2:
|
||||
methods@1.1.2, methods@^1.1.2, methods@~1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
|
||||
integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
|
||||
@@ -8329,7 +8320,7 @@ mime-types@^2.1.12, mime-types@^2.1.18, mime-types@~2.1.17, mime-types@~2.1.19,
|
||||
dependencies:
|
||||
mime-db "1.43.0"
|
||||
|
||||
mime@1.6.0, mime@^1.3.4, mime@^1.4.1:
|
||||
mime@1.6.0, mime@^1.3.4:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
|
||||
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
|
||||
@@ -8339,6 +8330,11 @@ mime@^2.0.3, mime@^2.2.0, mime@^2.4.2:
|
||||
resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5"
|
||||
integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==
|
||||
|
||||
mime@^2.4.6:
|
||||
version "2.4.6"
|
||||
resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1"
|
||||
integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==
|
||||
|
||||
mimic-fn@^2.0.0, mimic-fn@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
|
||||
@@ -8386,7 +8382,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
|
||||
integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
|
||||
|
||||
minimatch@^3.0.2, minimatch@^3.0.4:
|
||||
minimatch@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
|
||||
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
|
||||
@@ -8467,6 +8463,11 @@ mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
|
||||
dependencies:
|
||||
minimist "0.0.8"
|
||||
|
||||
mkdirp@~1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
|
||||
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
|
||||
|
||||
mockdate@3.0.2:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/mockdate/-/mockdate-3.0.2.tgz#a5a7bb5820da617747af424d7a4dcb22c6c03d79"
|
||||
@@ -8564,6 +8565,11 @@ nan@^2.12.1, nan@^2.14.0:
|
||||
resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c"
|
||||
integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==
|
||||
|
||||
nan@^2.14.1:
|
||||
version "2.14.1"
|
||||
resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01"
|
||||
integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==
|
||||
|
||||
nanomatch@^1.2.9:
|
||||
version "1.2.13"
|
||||
resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
|
||||
@@ -9022,6 +9028,14 @@ only@~0.0.2:
|
||||
resolved "https://registry.yarnpkg.com/only/-/only-0.0.2.tgz#2afde84d03e50b9a8edc444e30610a70295edfb4"
|
||||
integrity sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q=
|
||||
|
||||
opencc@1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/opencc/-/opencc-1.1.1.tgz#94776e515ef13b23e00065caa04a69e9529d460e"
|
||||
integrity sha512-t/4FIL43esdrUDfQejqHPhZyWdDVRfwMxsNBkA/2NjIEQv33mG80WHXcmEJ+KMd6T8bjbtx+EiJzPiybE8SPeg==
|
||||
dependencies:
|
||||
nan "^2.14.1"
|
||||
node-pre-gyp "^0.14.0"
|
||||
|
||||
opencollective-postinstall@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz#5657f1bede69b6e33a45939b061eb53d3c6c3a89"
|
||||
@@ -9903,10 +9917,10 @@ prettier@1.16.3:
|
||||
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.3.tgz#8c62168453badef702f34b45b6ee899574a6a65d"
|
||||
integrity sha512-kn/GU6SMRYPxUakNXhpP0EedT/KmaPzr0H5lIsDogrykbaxOpOfAFfk5XA7DZrJyMAv1wlMV3CPcZruGXVVUZw==
|
||||
|
||||
prettier@2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.1.tgz#d9485dd5e499daa6cb547023b87a6cf51bee37d6"
|
||||
integrity sha512-9bY+5ZWCfqj3ghYBLxApy2zf6m+NJo5GzmLTpr9FsApsfjriNnS2dahWReHMi7qNPhhHl9SYHJs2cHZLgexNIw==
|
||||
prettier@2.1.2:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5"
|
||||
integrity sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg==
|
||||
|
||||
pretty-bytes@^5.1.0:
|
||||
version "5.2.0"
|
||||
@@ -10088,16 +10102,15 @@ punycode@^2.1.0, punycode@^2.1.1:
|
||||
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
|
||||
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
|
||||
|
||||
puppeteer@5.3.0:
|
||||
version "5.3.0"
|
||||
resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-5.3.0.tgz#0abf83d0f2d1273baf2b56885a813f8052903e33"
|
||||
integrity sha512-GjqMk5GRro3TO0sw3QMsF1H7n+/jaK2OW45qMvqjYUyJ7y4oA//9auy969HHhTG3HZXaMxY/NWXF/NXlAFIvtw==
|
||||
puppeteer@5.3.1:
|
||||
version "5.3.1"
|
||||
resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-5.3.1.tgz#324e190d89f25ac33dba539f57b82a18553f8646"
|
||||
integrity sha512-YTM1RaBeYrj6n7IlRXRYLqJHF+GM7tasbvrNFx6w1S16G76NrPq7oYFKLDO+BQsXNtS8kW2GxWCXjIMPvfDyaQ==
|
||||
dependencies:
|
||||
debug "^4.1.0"
|
||||
devtools-protocol "0.0.799653"
|
||||
extract-zip "^2.0.0"
|
||||
https-proxy-agent "^4.0.0"
|
||||
mime "^2.0.3"
|
||||
pkg-dir "^4.2.0"
|
||||
progress "^2.0.1"
|
||||
proxy-from-env "^1.0.0"
|
||||
@@ -10111,7 +10124,7 @@ q@^1.1.2:
|
||||
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
|
||||
integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
|
||||
|
||||
qs@6.7.0, qs@^6.5.1:
|
||||
qs@6.7.0:
|
||||
version "6.7.0"
|
||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
|
||||
integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
|
||||
@@ -10121,15 +10134,20 @@ qs@^6.7.0:
|
||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.1.tgz#20082c65cb78223635ab1a9eaca8875a29bf8ec9"
|
||||
integrity sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==
|
||||
|
||||
qs@^6.9.4:
|
||||
version "6.9.4"
|
||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.4.tgz#9090b290d1f91728d3c22e54843ca44aea5ab687"
|
||||
integrity sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==
|
||||
|
||||
qs@~6.5.2:
|
||||
version "6.5.2"
|
||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
|
||||
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
|
||||
|
||||
query-string@6.13.2, query-string@^6.2.0:
|
||||
version "6.13.2"
|
||||
resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.13.2.tgz#3585aa9412c957cbd358fd5eaca7466f05586dda"
|
||||
integrity sha512-BMmDaUiLDFU1hlM38jTFcRt7HYiGP/zt1sRzrIWm5zpeEuO1rkbPS0ELI3uehoLuuhHDCS8u8lhFN3fEN4JzPQ==
|
||||
query-string@6.13.4, query-string@^6.2.0:
|
||||
version "6.13.4"
|
||||
resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.13.4.tgz#b35a9a3bd4955bce55f94feb0e819b3d0be6f66f"
|
||||
integrity sha512-E2NPIeJoBEJGQNy3ib1k/Z/OkDBUKIo8IV2ZVwbKfoa65IS9unqWWUlLcbfU70Da0qNoxUZZA8CfKUjKLE641Q==
|
||||
dependencies:
|
||||
decode-uri-component "^0.2.0"
|
||||
split-on-first "^1.0.0"
|
||||
@@ -10243,7 +10261,7 @@ read-pkg@^5.2.0:
|
||||
parse-json "^5.0.0"
|
||||
type-fest "^0.6.0"
|
||||
|
||||
"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@^2.3.7, readable-stream@~2.3.6:
|
||||
"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@^2.3.7, readable-stream@~2.3.6:
|
||||
version "2.3.7"
|
||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
|
||||
integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
|
||||
@@ -10256,7 +10274,7 @@ read-pkg@^5.2.0:
|
||||
string_decoder "~1.1.1"
|
||||
util-deprecate "~1.0.1"
|
||||
|
||||
readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0:
|
||||
readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0:
|
||||
version "3.6.0"
|
||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
|
||||
integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
|
||||
@@ -10750,7 +10768,7 @@ safe-regex@^1.1.0:
|
||||
dependencies:
|
||||
ret "~0.1.10"
|
||||
|
||||
"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
|
||||
"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@^2.1.2, safer-buffer@~2.1.0:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
||||
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||
@@ -10770,11 +10788,6 @@ sane@^4.0.3:
|
||||
minimist "^1.1.1"
|
||||
walker "~1.0.5"
|
||||
|
||||
sax@0.5.x:
|
||||
version "0.5.8"
|
||||
resolved "https://registry.yarnpkg.com/sax/-/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1"
|
||||
integrity sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=
|
||||
|
||||
sax@>=0.6.0, sax@^1.2.4, sax@~1.2.4:
|
||||
version "1.2.4"
|
||||
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
|
||||
@@ -11144,6 +11157,17 @@ source-map-resolve@^0.5.0:
|
||||
source-map-url "^0.4.0"
|
||||
urix "^0.1.0"
|
||||
|
||||
source-map-resolve@^0.5.2:
|
||||
version "0.5.3"
|
||||
resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a"
|
||||
integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==
|
||||
dependencies:
|
||||
atob "^2.1.2"
|
||||
decode-uri-component "^0.2.0"
|
||||
resolve-url "^0.2.1"
|
||||
source-map-url "^0.4.0"
|
||||
urix "^0.1.0"
|
||||
|
||||
source-map-support@^0.5.6, source-map-support@~0.5.10:
|
||||
version "0.5.12"
|
||||
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599"
|
||||
@@ -11157,13 +11181,6 @@ source-map-url@^0.4.0:
|
||||
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
|
||||
integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
|
||||
|
||||
source-map@0.1.x:
|
||||
version "0.1.43"
|
||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346"
|
||||
integrity sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=
|
||||
dependencies:
|
||||
amdefine ">=0.0.4"
|
||||
|
||||
source-map@0.5.6:
|
||||
version "0.5.6"
|
||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
|
||||
@@ -11565,41 +11582,44 @@ stylus-loader@^3.0.2:
|
||||
lodash.clonedeep "^4.5.0"
|
||||
when "~3.6.x"
|
||||
|
||||
stylus@^0.54.5:
|
||||
version "0.54.5"
|
||||
resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79"
|
||||
integrity sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=
|
||||
stylus@^0.54.8:
|
||||
version "0.54.8"
|
||||
resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.8.tgz#3da3e65966bc567a7b044bfe0eece653e099d147"
|
||||
integrity sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==
|
||||
dependencies:
|
||||
css-parse "1.7.x"
|
||||
debug "*"
|
||||
glob "7.0.x"
|
||||
mkdirp "0.5.x"
|
||||
sax "0.5.x"
|
||||
source-map "0.1.x"
|
||||
css-parse "~2.0.0"
|
||||
debug "~3.1.0"
|
||||
glob "^7.1.6"
|
||||
mkdirp "~1.0.4"
|
||||
safer-buffer "^2.1.2"
|
||||
sax "~1.2.4"
|
||||
semver "^6.3.0"
|
||||
source-map "^0.7.3"
|
||||
|
||||
superagent@^3.8.3:
|
||||
version "3.8.3"
|
||||
resolved "https://registry.yarnpkg.com/superagent/-/superagent-3.8.3.tgz#460ea0dbdb7d5b11bc4f78deba565f86a178e128"
|
||||
integrity sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==
|
||||
dependencies:
|
||||
component-emitter "^1.2.0"
|
||||
cookiejar "^2.1.0"
|
||||
debug "^3.1.0"
|
||||
extend "^3.0.0"
|
||||
form-data "^2.3.1"
|
||||
formidable "^1.2.0"
|
||||
methods "^1.1.1"
|
||||
mime "^1.4.1"
|
||||
qs "^6.5.1"
|
||||
readable-stream "^2.3.5"
|
||||
|
||||
supertest@4.0.2:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/supertest/-/supertest-4.0.2.tgz#c2234dbdd6dc79b6f15b99c8d6577b90e4ce3f36"
|
||||
integrity sha512-1BAbvrOZsGA3YTCWqbmh14L0YEq0EGICX/nBnfkfVJn7SrxQV1I3pMYjSzG9y/7ZU2V9dWqyqk2POwxlb09duQ==
|
||||
superagent@6.1.0:
|
||||
version "6.1.0"
|
||||
resolved "https://registry.yarnpkg.com/superagent/-/superagent-6.1.0.tgz#09f08807bc41108ef164cfb4be293cebd480f4a6"
|
||||
integrity sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg==
|
||||
dependencies:
|
||||
component-emitter "^1.3.0"
|
||||
cookiejar "^2.1.2"
|
||||
debug "^4.1.1"
|
||||
fast-safe-stringify "^2.0.7"
|
||||
form-data "^3.0.0"
|
||||
formidable "^1.2.2"
|
||||
methods "^1.1.2"
|
||||
superagent "^3.8.3"
|
||||
mime "^2.4.6"
|
||||
qs "^6.9.4"
|
||||
readable-stream "^3.6.0"
|
||||
semver "^7.3.2"
|
||||
|
||||
supertest@5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/supertest/-/supertest-5.0.0.tgz#771aedfeb0a95466cc5d100d5d11288736fd25da"
|
||||
integrity sha512-2JAWpPrUOZF4hHH5ZTCN2xjKXvJS3AEwPNXl0HUseHsfcXFvMy9kcsufIHCNAmQ5hlGCvgeAqaR5PBEouN3hlQ==
|
||||
dependencies:
|
||||
methods "1.1.2"
|
||||
superagent "6.1.0"
|
||||
|
||||
supports-color@^2.0.0:
|
||||
version "2.0.0"
|
||||
@@ -12599,13 +12619,13 @@ vuepress-plugin-smooth-scroll@^0.0.3:
|
||||
dependencies:
|
||||
smoothscroll-polyfill "^0.4.3"
|
||||
|
||||
vuepress@1.5.3:
|
||||
version "1.5.3"
|
||||
resolved "https://registry.yarnpkg.com/vuepress/-/vuepress-1.5.3.tgz#663a1041240a0c182f58316ba567a22b8df932a4"
|
||||
integrity sha512-H9bGu6ygrZmq8GxMtDD8xNX1l9zvoyjsOA9oW+Lcttkfyt/HT/WBrpIC08kNPpRE0ZY/U4Jib1KgBfjbFZTffw==
|
||||
vuepress@1.6.0:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/vuepress/-/vuepress-1.6.0.tgz#00e6f1649d992f4cfef80a2e3f7af8683acc6ad9"
|
||||
integrity sha512-5hxhkgMROjo6ja59oyrHeiOv6xpq1sy86ejaWgevMWiMbBIZU+9grwrd+PSL6q4rwfsi/a8NqYzcBXV/ZSXWZA==
|
||||
dependencies:
|
||||
"@vuepress/core" "1.5.3"
|
||||
"@vuepress/theme-default" "1.5.3"
|
||||
"@vuepress/core" "1.6.0"
|
||||
"@vuepress/theme-default" "1.6.0"
|
||||
cac "^6.5.6"
|
||||
envinfo "^7.2.0"
|
||||
opencollective-postinstall "^2.0.2"
|
||||
|
||||
Reference in New Issue
Block a user