36212-vm/api/pexels.php
Flatlogic Bot 9f6077fc21 1.1
2025-11-24 16:19:24 +00:00

73 lines
2.4 KiB
PHP

<?php
header('Content-Type: application/json');
require_once __DIR__.'/../includes/pexels.php';
$errors = [];
if (!function_exists('curl_init')) {
$errors[] = 'cURL extension is not installed or enabled.';
}
// To get more diversity, let's use a few different queries.
$queries = ['man full body portrait', 'woman full body portrait', 'person full body standing'];
$results = [];
foreach ($queries as $q) {
// Add random page to get different results each time
$url = 'https://api.pexels.com/v1/search?query=' . urlencode($q) . '&orientation=portrait&per_page=1&page=' . rand(1, 20);
$data = pexels_get($url);
if ($data && !empty($data['photos'])) {
$photo = $data['photos'][0];
$src = $photo['src']['large'] ?? $photo['src']['original'];
$targetDir = __DIR__ . '/../assets/images/pexels/';
$filename = $photo['id'] . '.jpg';
$target = $targetDir . $filename;
// Only download if it doesn't exist to save bandwidth
if (!file_exists($target)) {
$download_result = download_to($src, $target);
if ($download_result === false) {
$errors[] = "Failed to download image to " . $target;
}
}
if (file_exists($target)) {
$results[] = [
'id' => $photo['id'],
'local_path' => 'assets/images/pexels/' . $filename,
'photographer' => $photo['photographer'] ?? 'Unknown',
'photographer_url' => $photo['photographer_url'] ?? '#',
'avg_color' => $photo['avg_color']
];
} else {
$errors[] = "Image file does not exist at " . $target;
}
} else {
$errors[] = "Failed to fetch data from Pexels for query: " . $q;
}
}
// Ensure we have 3 models, even if Pexels fails, use placeholders
while (count($results) < 3) {
$placeholder_index = count($results) + 1;
$results[] = [
'id' => 'placeholder_' . $placeholder_index,
// Using an external placeholder service as a fallback
'local_path' => 'https://via.placeholder.com/400x600.png?text=Model+' . $placeholder_index,
'photographer' => 'Placeholder',
'photographer_url' => '#',
'avg_color' => '#cccccc'
];
}
$response = [
'models' => array_slice($results, 0, 3)
];
if (!empty($errors)) {
$response['errors'] = $errors;
}
echo json_encode($response);