import type { videoInfo } from 'ytdl-core'; import ytpl from 'ytpl'; const videoViews = (info: videoInfo): number => { const views = info.player_response.videoDetails.viewCount; return parseInt(views, 10); }; const sourceDurationSeconds = (items: ytpl.Item[]): number => { return items ?.map((video) => { return video?.durationSec ?? 0; }) ?.reduce((cur, next) => cur + next, 0) ?? 0; }; const sourceDurationHours = (items: ytpl.Item[]): number => { const seconds = sourceDurationSeconds(items); return seconds > 0 ? Math.ceil(seconds / 3600) : 0; }; /** * Return value is in cents */ const sourceTranscriptionCost = (items: ytpl.Item[]): number => { const hours = sourceDurationHours(items); return hours * 0.5 * 100; }; /** * */ const YouTubeUtil = { videoViews, sourceDurationSeconds, sourceDurationHours, sourceTranscriptionCost, }; export default YouTubeUtil;