import { uploadVideo, type YouTubeUploadVideoParams, type YouTubeUploadVideoResult, } from './youtube.ts' export type { YouTubeUploadVideoParams, YouTubeUploadVideoResult } from './youtube.ts' export { uploadVideo } /** * Upload a video to YouTube via the resumable upload protocol. Maps videoUrl/title aliases; rejects unknown keys. * * Use this alias when you only need upload, not the full `./youtube` helper namespace. * Fetches media from `videoUrl` in Range chunks (works with Cloudflare R2 object API URLs). * * @param params.account - Google account alias (`youtube-brand` or `youtube-plus`). * @param params.videoUrl - Fetchable video URL (for example a Cloudflare R2 object API URL). * @param params.title - Video title. * @param params.privacyStatus - Optional privacy (`public`, `unlisted`, `private`). Defaults to private. * @param params.dryRun - Probe the video URL and return without uploading. * @returns Uploaded video id, title, privacy, and byte count. * @example * import uploadVideo from 'kody:@kentcdodds/google/youtube-upload-video' * const result = await uploadVideo({ * account: 'youtube-plus', * videoUrl: 'https://api.cloudflare.com/client/v4/accounts/…/r2/buckets/kcd-promo-videos/objects/ep/promo/bluesky.mp4', * videoFetchHeaders: { Authorization: 'Bearer {{secret:cloudflareApiToken}}' }, * title: 'Promo title', * privacyStatus: 'private', * dryRun: true, * }) * // => { id: 'dry-run', title: 'Promo title', privacyStatus: 'private', bytes: 123456, dryRun: true } */ export default async function youtubeUploadVideo( params: YouTubeUploadVideoParams, ): Promise { return await uploadVideo(params) }