This commit is contained in:
syuilo 2018-05-18 16:51:55 +09:00
parent ec3243da32
commit b994fd39d9
4 changed files with 36 additions and 27 deletions

View File

@ -1,3 +1,7 @@
2.0.6 / 2018-05-18
------------------
* Fix bug
2.0.5 / 2018-05-18
------------------
* Fix bug

View File

@ -1,6 +1,6 @@
{
"name": "summaly",
"version": "2.0.5",
"version": "2.0.6",
"description": "Get web page's summary",
"author": "syuilo <i@syuilo.com>",
"license": "MIT",
@ -19,6 +19,7 @@
"@types/mocha": "5.0.0",
"@types/request": "2.47.0",
"@types/node": "9.6.5",
"@types/request-promise-native": "1.0.14",
"express": "4.16.3",
"typescript": "2.8.1",
"mocha": "5.1.0"
@ -29,6 +30,7 @@
"escape-regexp": "0.0.1",
"html-entities": "1.2.1",
"request": "2.85.0",
"request-promise-native": "1.0.5",
"require-all": "2.2.0",
"trace-redirect": "1.0.6"
}

View File

@ -20,7 +20,7 @@ export function test(url: URL.Url): boolean {
url.hostname === 'www.amazon.cn' ||
url.hostname === 'www.amazon.in' ||
url.hostname === 'www.amazon.au';
};
}
export async function summarize(url: URL.Url): Promise<summary> {
const res = await client.fetch(url.href);
@ -41,4 +41,4 @@ export async function summarize(url: URL.Url): Promise<summary> {
thumbnail: thumbnail || null,
sitename: 'Amazon'
};
};
}

View File

@ -1,5 +1,5 @@
import * as URL from 'url';
import * as request from 'request';
import * as request from 'request-promise-native';
import * as debug from 'debug';
import summary from '../summary';
import clip from './../utils/clip';
@ -8,29 +8,32 @@ const log = debug('summaly:plugins:wikipedia');
export function test(url: URL.Url): boolean {
return /\.wikipedia\.org$/.test(url.hostname);
};
}
export function summarize(url: URL.Url): Promise<summary> {
return new Promise((res, rej) => {
const lang = url.host.split('.')[0];
const title = url.pathname.split('/')[2];
const endpoint = `https://${lang}.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&explaintext=&titles=${encodeURIComponent(title)}`;
export async function summarize(url: URL.Url): Promise<summary> {
const lang = url.host.split('.')[0];
const title = url.pathname.split('/')[2];
const endpoint = `https://${lang}.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&explaintext=&titles=${encodeURIComponent(title)}`;
log(`lang is ${lang}`);
log(`title is ${title}`);
log(`endpoint is ${endpoint}`);
log(`lang is ${lang}`);
log(`title is ${title}`);
log(`endpoint is ${endpoint}`);
request(endpoint, (err, _, body) => {
log(body);
body = JSON.parse(body);
const info = body.query.pages[Object.keys(body.query.pages)[0]];
res({
title: info.title,
icon: 'https://wikipedia.org/static/favicon/wikipedia.ico',
description: clip(info.extract, 300),
thumbnail: `https://wikipedia.org/static/images/project-logos/${lang}wiki.png`,
sitename: 'Wikipedia'
});
});
});
};
let body = await request(endpoint);
body = JSON.parse(body);
log(body);
if (!('query' in body) || !('pages' in body.query)) {
throw 'fetch failed';
}
const info = body.query.pages[Object.keys(body.query.pages)[0]];
return {
title: info.title,
icon: 'https://wikipedia.org/static/favicon/wikipedia.ico',
description: clip(info.extract, 300),
thumbnail: `https://wikipedia.org/static/images/project-logos/${lang}wiki.png`,
sitename: 'Wikipedia'
};
}