MediaUploader
MediaUploader は、メディアアップロードの開始からステータスポーリング・完了待機までを簡略化するヘルパーです。
インストール
Section titled “インストール”追加インストールは不要です。mixi2-js に同梱されています。
// ESMimport { MediaUploader } from 'mixi2-js/helpers';// CJSconst { MediaUploader } = require('mixi2-js/helpers');import { MediaUploader } from '@otoneko1102/mixi2-js/helpers';なぜ MediaUploader を使うのか?
Section titled “なぜ MediaUploader を使うのか?”メディアをポストに添付するには、3 つのステップが必要です:
initiatePostMediaUpload()でアップロード URL を取得uploadUrlに HTTP POST でメディアデータを送信getPostMediaStatus()を繰り返し呼んで処理完了を待機
ステップ 3 のポーリングは自前で実装すると煩雑です:
// ❌ ポーリングを自前実装const upload = await client.initiatePostMediaUpload(request);// ... HTTP POST ...let status;while (true) { status = await client.getPostMediaStatus(upload.mediaId); if (status.status === MediaUploadStatus.COMPLETED) break; if (status.status === MediaUploadStatus.FAILED) throw new Error('Failed'); await new Promise(r => setTimeout(r, 1000));}MediaUploader を使えば waitForReady() を呼ぶだけです:
// ✅ 簡潔const uploader = new MediaUploader(client);const { mediaId, uploadUrl } = await uploader.initiate(request);// ... HTTP POST ...await uploader.waitForReady(mediaId);基本的な使い方
Section titled “基本的な使い方”import { MediaUploadType } from 'mixi2-js';import { MediaUploader } from 'mixi2-js/helpers';import { MediaUploadType } from '@otoneko1102/mixi2-js';import { MediaUploader } from '@otoneko1102/mixi2-js/helpers';const uploader = new MediaUploader(client);
// 1. アップロード開始const { mediaId, uploadUrl } = await uploader.initiate({ contentType: 'image/png', dataSize: imageBuffer.length, mediaType: MediaUploadType.IMAGE,});
// 2. メディアデータを送信await fetch(uploadUrl, { method: 'POST', headers: { 'Content-Type': 'image/png' }, body: imageBuffer,});
// 3. 完了まで待機await uploader.waitForReady(mediaId);
// 4. ポストに添付await client.createPost({ text: '画像付きポスト!', mediaIdList: [mediaId],});const uploader = new MediaUploader(client, { pollInterval: 2000, // ポーリング間隔(ミリ秒)。デフォルト: 1000 timeout: 120000, // タイムアウト(ミリ秒)。デフォルト: 60000});| オプション | 型 | デフォルト | 説明 |
|---|---|---|---|
pollInterval | number | 1000 | ステータスポーリングの間隔(ミリ秒) |
timeout | number | 60000 | 完了待機のタイムアウト(ミリ秒) |
API リファレンス
Section titled “API リファレンス”コンストラクタ
Section titled “コンストラクタ”new MediaUploader(client: Client, options?: MediaUploaderOptions)| メソッド | 引数 | 戻り値 | 説明 |
|---|---|---|---|
initiate(request) | InitiatePostMediaUploadRequest | Promise<UploadedMedia> | アップロードを開始し mediaId と uploadUrl を返す |
waitForReady(mediaId) | string | Promise<string> | 処理完了までポーリングして待機。完了時に mediaId を返す |
- アップロードが失敗した場合:
Error: Media upload failed: {mediaId} - タイムアウトした場合:
Error: Media upload timed out after {timeout}ms: {mediaId}