# @extractus/oembed-extractor 中文文档

规范地址：https://npmcn.com/package/%40extractus/oembed-extractor/

版本：6\.0\.0
npm 元数据更新时间：2026-08-06T14:24:26.684Z
中文译文更新时间：2026-11-14T06:14:26.587Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40extractus/oembed-extractor
原文对照：https://npmcn.com/package/%40extractus/oembed-extractor/?lang=original
项目主页：https://github.com/extractus/oembed-extractor#readme
源码仓库：https://github.com/extractus/oembed-extractor

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：171 kB，37 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：1 个
- 首次发布：2022-11-29T06:18:36.284Z
- 最新版本发布：2026-08-06T14:24:26.429Z
- 近 30 天下载量：91457（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：22（近 12 个月 3 个）

## 中文简介

从给定的 URL 获取 ombed 数据 .

## 安装

```sh
npm install @extractus/oembed-extractor
```

也可以使用：`pnpm add @extractus/oembed-extractor`、`yarn add @extractus/oembed-extractor`、`bun add @extractus/oembed-extractor`

## README

# @ extractus/ oembed- extractor

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

[![JSR](https://jsr.io/badges/@extractus/oembed-extractor)](https://jsr.io/@extractus/oembed-extractor) [![npm version](https://badge.fury.io/js/@extractus%2Foembed-extractor.svg)](https://badge.fury.io/js/@extractus%2Foembed-extractor) ![CI test](https://github.com/extractus/oembed-extractor/workflows/ci-test/badge.svg)

## 安装

### 德诺

```bash
deno add jsr:@extractus/oembed-extractor
```

### 节点.js / Bun

```bash
pnpm add jsr:@extractus/oembed-extractor
# or
npx jsr add @extractus/oembed-extractor
# or
bunx jsr add @extractus/oembed-extractor
```

或者从 npm 安装 :

```bash
npm install @extractus/oembed-extractor
# or
bun add @extractus/oembed-extractor
```

## 使用量

```ts
import { extract } from "jsr:@extractus/oembed-extractor";

const data = await extract("https://www.youtube.com/watch?v=x2bqscVkGxk");
console.log(data);
```

## APIs 密码

-   [`extract()`](https://npmcn.com/package/%40extractus/oembed-extractor/#readme-extract)
-   [`findProvider()`](https://npmcn.com/package/%40extractus/oembed-extractor/#readme-findprovider)
-   [`hasProvider()`](https://npmcn.com/package/%40extractus/oembed-extractor/#readme-hasprovider)
-   [`setProviderList()`](https://npmcn.com/package/%40extractus/oembed-extractor/#readme-setproviderlist)

* * *

### `extract()`

从 URL 中装入并提取 ombed 数据 .

#### 语法

```ts
extract(url: string): Promise<OembedData>
extract(url: string, params?: Params): Promise<OembedData>
extract(url: string, params?: Params, fetcher?: Fetcher): Promise<OembedData>
```

示例

```ts
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` 对象 :

```ts
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`。 。 。 .

**德诺** (带有代理) :

```ts
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使用代理) :

```ts
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);
```

**阿宝** (带有代理) :

```ts
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);
```

**自定义信头**数字 :

```ts
const myFetcher = (url: string) =>
  fetch(url, {
    headers: {
      "user-agent": "MyBot/1.0",
      authorization: "Bearer token123",
    },
  });

const result = await extract(url, {}, myFetcher);
```

**请求超时**数字 :

```ts
const myFetcher = (url: string) =>
  fetch(url, {
    signal: AbortSignal.timeout(5000),
  });

const result = await extract(url, {}, myFetcher);
```

* * *

### `findProvider()`

找到匹配给定 URL 的提供者 .

#### 语法

```ts
findProvider(url: string): FindResult | null
```

示例

```ts
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 .

#### 语法

```ts
hasProvider(url: string): boolean
```

示例

```ts
import { hasProvider } from "jsr:@extractus/oembed-extractor";

hasProvider("https://www.youtube.com/watch?v=x2bqscVkGxk"); // true
hasProvider("https://example.com/unknown"); // false
```

* * *

### `setProviderList()`

将提供者列表替换为自定义的提供者集,凌驾于 [默认](https://npmcn.com/package/%40extractus/oembed-extractor/src/utils/providers.original.json)。 。 。 .

#### 语法

```ts
setProviderList(providers: Provider[]): number
```

示例

```ts
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 (英语)](http://oembed.com/providers.json)。 。 。 .

如果您想要修改提供者列表, 请请求拉动 [橡树/树苗](https://github.com/iamcal/oembed) 然后在此创建一个问题/ pr 以请求同步 .

* * *

## 发展

```bash
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 (英语)](https://paypal.me/ndaidong)
-   订阅 [oEmbed 解析器服务](https://rapidapi.com/pwshub-pwshub-default/api/oembed-parser/) 在快速API上.

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

* * *

## 常见问题

### @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 和提交记录判断。

