103 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
require_once __DIR__ . "/functions.php"; // Ensure this has no conflicts
 | 
						|
 | 
						|
// Fetch all type IDs from ESI using pagination
 | 
						|
function get_all_type_ids()
 | 
						|
{
 | 
						|
    $all_ids = [];
 | 
						|
    $page = 1;
 | 
						|
 | 
						|
    do {
 | 
						|
        $url = "https://esi.evetech.net/latest/universe/types/?page=$page";
 | 
						|
        $ch = curl_init($url);
 | 
						|
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 | 
						|
        $response = curl_exec($ch);
 | 
						|
        $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
 | 
						|
        curl_close($ch);
 | 
						|
 | 
						|
        if ($http_code !== 200) {
 | 
						|
            echo "Failed to fetch type IDs on page $page. HTTP Code: $http_code\n";
 | 
						|
            break;
 | 
						|
        }
 | 
						|
 | 
						|
        $ids = json_decode($response, true);
 | 
						|
        if (empty($ids)) {
 | 
						|
            break;
 | 
						|
        }
 | 
						|
 | 
						|
        $all_ids = array_merge($all_ids, $ids);
 | 
						|
        $page++;
 | 
						|
        usleep(250000); // Avoid API rate limit
 | 
						|
    } while (true);
 | 
						|
 | 
						|
    return $all_ids;
 | 
						|
}
 | 
						|
 | 
						|
// Filter IDs to include only blueprints by checking for names ending in "Blueprint"
 | 
						|
function filter_blueprint_ids($ids)
 | 
						|
{
 | 
						|
    $blueprint_ids = [];
 | 
						|
    $chunks = array_chunk($ids, 1000);
 | 
						|
 | 
						|
    foreach ($chunks as $chunk) {
 | 
						|
        $names = fetch_type_names($chunk);
 | 
						|
        foreach ($names as $id => $name) {
 | 
						|
            if (str_ends_with($name, "Blueprint")) {
 | 
						|
                $blueprint_ids[] = $id;
 | 
						|
            }
 | 
						|
        }
 | 
						|
        usleep(250000);
 | 
						|
    }
 | 
						|
 | 
						|
    return $blueprint_ids;
 | 
						|
}
 | 
						|
 | 
						|
// Batch fetch type names using /universe/names/
 | 
						|
 | 
						|
 | 
						|
// Populate the blueprint cache
 | 
						|
function populate_blueprint_cache()
 | 
						|
{
 | 
						|
    echo "Fetching all type IDs...\n";
 | 
						|
    $all_type_ids = get_all_type_ids();
 | 
						|
 | 
						|
    if (empty($all_type_ids)) {
 | 
						|
        echo "No type IDs retrieved.\n";
 | 
						|
        return;
 | 
						|
    }
 | 
						|
 | 
						|
    echo "Filtering blueprint IDs...\n";
 | 
						|
    $blueprint_ids = filter_blueprint_ids($all_type_ids);
 | 
						|
 | 
						|
    if (empty($blueprint_ids)) {
 | 
						|
        echo "No blueprint IDs found.\n";
 | 
						|
        return;
 | 
						|
    }
 | 
						|
 | 
						|
    echo "Fetching blueprint names...\n";
 | 
						|
    $cached_data = [];
 | 
						|
    $chunks = array_chunk($blueprint_ids, 1000);
 | 
						|
    foreach ($chunks as $chunk) {
 | 
						|
        $batch_names = fetch_type_names($chunk);
 | 
						|
        foreach ($batch_names as $id => $name) {
 | 
						|
            $cached_data[$id] = $name;
 | 
						|
        }
 | 
						|
        usleep(250000);
 | 
						|
    }
 | 
						|
 | 
						|
    // Save to JSON cache file
 | 
						|
    $cache_dir = __DIR__ . "/cache";
 | 
						|
    if (!is_dir($cache_dir)) {
 | 
						|
        mkdir($cache_dir, 0775, true);
 | 
						|
    }
 | 
						|
    $cache_file = $cache_dir . "/blueprint_cache.json";
 | 
						|
    file_put_contents(
 | 
						|
        $cache_file,
 | 
						|
        json_encode($cached_data, JSON_PRETTY_PRINT)
 | 
						|
    );
 | 
						|
 | 
						|
    echo "Cache populated with " . count($cached_data) . " blueprint names.\n";
 | 
						|
}
 | 
						|
 | 
						|
// Run it
 | 
						|
populate_blueprint_cache();
 |