rsshub 1.0.0-master.f6cb490 → 1.0.0-master.f6f0273
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/api/index.ts +1 -6
- package/lib/routes/2048/index.ts +24 -23
- package/lib/routes/anthropic/news.ts +27 -13
- package/lib/routes/asianfanfics/namespace.ts +7 -0
- package/lib/routes/asianfanfics/tag.ts +89 -0
- package/lib/routes/asianfanfics/text-search.ts +68 -0
- package/lib/routes/blockworks/index.ts +128 -0
- package/lib/routes/blockworks/namespace.ts +7 -0
- package/lib/routes/cmu/andypavlo/blog.ts +55 -0
- package/lib/routes/cmu/namespace.ts +7 -0
- package/lib/routes/coindesk/{index.ts → consensus-magazine.ts} +17 -21
- package/lib/routes/coindesk/namespace.ts +2 -1
- package/lib/routes/coindesk/news.ts +47 -0
- package/lib/routes/coindesk/utils.ts +26 -0
- package/lib/routes/cointelegraph/index.ts +106 -0
- package/lib/routes/cointelegraph/namespace.ts +7 -0
- package/lib/routes/collabo-cafe/category.ts +37 -0
- package/lib/routes/collabo-cafe/index.ts +35 -0
- package/lib/routes/collabo-cafe/namespace.ts +9 -0
- package/lib/routes/collabo-cafe/parser.ts +29 -0
- package/lib/routes/collabo-cafe/tag.ts +37 -0
- package/lib/routes/cryptoslate/index.ts +98 -0
- package/lib/routes/cryptoslate/namespace.ts +7 -0
- package/lib/routes/decrypt/index.ts +115 -0
- package/lib/routes/decrypt/namespace.ts +7 -0
- package/lib/routes/discuz/discuz.ts +7 -9
- package/lib/routes/fangchan/list.ts +224 -0
- package/lib/routes/fangchan/namespace.ts +9 -0
- package/lib/routes/fangchan/templates/description.art +7 -0
- package/lib/routes/foreignaffairs/namespace.ts +7 -0
- package/lib/routes/foreignaffairs/rss.ts +55 -0
- package/lib/routes/forklog/index.ts +72 -0
- package/lib/routes/forklog/namespace.ts +7 -0
- package/lib/routes/gcores/categories.ts +129 -0
- package/lib/routes/gcores/collections.ts +129 -0
- package/lib/routes/gcores/topics.ts +63 -0
- package/lib/routes/gov/moa/gjs.ts +210 -0
- package/lib/routes/gov/tianjin/tjftz.ts +53 -0
- package/lib/routes/gov/tianjin/tjrcgzw.ts +51 -0
- package/lib/routes/grainoil/category.ts +207 -0
- package/lib/routes/grainoil/namespace.ts +9 -0
- package/lib/routes/huxiu/util.ts +11 -9
- package/lib/routes/ifanr/category.ts +7 -2
- package/lib/routes/ifanr/digest.ts +1 -1
- package/lib/routes/ifanr/index.ts +1 -1
- package/lib/routes/instructables/projects.ts +20 -15
- package/lib/routes/juejin/collections.ts +1 -1
- package/lib/routes/komiic/comic.ts +88 -0
- package/lib/routes/komiic/namespace.ts +7 -0
- package/lib/routes/leagueoflegends/namespace.ts +8 -0
- package/lib/routes/leagueoflegends/patch-notes.ts +76 -0
- package/lib/routes/likeshop/index.ts +43 -0
- package/lib/routes/likeshop/namespace.ts +7 -0
- package/lib/routes/ltaaa/article.ts +180 -0
- package/lib/routes/ltaaa/namespace.ts +9 -0
- package/lib/routes/ltaaa/templates/description.art +7 -0
- package/lib/routes/mashiro/index.ts +1 -0
- package/lib/routes/nhentai/util.ts +4 -1
- package/lib/routes/pinterest/user.ts +9 -0
- package/lib/routes/sohu/mp.ts +3 -2
- package/lib/routes/spotify/show.ts +1 -1
- package/lib/routes/stcn/index.ts +241 -136
- package/lib/routes/stcn/kx.ts +144 -0
- package/lib/routes/swjtu/namespace.ts +1 -1
- package/lib/routes/swjtu/{scai/bks.ts → scai.ts} +34 -20
- package/lib/routes/swjtu/sports.ts +77 -0
- package/lib/routes/theblock/index.ts +142 -0
- package/lib/routes/theblock/namespace.ts +7 -0
- package/lib/routes/theverge/index.ts +73 -62
- package/lib/routes/theverge/templates/header.art +19 -0
- package/lib/routes/threads/index.ts +73 -54
- package/lib/routes/threads/utils.ts +60 -78
- package/lib/routes/tmtpost/column.ts +298 -0
- package/lib/routes/tmtpost/new.ts +4 -199
- package/lib/routes/tmtpost/util.ts +207 -0
- package/lib/routes/toranoana/namespace.ts +7 -0
- package/lib/routes/toranoana/news.ts +110 -0
- package/lib/routes/wainao/templates/description.art +9 -0
- package/lib/routes/wainao/topics.ts +214 -0
- package/lib/routes/xiaoyuzhou/podcast.ts +27 -27
- package/lib/routes/xjtu/yz.ts +74 -0
- package/lib/routes/youmemark/index.ts +6 -6
- package/lib/routes/zaobao/util.ts +11 -3
- package/lib/routes/zhihu/answers.ts +26 -54
- package/package.json +36 -35
- package/lib/routes/gcores/category.ts +0 -171
- package/lib/routes/gcores/collection.ts +0 -161
- package/lib/routes-deprecated/ltaaa/index.js +0 -69
|
@@ -1,97 +1,91 @@
|
|
|
1
|
-
import ofetch from '@/utils/ofetch';
|
|
2
1
|
import { load } from 'cheerio';
|
|
3
2
|
import dayjs from 'dayjs';
|
|
4
3
|
import cache from '@/utils/cache';
|
|
5
|
-
import { destr } from 'destr';
|
|
6
4
|
import NotFoundError from '@/errors/types/not-found';
|
|
5
|
+
import ofetch from '@/utils/ofetch';
|
|
6
|
+
import { JSDOM } from 'jsdom';
|
|
7
|
+
import { JSONPath } from 'jsonpath-plus';
|
|
7
8
|
|
|
8
9
|
const profileUrl = (user: string) => `https://www.threads.net/@${user}`;
|
|
9
10
|
const threadUrl = (code: string) => `https://www.threads.net/t/${code}`;
|
|
10
|
-
const instagramUrl = (user: string) => `https://i.instagram.com/api/v1/users/web_profile_info/?username=${user}`;
|
|
11
11
|
|
|
12
|
-
const
|
|
13
|
-
// const PROFILE_QUERY = 23_996_318_473_300_828; // no longer works
|
|
14
|
-
const THREADS_QUERY = 6_232_751_443_445_612;
|
|
15
|
-
const REPLIES_QUERY = 6_307_072_669_391_286;
|
|
16
|
-
const USER_AGENT = 'Barcelona 289.0.0.77.109 Android';
|
|
17
|
-
const appId = '238260118697367';
|
|
18
|
-
const asbdId = '129477';
|
|
12
|
+
const USER_AGENT = 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1';
|
|
19
13
|
|
|
20
14
|
const extractTokens = async (user): Promise<{ lsd: string }> => {
|
|
21
15
|
const response = await ofetch(profileUrl(user), {
|
|
22
16
|
headers: {
|
|
23
17
|
'User-Agent': USER_AGENT,
|
|
24
|
-
'
|
|
18
|
+
Accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
|
|
19
|
+
'Accept-Encoding': 'gzip, br',
|
|
20
|
+
'Accept-Language': 'zh-CN,zh;q=0.9',
|
|
21
|
+
'Cache-Control': 'no-cache',
|
|
22
|
+
Pragma: 'no-cache',
|
|
23
|
+
'Sec-Fetch-Dest': 'document',
|
|
24
|
+
'Sec-Fetch-Mode': 'navigate',
|
|
25
|
+
'Sec-Fetch-Site': 'none',
|
|
26
|
+
'Sec-Fetch-User': '?1',
|
|
27
|
+
'Upgrade-Insecure-Requests': '1',
|
|
25
28
|
},
|
|
26
29
|
});
|
|
27
|
-
const $ = load(response);
|
|
28
30
|
|
|
31
|
+
const $ = load(response);
|
|
29
32
|
const data = $('script:contains("LSD"):first').text();
|
|
30
|
-
|
|
31
33
|
const lsd = data.match(/"LSD",\[],{"token":"([\w@-]+)"},/)?.[1];
|
|
34
|
+
|
|
32
35
|
if (!lsd) {
|
|
33
36
|
throw new NotFoundError('LSD token not found');
|
|
34
37
|
}
|
|
35
38
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
const ret = { lsd };
|
|
39
|
-
return ret;
|
|
39
|
+
return { lsd };
|
|
40
40
|
};
|
|
41
41
|
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
__a: '1',
|
|
60
|
-
__comet_req: '29',
|
|
61
|
-
lsd,
|
|
62
|
-
};
|
|
63
|
-
const response = await ofetch('https://www.threads.net/ajax/bulk-route-definitions/', {
|
|
64
|
-
method: 'POST',
|
|
65
|
-
headers: {
|
|
66
|
-
...makeHeader(user, lsd),
|
|
67
|
-
'content-type': 'application/x-www-form-urlencoded',
|
|
68
|
-
'X-ASBD-ID': asbdId,
|
|
69
|
-
},
|
|
70
|
-
body: new URLSearchParams(payload).toString(),
|
|
71
|
-
parseResponse: (txt) => destr(txt.slice(9)), // remove "for (;;);"
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
let userId = response.payload.payloads[pathName].result.exports.rootView.props.user_id;
|
|
75
|
-
|
|
76
|
-
if (!userId) {
|
|
77
|
-
const fallbackResponse = await ofetch(instagramUrl(user), {
|
|
78
|
-
headers: makeHeader(user, lsd),
|
|
42
|
+
const getUserId = (user: string): Promise<string> =>
|
|
43
|
+
cache
|
|
44
|
+
.tryGet(`threads:userId:${user}`, async () => {
|
|
45
|
+
const response = await ofetch(profileUrl(user), {
|
|
46
|
+
headers: {
|
|
47
|
+
'User-Agent': USER_AGENT,
|
|
48
|
+
Accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
|
|
49
|
+
'Accept-Encoding': 'gzip, br',
|
|
50
|
+
'Accept-Language': 'zh-CN,zh;q=0.9',
|
|
51
|
+
'Cache-Control': 'no-cache',
|
|
52
|
+
Pragma: 'no-cache',
|
|
53
|
+
'Sec-Fetch-Dest': 'document',
|
|
54
|
+
'Sec-Fetch-Mode': 'navigate',
|
|
55
|
+
'Sec-Fetch-Site': 'none',
|
|
56
|
+
'Sec-Fetch-User': '?1',
|
|
57
|
+
'Upgrade-Insecure-Requests': '1',
|
|
58
|
+
},
|
|
79
59
|
});
|
|
80
60
|
|
|
81
|
-
|
|
82
|
-
|
|
61
|
+
const dom = new JSDOM(response);
|
|
62
|
+
|
|
63
|
+
for (const el of dom.window.document.querySelectorAll('script[data-sjs]')) {
|
|
64
|
+
try {
|
|
65
|
+
const data = JSONPath({
|
|
66
|
+
path: '$..user_id',
|
|
67
|
+
json: JSON.parse(el.textContent || ''),
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
if (data?.[0]) {
|
|
71
|
+
return data[0];
|
|
72
|
+
}
|
|
73
|
+
} catch {
|
|
74
|
+
// Skip invalid JSON
|
|
75
|
+
}
|
|
83
76
|
}
|
|
84
77
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
78
|
+
throw new NotFoundError('User ID not found');
|
|
79
|
+
})
|
|
80
|
+
.then((result): string => {
|
|
81
|
+
if (!result || typeof result !== 'string') {
|
|
82
|
+
throw new TypeError('Invalid user ID type');
|
|
88
83
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
return userId;
|
|
92
|
-
});
|
|
84
|
+
return result;
|
|
85
|
+
});
|
|
93
86
|
|
|
94
87
|
const hasMedia = (post) => post.image_versions2 || post.carousel_media || post.video_versions;
|
|
88
|
+
|
|
95
89
|
const buildMedia = (post) => {
|
|
96
90
|
let html = '';
|
|
97
91
|
|
|
@@ -99,25 +93,13 @@ const buildMedia = (post) => {
|
|
|
99
93
|
for (const media of post.carousel_media) {
|
|
100
94
|
const firstImage = media.image_versions2?.candidates[0];
|
|
101
95
|
const firstVideo = media.video_versions?.[0];
|
|
102
|
-
|
|
103
|
-
html += `<video controls autoplay loop poster="${firstImage.url}">`;
|
|
104
|
-
html += `<source src="${firstVideo.url}"/>`;
|
|
105
|
-
html += '</video>';
|
|
106
|
-
} else {
|
|
107
|
-
html += `<img src="${firstImage.url}"/>`;
|
|
108
|
-
}
|
|
96
|
+
html += firstVideo ? `<video controls autoplay loop poster="${firstImage.url}"><source src="${firstVideo.url}"/></video>` : `<img src="${firstImage.url}"/>`;
|
|
109
97
|
}
|
|
110
98
|
} else {
|
|
111
99
|
const mainImage = post.image_versions2?.candidates?.[0];
|
|
112
100
|
const mainVideo = post.video_versions?.[0];
|
|
113
101
|
if (mainImage) {
|
|
114
|
-
|
|
115
|
-
html += `<video controls autoplay loop poster="${mainImage.url}">`;
|
|
116
|
-
html += `<source src="${mainVideo.url}"/>`;
|
|
117
|
-
html += '</video>';
|
|
118
|
-
} else {
|
|
119
|
-
html += `<img src="${mainImage.url}"/>`;
|
|
120
|
-
}
|
|
102
|
+
html += mainVideo ? `<video controls autoplay loop poster="${mainImage.url}"><source src="${mainVideo.url}"/></video>` : `<img src="${mainImage.url}"/>`;
|
|
121
103
|
}
|
|
122
104
|
}
|
|
123
105
|
|
|
@@ -181,4 +163,4 @@ const buildContent = (item, options) => {
|
|
|
181
163
|
return { title, description };
|
|
182
164
|
};
|
|
183
165
|
|
|
184
|
-
export {
|
|
166
|
+
export { profileUrl, threadUrl, extractTokens, getUserId, buildContent };
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
import { type Data, type Route, ViewType } from '@/types';
|
|
2
|
+
|
|
3
|
+
import { type Context } from 'hono';
|
|
4
|
+
|
|
5
|
+
import { baseUrl, apiBaseUrl, processItems } from './util';
|
|
6
|
+
|
|
7
|
+
export const handler = async (ctx: Context): Promise<Data> => {
|
|
8
|
+
const { id } = ctx.req.param();
|
|
9
|
+
const limit: number = Number.parseInt(ctx.req.query('limit') ?? '30', 10);
|
|
10
|
+
|
|
11
|
+
const targetUrl: string = new URL(`column/${id}`, baseUrl).href;
|
|
12
|
+
const listApiUrl: string = new URL('v1/categories/multi_content/list', apiBaseUrl).href;
|
|
13
|
+
|
|
14
|
+
const query = {
|
|
15
|
+
subtype: 'post',
|
|
16
|
+
category_guid: id,
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
return await processItems(limit, query, listApiUrl, targetUrl);
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export const route: Route = {
|
|
23
|
+
path: '/column/:id',
|
|
24
|
+
name: '最新',
|
|
25
|
+
url: 'www.tmtpost.com',
|
|
26
|
+
maintainers: ['nczitzk'],
|
|
27
|
+
handler,
|
|
28
|
+
example: '/tmtpost/column/6916385',
|
|
29
|
+
parameters: {
|
|
30
|
+
id: {
|
|
31
|
+
description: '专栏 id,可在对应专栏页 URL 中找到',
|
|
32
|
+
options: [
|
|
33
|
+
{
|
|
34
|
+
label: 'AGI',
|
|
35
|
+
value: '6916385',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
label: '出海',
|
|
39
|
+
value: '6998081',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
label: '创新场景',
|
|
43
|
+
value: '3882035',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
label: '钛度号',
|
|
47
|
+
value: '6100587',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
label: '深度',
|
|
51
|
+
value: '3189960',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
label: '焦点',
|
|
55
|
+
value: '6043895',
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
label: '创投',
|
|
59
|
+
value: '5994956',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
label: '汽车',
|
|
63
|
+
value: '2573550',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
label: '3C',
|
|
67
|
+
value: '3615534',
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
label: '消费',
|
|
71
|
+
value: '3882530',
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
label: '大健康',
|
|
75
|
+
value: '3882507',
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
label: '金融',
|
|
79
|
+
value: '3882486',
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
label: '钛智宏观',
|
|
83
|
+
value: '4277188',
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
label: '产业研究',
|
|
87
|
+
value: '5506730',
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
label: '地产',
|
|
91
|
+
value: '3882499',
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
label: '大公司',
|
|
95
|
+
value: '2446153',
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
label: 'IPO',
|
|
99
|
+
value: '6043750',
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
label: '钛度图闻',
|
|
103
|
+
value: '5750087',
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
label: '城视',
|
|
107
|
+
value: '6998636',
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
label: '创业家',
|
|
111
|
+
value: '4273329',
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
label: '人文',
|
|
115
|
+
value: '6252390',
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
label: '新职业研究所',
|
|
119
|
+
value: '5750104',
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
label: '科普',
|
|
123
|
+
value: '5714992',
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
label: '文娱',
|
|
127
|
+
value: '2446157',
|
|
128
|
+
},
|
|
129
|
+
],
|
|
130
|
+
},
|
|
131
|
+
},
|
|
132
|
+
description: `:::tip
|
|
133
|
+
若订阅 [AGI](https://www.tmtpost.com/column/6916385),网址为 \`https://www.tmtpost.com/column/6916385\`,请截取 \`https://www.tmtpost.com/column\` 到末尾的部分 \`6916385\` 作为 \`id\` 参数填入,此时目标路由为 [\`/tmtpost/column/6916385\`](https://rsshub.app/tmtpost/column/6916385)。
|
|
134
|
+
:::
|
|
135
|
+
|
|
136
|
+
<details>
|
|
137
|
+
<summary>更多分类</summary>
|
|
138
|
+
|
|
139
|
+
| [AGI](https://www.tmtpost.com/column/6916385) | [出海](https://www.tmtpost.com/column/6998081) | [创新场景](https://www.tmtpost.com/column/3882035) | [钛度号](https://www.tmtpost.com/column/6100587) | [深度](https://www.tmtpost.com/column/3189960) |
|
|
140
|
+
| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- |
|
|
141
|
+
| [6916385](https://rsshub.app/tmtpost/column/6916385) | [6998081](https://rsshub.app/tmtpost/column/6998081) | [3882035](https://rsshub.app/tmtpost/column/3882035) | [6100587](https://rsshub.app/tmtpost/column/6100587) | [3189960](https://rsshub.app/tmtpost/column/3189960) |
|
|
142
|
+
|
|
143
|
+
| [焦点](https://www.tmtpost.com/column/6043895) | [创投](https://www.tmtpost.com/column/5994956) | [汽车](https://www.tmtpost.com/column/2573550) | [3C](https://www.tmtpost.com/column/3615534) | [消费](https://www.tmtpost.com/column/3882530) |
|
|
144
|
+
| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- |
|
|
145
|
+
| [6043895](https://rsshub.app/tmtpost/column/6043895) | [5994956](https://rsshub.app/tmtpost/column/5994956) | [2573550](https://rsshub.app/tmtpost/column/2573550) | [3615534](https://rsshub.app/tmtpost/column/3615534) | [3882530](https://rsshub.app/tmtpost/column/3882530) |
|
|
146
|
+
|
|
147
|
+
| [大健康](https://www.tmtpost.com/column/3882507) | [金融](https://www.tmtpost.com/column/3882486) | [钛智宏观](https://www.tmtpost.com/column/4277188) | [产业研究](https://www.tmtpost.com/column/5506730) | [地产](https://www.tmtpost.com/column/3882499) |
|
|
148
|
+
| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- |
|
|
149
|
+
| [3882507](https://rsshub.app/tmtpost/column/3882507) | [3882486](https://rsshub.app/tmtpost/column/3882486) | [4277188](https://rsshub.app/tmtpost/column/4277188) | [5506730](https://rsshub.app/tmtpost/column/5506730) | [3882499](https://rsshub.app/tmtpost/column/3882499) |
|
|
150
|
+
|
|
151
|
+
| [大公司](https://www.tmtpost.com/column/2446153) | [IPO](https://www.tmtpost.com/column/6043750) | [钛度图闻](https://www.tmtpost.com/column/5750087) | [城视](https://www.tmtpost.com/column/6998636) | [创业家](https://www.tmtpost.com/column/4273329) |
|
|
152
|
+
| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- |
|
|
153
|
+
| [2446153](https://rsshub.app/tmtpost/column/2446153) | [6043750](https://rsshub.app/tmtpost/column/6043750) | [5750087](https://rsshub.app/tmtpost/column/5750087) | [6998636](https://rsshub.app/tmtpost/column/6998636) | [4273329](https://rsshub.app/tmtpost/column/4273329) |
|
|
154
|
+
|
|
155
|
+
| [人文](https://www.tmtpost.com/column/6252390) | [新职业研究所](https://www.tmtpost.com/column/5750104) | [科普](https://www.tmtpost.com/column/5714992) | [文娱](https://www.tmtpost.com/column/2446157) |
|
|
156
|
+
| ---------------------------------------------------- | ------------------------------------------------------ | ---------------------------------------------------- | ---------------------------------------------------- |
|
|
157
|
+
| [6252390](https://rsshub.app/tmtpost/column/6252390) | [5750104](https://rsshub.app/tmtpost/column/5750104) | [5714992](https://rsshub.app/tmtpost/column/5714992) | [2446157](https://rsshub.app/tmtpost/column/2446157) |
|
|
158
|
+
|
|
159
|
+
</details>
|
|
160
|
+
`,
|
|
161
|
+
categories: ['new-media'],
|
|
162
|
+
features: {
|
|
163
|
+
requireConfig: false,
|
|
164
|
+
requirePuppeteer: false,
|
|
165
|
+
antiCrawler: false,
|
|
166
|
+
supportRadar: true,
|
|
167
|
+
supportBT: false,
|
|
168
|
+
supportPodcast: false,
|
|
169
|
+
supportScihub: false,
|
|
170
|
+
},
|
|
171
|
+
radar: [
|
|
172
|
+
{
|
|
173
|
+
source: ['www.tmtpost.com/column/:id'],
|
|
174
|
+
target: '/column/:id',
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
title: 'AGI',
|
|
178
|
+
source: ['www.tmtpost.com/column/6916385'],
|
|
179
|
+
target: '/column/6916385',
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
title: '出海',
|
|
183
|
+
source: ['www.tmtpost.com/column/6998081'],
|
|
184
|
+
target: '/column/6998081',
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
title: '创新场景',
|
|
188
|
+
source: ['www.tmtpost.com/column/3882035'],
|
|
189
|
+
target: '/column/3882035',
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
title: '钛度号',
|
|
193
|
+
source: ['www.tmtpost.com/column/6100587'],
|
|
194
|
+
target: '/column/6100587',
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
title: '深度',
|
|
198
|
+
source: ['www.tmtpost.com/column/3189960'],
|
|
199
|
+
target: '/column/3189960',
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
title: '焦点',
|
|
203
|
+
source: ['www.tmtpost.com/column/6043895'],
|
|
204
|
+
target: '/column/6043895',
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
title: '创投',
|
|
208
|
+
source: ['www.tmtpost.com/column/5994956'],
|
|
209
|
+
target: '/column/5994956',
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
title: '汽车',
|
|
213
|
+
source: ['www.tmtpost.com/column/2573550'],
|
|
214
|
+
target: '/column/2573550',
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
title: '3C',
|
|
218
|
+
source: ['www.tmtpost.com/column/3615534'],
|
|
219
|
+
target: '/column/3615534',
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
title: '消费',
|
|
223
|
+
source: ['www.tmtpost.com/column/3882530'],
|
|
224
|
+
target: '/column/3882530',
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
title: '大健康',
|
|
228
|
+
source: ['www.tmtpost.com/column/3882507'],
|
|
229
|
+
target: '/column/3882507',
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
title: '金融',
|
|
233
|
+
source: ['www.tmtpost.com/column/3882486'],
|
|
234
|
+
target: '/column/3882486',
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
title: '钛智宏观',
|
|
238
|
+
source: ['www.tmtpost.com/column/4277188'],
|
|
239
|
+
target: '/column/4277188',
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
title: '产业研究',
|
|
243
|
+
source: ['www.tmtpost.com/column/5506730'],
|
|
244
|
+
target: '/column/5506730',
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
title: '地产',
|
|
248
|
+
source: ['www.tmtpost.com/column/3882499'],
|
|
249
|
+
target: '/column/3882499',
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
title: '大公司',
|
|
253
|
+
source: ['www.tmtpost.com/column/2446153'],
|
|
254
|
+
target: '/column/2446153',
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
title: 'IPO',
|
|
258
|
+
source: ['www.tmtpost.com/column/6043750'],
|
|
259
|
+
target: '/column/6043750',
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
title: '钛度图闻',
|
|
263
|
+
source: ['www.tmtpost.com/column/5750087'],
|
|
264
|
+
target: '/column/5750087',
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
title: '城视',
|
|
268
|
+
source: ['www.tmtpost.com/column/6998636'],
|
|
269
|
+
target: '/column/6998636',
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
title: '创业家',
|
|
273
|
+
source: ['www.tmtpost.com/column/4273329'],
|
|
274
|
+
target: '/column/4273329',
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
title: '人文',
|
|
278
|
+
source: ['www.tmtpost.com/column/6252390'],
|
|
279
|
+
target: '/column/6252390',
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
title: '新职业研究所',
|
|
283
|
+
source: ['www.tmtpost.com/column/5750104'],
|
|
284
|
+
target: '/column/5750104',
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
title: '科普',
|
|
288
|
+
source: ['www.tmtpost.com/column/5714992'],
|
|
289
|
+
target: '/column/5714992',
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
title: '文娱',
|
|
293
|
+
source: ['www.tmtpost.com/column/2446157'],
|
|
294
|
+
target: '/column/2446157',
|
|
295
|
+
},
|
|
296
|
+
],
|
|
297
|
+
view: ViewType.Articles,
|
|
298
|
+
};
|