get-wikipedia-article
Version:
Fetch Wikipedia article resources (e.g. title, body, links...).
55 lines (45 loc) • 1.24 kB
text/typescript
import {
queriesType,
wikipediaLanguageType as languageType,
} from 'fullfiller-common/src/types';
import { fetchResource } from './common/utils';
type response = {
links: { title: string }[];
plcontinue: string;
};
async function getLinksRecursively(
language: languageType,
queries: queriesType
): Promise<string[]> {
const resp = (await fetchResource(language, queries)) as unknown as response;
const links = resp.links.map((obj) => obj.title);
return !('plcontinue' in resp)
? links
: links.concat(
await getLinksRecursively(language, {
...queries,
plcontinue: encodeURIComponent(resp.plcontinue),
})
);
}
/**
* Fetch all Wikipedia articles that are linked in the given article.
* @param title Wikipedia article title.
* @returns Array of Wikipedia articles titles.
*/
async function getArticleLinks(
language: languageType,
title: string
): Promise<string[]> {
const queries = {
action: 'query',
prop: 'links',
redirects: undefined,
pllimit: 'max',
plnamespace: '0',
titles: encodeURIComponent(title),
};
const links = await getLinksRecursively(language, queries);
return links;
}
export default getArticleLinks;