Skip to content

Latest commit

 

History

History
169 lines (130 loc) · 5.48 KB

README.md

File metadata and controls

169 lines (130 loc) · 5.48 KB

summaly

Installation

npm install @misskey-dev/summaly

Usage

As a function:

import { summaly } from 'summaly';

summaly(url[, opts])

As Fastify plugin: (will listen GET of /)

import Summaly from 'summaly';

fastify.register(Summaly[, opts])

Run the server:

git clone https://github.com/misskey-dev/summaly.git
cd summaly
NODE_ENV=development npm install
npm run build
npm run serve

opts (SummalyOptions)

Property Type Description Default
lang string Accept-Language for the request null
followRedirects boolean Whether follow redirects true
plugins plugin[] (see below) Custom plugins null
agent Got.Agents Custom HTTP agent (see below) null

Plugin

interface SummalyPlugin {
	test: (url: URL) => boolean;
	summarize: (url: URL) => Promise<Summary>;
}

urls are WHATWG URL since v4.

Custom HTTP agent for proxy

You can specify agents to be passed to Got for proxy use, etc.
https://github.com/sindresorhus/got/blob/v12.6.0/documentation/tips.md#proxying

⚠️If you set some agent, local IP rejecting will not work.⚠️
(Summaly usually rejects local IPs.)

(Summaly currently does not support http2.)

Returns

A Promise of an Object that contains properties below:

※ Almost all values are nullable. player should not be null.

SummalyResult

Property Type Description
title string | null The title of the web page
icon string | null The url of the icon of the web page
description string | null The description of the web page
thumbnail string | null The url of the thumbnail of the web page
sitename string | null The name of the web site
player Player The player of the web page
sensitive boolean Whether the url is sensitive
activityPub string | null The url of the ActivityPub representation of that web page
url string The url of the web page

Summary

Omit<SummalyResult, "url">

Player

Property Type Description
url string | null The url of the player
width number | null The width of the player
height number | null The height of the player
allow string[] The names of the allowed permissions for iframe

Currently the possible items in allow are:

  • autoplay
  • clipboard-write
  • fullscreen
  • encrypted-media
  • picture-in-picture
  • web-share

See Permissions Policy in MDN for details of them.

Example

import { summaly } from 'summaly';

const summary = await summaly('https://www.youtube.com/watch?v=NMIEAhH_fTU');

console.log(summary);

will be ... ↓

{
	"title": "【アイドルマスター】「Stage Bye Stage」(歌:島村卯月、渋谷凛、本田未央)",
	"icon": "https://www.youtube.com/s/desktop/28b0985e/img/favicon.ico",
	"description": "Website▶https://columbia.jp/idolmaster/Playlist▶https://www.youtube.com/playlist?list=PL83A2998CF3BBC86D2018年7月18日発売予定THE IDOLM@STER CINDERELLA GIRLS CG STAR...",
	"thumbnail": "https://i.ytimg.com/vi/NMIEAhH_fTU/maxresdefault.jpg",
	"player": {
		"url": "https://www.youtube.com/embed/NMIEAhH_fTU?feature=oembed",
		"width": 200,
		"height": 113,
		"allow": [
			"autoplay",
			"clipboard-write",
			"encrypted-media",
			"picture-in-picture",
			"web-share",
			"fullscreen",
		]
	},
	"sitename": "YouTube",
	"sensitive": false,
	"activityPub": null,
	"url": "https://www.youtube.com/watch?v=NMIEAhH_fTU"
}

Testing

npm run test

License

MIT