所有信息源
Wikipedia On This Day
其他 v1.0.0Historical events that happened on today's date from Wikipedia
@codytseng #wikipedia #history #today
配置项
| 名称 | 键 | 类型 | 必填 | 默认值 | 描述 |
|---|---|---|---|---|---|
| Language | LANGUAGE | select | 否 | en | Wikipedia language edition enzhjadefres |
源代码
version: 1.0.0
name: Wikipedia On This Day
description: Historical events that happened on today's date from Wikipedia
author: codytseng
author_url: https://github.com/codytseng
category: Other
tags:
- wikipedia
- history
- today
config:
- key: LANGUAGE
name: Language
type: select
required: false
default: en
description: Wikipedia language edition
options:
- en
- zh
- ja
- de
- fr
- es version: 1.0.0
name: Wikipedia On This Day
description: Historical events that happened on today's date from Wikipedia
author: codytseng
author_url: https://github.com/codytseng
category: Other
tags:
- wikipedia
- history
- today
config:
- key: LANGUAGE
name: Language
type: select
required: false
default: en
description: Wikipedia language edition
options:
- en
- zh
- ja
- de
- fr
- es import type { GlancewayAPI, SourceMethods } from "../../types";
interface OnThisDayEvent {
text: string;
year: number;
pages?: {
title: string;
extract?: string;
content_urls?: {
desktop?: { page?: string };
};
}[];
}
interface OnThisDayResponse {
selected: OnThisDayEvent[];
events: OnThisDayEvent[];
}
export default (api: GlancewayAPI): SourceMethods => {
const language = api.config.get("LANGUAGE") || "en";
return {
async refresh() {
const now = new Date();
const mm = String(now.getMonth() + 1).padStart(2, "0");
const dd = String(now.getDate()).padStart(2, "0");
const url = `https://api.wikimedia.org/feed/v1/wikipedia/${language}/onthisday/all/${mm}/${dd}`;
const response = await api.fetch<OnThisDayResponse>(url);
if (response.ok && response.json) {
const events = [
...(response.json.selected || []),
...(response.json.events || []),
];
const seen = new Set<string>();
const items = [];
for (const item of events) {
const page = item.pages?.[0];
const id = `${item.year}-${page?.title || item.text.slice(0, 50)}`;
if (seen.has(id)) continue;
seen.add(id);
items.push({
id,
title: `${item.year} \u2014 ${item.text}`,
subtitle: page?.extract,
url: page?.content_urls?.desktop?.page,
});
if (items.length >= 25) break;
}
api.emit(items);
}
},
};
}; import type { GlancewayAPI, SourceMethods } from "../../types";
interface OnThisDayEvent {
text: string;
year: number;
pages?: {
title: string;
extract?: string;
content_urls?: {
desktop?: { page?: string };
};
}[];
}
interface OnThisDayResponse {
selected: OnThisDayEvent[];
events: OnThisDayEvent[];
}
export default (api: GlancewayAPI): SourceMethods => {
const language = api.config.get("LANGUAGE") || "en";
return {
async refresh() {
const now = new Date();
const mm = String(now.getMonth() + 1).padStart(2, "0");
const dd = String(now.getDate()).padStart(2, "0");
const url = `https://api.wikimedia.org/feed/v1/wikipedia/${language}/onthisday/all/${mm}/${dd}`;
const response = await api.fetch<OnThisDayResponse>(url);
if (response.ok && response.json) {
const events = [
...(response.json.selected || []),
...(response.json.events || []),
];
const seen = new Set<string>();
const items = [];
for (const item of events) {
const page = item.pages?.[0];
const id = `${item.year}-${page?.title || item.text.slice(0, 50)}`;
if (seen.has(id)) continue;
seen.add(id);
items.push({
id,
title: `${item.year} \u2014 ${item.text}`,
subtitle: page?.extract,
url: page?.content_urls?.desktop?.page,
});
if (items.length >= 25) break;
}
api.emit(items);
}
},
};
};