requireAuth(); // This will redirect to login if not authenticated // Load and parse JSON if (!file_exists($responseFile)) { die("Error: Response file not found. Please run webhook_caller.php first."); } $jsonContent = file_get_contents($responseFile); $data = json_decode($jsonContent, true); if (!$data) { die("Error: Unable to parse JSON data."); } // Initialize arrays for analysis $userCounts = []; $dailyCounts = []; $monthlyCounts = []; $promptLengths = []; $totalPrompts = count($data); // Period-specific analysis $now = new DateTime('now', new DateTimeZone('UTC')); $last24Hours = clone $now; $last24Hours->sub(new DateInterval('P1D')); $last7Days = clone $now; $last7Days->sub(new DateInterval('P7D')); $last30Days = clone $now; $last30Days->sub(new DateInterval('P30D')); $userCounts24h = []; $userCounts7d = []; $userCounts30d = []; $totalPrompts24h = 0; $totalPrompts7d = 0; $totalPrompts30d = 0; // Process each record foreach ($data as $record) { $item = $record['data']; // User counts $user = $item['USER']; if (!isset($userCounts[$user])) { $userCounts[$user] = 0; } $userCounts[$user]++; // Date parsing $date = $item['Date']; $dateObj = new DateTime($date); $dateStr = $dateObj->format('Y-m-d'); $monthStr = $dateObj->format('Y-m'); // Period filtering if ($dateObj >= $last24Hours) { if (!isset($userCounts24h[$user])) $userCounts24h[$user] = 0; $userCounts24h[$user]++; $totalPrompts24h++; } if ($dateObj >= $last7Days) { if (!isset($userCounts7d[$user])) $userCounts7d[$user] = 0; $userCounts7d[$user]++; $totalPrompts7d++; } if ($dateObj >= $last30Days) { if (!isset($userCounts30d[$user])) $userCounts30d[$user] = 0; $userCounts30d[$user]++; $totalPrompts30d++; } // Daily counts if (!isset($dailyCounts[$dateStr])) { $dailyCounts[$dateStr] = 0; } $dailyCounts[$dateStr]++; // Monthly counts if (!isset($monthlyCounts[$monthStr])) { $monthlyCounts[$monthStr] = 0; } $monthlyCounts[$monthStr]++; // Prompt length analysis $promptLength = strlen($item['PROMPT']); $promptLengths[] = $promptLength; } // Sort period-specific user counts arsort($userCounts24h); arsort($userCounts7d); arsort($userCounts30d); // Get top 25 for each period $topUsers24h = array_slice($userCounts24h, 0, 25, true); $topUsers7d = array_slice($userCounts7d, 0, 25, true); $topUsers30d = array_slice($userCounts30d, 0, 25, true); // Calculate costs $totalCost = $totalPrompts * $costPerVideo; $cost24h = $totalPrompts24h * $costPerVideo; $cost7d = $totalPrompts7d * $costPerVideo; $cost30d = $totalPrompts30d * $costPerVideo; // Sort data arsort($userCounts); ksort($dailyCounts); ksort($monthlyCounts); // Calculate statistics $uniqueUsers = count($userCounts); $avgPromptsPerUser = round($totalPrompts / $uniqueUsers, 2); $avgPromptLength = round(array_sum($promptLengths) / count($promptLengths), 0); $maxPromptLength = max($promptLengths); $minPromptLength = min($promptLengths); // Get date range $dates = array_keys($dailyCounts); $startDate = reset($dates); $endDate = end($dates); // Get top 20 users $topUsers = array_slice($userCounts, 0, 20, true); // Get recent daily activity (last 30 days) $recentDaily = array_slice($dailyCounts, -30, 30, true); ?> VEO3 Usage Report

VEO3 Usage Report

Data from to

Total Prompts

Video generation requests

Total Cost

$
@$ per 8-second video

Unique Users

Active accounts

Avg Prompts/User

Mean usage per account

Last 24 Hours

videos
$

Last 7 Days

videos
$

Last 30 Days

videos
$

Avg Prompt Length

Characters

Daily Usage - Last 30 Days

$count): $height = ($count / $maxDaily) * 100; ?>

prompts
$count): $dateObj = new DateTime($date); $dayOfWeek = $dateObj->format('l'); $barWidth = ($count / $maxDailyRecent) * 100; ?>
Date Day of Week Prompts Activity Level
;">

Monthly Usage Breakdown

$count): $percentage = ($count / $totalPrompts) * 100; $barWidth = ($count / $maxMonthly) * 100; ?>
Month Prompts Distribution
(%)
;">

📅 Last 24 Hours - Top 25 Users

0): ?>

prompts from users Cost: $

$count): $percentage = ($count / $totalPrompts24h) * 100; $barWidth = ($count / $maxCount24h) * 100; $badge = ''; if ($rank === 1) $badge = '🥇 #1'; elseif ($rank === 2) $badge = '🥈 #2'; elseif ($rank === 3) $badge = '🥉 #3'; ?>
Rank User Prompts Percentage Activity
# %
;">

No activity in the last 24 hours

📊 Last 7 Days - Top 25 Users

0): ?>

prompts from users Cost: $

$count): $percentage = ($count / $totalPrompts7d) * 100; $barWidth = ($count / $maxCount7d) * 100; $badge = ''; if ($rank === 1) $badge = '🥇 #1'; elseif ($rank === 2) $badge = '🥈 #2'; elseif ($rank === 3) $badge = '🥉 #3'; ?>
Rank User Prompts Percentage Activity
# %
;">

No activity in the last 7 days

📈 Last 30 Days - Top 25 Users

0): ?>

prompts from users Cost: $

$count): $percentage = ($count / $totalPrompts30d) * 100; $barWidth = ($count / $maxCount30d) * 100; $badge = ''; if ($rank === 1) $badge = '🥇 #1'; elseif ($rank === 2) $badge = '🥈 #2'; elseif ($rank === 3) $badge = '🥉 #3'; ?>
Rank User Prompts Percentage Activity
# %
;">

No activity in the last 30 days

All Time - Top 20 Users

$count): $percentage = ($count / $totalPrompts) * 100; $barWidth = ($count / $maxCount) * 100; $badge = ''; if ($rank === 1) $badge = '🥇 #1'; elseif ($rank === 2) $badge = '🥈 #2'; elseif ($rank === 3) $badge = '🥉 #3'; ?>
Rank User Prompts Percentage Activity
# %
;">

All Users Summary ( users) â–¼