'monero', 'vs_currencies' => implode(',', array_map('strtolower', $currencies))]); return makeApiRequest($apiUrl); } $currencyFile = 'coingecko.json'; $originalFile = 'coingecko-original.json'; // Function to process currency data function processCurrencyData($availableCurrencies, $previousData, $currentTime, $excludedCurrencies) { // Remove excluded currencies $availableCurrencies = array_diff($availableCurrencies, $excludedCurrencies); $currencies = array_map('strtoupper', $availableCurrencies); // Fetch the latest data from CoinGecko API $fetchedData = fetchCurrencyData($currencies); if ($fetchedData) { $moneroData = $fetchedData['monero']; $newData = ['time' => $currentTime]; // Update the data for each currency foreach ($currencies as $currency) { $currencyLower = strtolower($currency); $newData[$currencyLower] = [ 'lastValue' => $moneroData[$currencyLower] ?? $previousData[$currencyLower]['lastValue'] ?? null, 'lastDate' => $currentTime ]; } return $newData; } return null; } $previousData = fetchJson($currencyFile); $output = $previousData; // Check if five seconds have passed since the last update if (($currentTime - $previousData['time']) >= 5) { $availableCurrencies = fetchAvailableCurrencies(); if ($availableCurrencies !== null) { $output = processCurrencyData($availableCurrencies, $previousData, $currentTime, $excludedCurrencies); // Save the data if the API call was successful if ($output !== null) { file_put_contents($currencyFile, json_encode($output, JSON_PRETTY_PRINT)); file_put_contents($originalFile, json_encode($output, JSON_PRETTY_PRINT)); } } } // Output the data header('Content-Type: application/json'); echo json_encode($output, JSON_PRETTY_PRINT);