@ extractus/ oembed- extractor
从给定的 URL 中提取 ombed 内容 .
安装
德诺
deno add jsr:@extractus/oembed-extractor
节点.js / Bun
pnpm add jsr:@extractus/oembed-extractor
# or
npx jsr add @extractus/oembed-extractor
# or
bunx jsr add @extractus/oembed-extractor
或者从 npm 安装 :
npm install @extractus/oembed-extractor
# or
bun add @extractus/oembed-extractor
使用量
import { extract } from "jsr:@extractus/oembed-extractor";
const data = await extract("https://www.youtube.com/watch?v=x2bqscVkGxk");
console.log(data);
APIs 密码
extract()
从 URL 中装入并提取 ombed 数据 .
语法
extract(url: string): Promise<OembedData>
extract(url: string, params?: Params): Promise<OembedData>
extract(url: string, params?: Params, fetcher?: Fetcher): Promise<OembedData>
示例
import { extract } from "jsr:@extractus/oembed-extractor";
try {
const result = await extract("https://www.youtube.com/watch?v=x2bqscVkGxk");
console.log(result);
} catch (err) {
console.error(err);
}
结果是 OembedData 对象 :
interface OembedData {
type: "rich" | "video" | "photo" | "link";
version: string;
title?: string;
author_name?: string;
author_url?: string;
provider_name?: string;
provider_url?: string;
cache_age?: string | number;
thumbnail_url?: string;
thumbnail_width?: number;
thumbnail_height?: number;
method?: string;
[key: string]: unknown;
}
参数
url 所需经费
有效 ombed 资源的 URL, 例如 . https://www.youtube.com/watch?v=x2bqscVkGxk
params 选项
| 财产 | 类型 | 说明 |
|---|---|---|
maxwidth | number | 嵌入大小的最大宽度 |
maxheight | number | 嵌入大小的最大高度 |
theme | string | 譬如说. "dark" 或者说 "light" |
lang | string | 譬如说. "en", (中文(简体) ), "fr", (中文(简体) ), "vi" |
请注意,有些参数是由一些提供者支持的,而另一些则不支持. 请参看供应商的 oEmbed API 文档以获取确切信息 .
fetcher 选项
带有签名的自定义获取函数 (url: string) => Promise<Response>。 。 。 .
使用此功能来自定义 HTTP 行为: 代理,信头, TLS, 认证, 超时等.
默认为 globalThis.fetch。 。 。 .
德诺 (带有代理) :
import { extract } from "@extractus/oembed-extractor";
const client = Deno.createHttpClient({
proxy: { url: "http://proxy.example.com:8080" },
});
const myFetcher = (url: string) => fetch(url, { client });
const result = await extract("https://www.youtube.com/watch?v=x2bqscVkGxk", {}, myFetcher);
节点.js (通过undici使用代理) :
import { extract } from "@extractus/oembed-extractor";
import { fetch, ProxyAgent } from "undici";
const dispatcher = new ProxyAgent("http://proxy.example.com:8080");
const myFetcher = (url: string) => fetch(url, { dispatcher });
const result = await extract("https://www.youtube.com/watch?v=x2bqscVkGxk", {}, myFetcher);
阿宝 (带有代理) :
import { extract } from "@extractus/oembed-extractor";
const myFetcher = (url: string) =>
fetch(url, {
proxy: "http://proxy.example.com:8080",
});
const result = await extract("https://www.youtube.com/watch?v=x2bqscVkGxk", {}, myFetcher);
自定义信头数字 :
const myFetcher = (url: string) =>
fetch(url, {
headers: {
"user-agent": "MyBot/1.0",
authorization: "Bearer token123",
},
});
const result = await extract(url, {}, myFetcher);
请求超时数字 :
const myFetcher = (url: string) =>
fetch(url, {
signal: AbortSignal.timeout(5000),
});
const result = await extract(url, {}, myFetcher);
findProvider()
找到匹配给定 URL 的提供者 .
语法
findProvider(url: string): FindResult | null
示例
import { findProvider } from "jsr:@extractus/oembed-extractor";
const provider = findProvider("https://www.youtube.com/watch?v=x2bqscVkGxk");
console.log(provider?.endpoint); // "https://www.youtube.com/oembed"
hasProvider()
检查是否有注册提供者支持 URL .
语法
hasProvider(url: string): boolean
示例
import { hasProvider } from "jsr:@extractus/oembed-extractor";
hasProvider("https://www.youtube.com/watch?v=x2bqscVkGxk"); // true
hasProvider("https://example.com/unknown"); // false
setProviderList()
将提供者列表替换为自定义的提供者集,凌驾于 默认。 。 。 .
语法
setProviderList(providers: Provider[]): number
示例
import { setProviderList } from "jsr:@extractus/oembed-extractor";
const count = setProviderList([
{
provider_name: "Alpha",
provider_url: "https://alpha.com",
endpoints: [
{
schemes: ["https://store.alpha.com/*"],
url: "https://api.alpha.com/oembed",
},
],
},
]);
资源提供者的默认列表从 oembed.com (英语)。 。 。 .
如果您想要修改提供者列表, 请请求拉动 橡树/树苗 然后在此创建一个问题/ pr 以请求同步 .
发展
git clone https://github.com/extractus/oembed-extractor.git
cd oembed-extractor
# run tests
deno test --allow-all
# lint
deno lint
# build npm package
deno run -A ./scripts/build_npm.ts
# sync providers from oembed.com
deno task sync
许可证
《麻省理工学院许可证》
支持项目
这个项目是我空余时间维持的 如果你认为这有帮助, 有一些简单的方式支持它的持续发展:
- 来帮助更多的人发现它.
- 给我买杯咖啡: https://paypal.me/ndaidong (英语)
- 订阅 oEmbed 解析器服务 在快速API上.
每一点支持都有助于保持该项目的积极维持。 谢谢