@extractus/oembed-extractor

中文文档
6.0.0发布于 2026/08/06MITTypeScriptESM + CJS近 30 天下载 9.1万

从给定的 URL 获取 ombed 数据 .

中文使用文档
文档目录12 节
  1. 安装
  2. 德诺
  3. 节点.js / Bun
  4. 使用量
  5. APIs 密码
  6. extract()
  7. findProvider()
  8. hasProvider()
  9. setProviderList()
  10. 发展
  11. 许可证
  12. 支持项目

@ extractus/ oembed- extractor

从给定的 URL 中提取 ombed 内容 .

JSR npm version CI test

安装

德诺

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 选项
财产类型说明
maxwidthnumber嵌入大小的最大宽度
maxheightnumber嵌入大小的最大高度
themestring譬如说. "dark" 或者说 "light"
langstring譬如说. "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

许可证

《麻省理工学院许可证》

支持项目

这个项目是我空余时间维持的 如果你认为这有帮助, 有一些简单的方式支持它的持续发展:

每一点支持都有助于保持该项目的积极维持。 谢谢


版本与发布记录

@extractus/oembed-extractor 共发布 22 个版本,首次发布于 2022/11/29;过去 12 个月发布了 3 个版本。

版本发布日期距今
6.0.0latest2026/08/063 个月前
5.0.02026/07/223 个月前
4.1.02026/05/036 个月前
4.0.92025/09/041.2 年前
4.0.82025/05/041.5 年前
4.0.72025/04/131.6 年前

关于 @extractus/oembed-extractor 的常见问题

@extractus/oembed-extractor 是什么?

从给定的 URL 获取 ombed 数据 .

如何安装 @extractus/oembed-extractor?

在项目目录运行 npm install @extractus/oembed-extractor,或使用 pnpm add / yarn add / bun add。

@extractus/oembed-extractor 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@extractus/oembed-extractor 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@extractus/oembed-extractor 可以商用吗?

@extractus/oembed-extractor 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@extractus/oembed-extractor 的下载量有多少?

根据 npm 官方下载统计,@extractus/oembed-extractor 在 2026/10/14 – 2026/11/12 这 30 天内被下载 91,457 次,日均约 3,049 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@extractus/oembed-extractor 还在维护吗?

最新版本 6.0.0 发布于 2026/08/06(3 个月前);至今共发布 22 个版本,其中过去 12 个月发布了 3 个;首次发布于 2022/11/29。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。