62 lines
2.0 KiB
PHP
62 lines
2.0 KiB
PHP
<?php
|
|
|
|
$serviceUrl = 'https://chromium-i18n.appspot.com/ssl-address';
|
|
|
|
// Make sure we're starting from a clean slate.
|
|
if (is_dir(__DIR__ . '/assets')) {
|
|
die('The assets/ directory already exists.');
|
|
}
|
|
// Make sure aria2 is installed.
|
|
exec('aria2c --version', $ariaVersion);
|
|
if (empty($ariaVersion) || strpos($ariaVersion[0], 'aria2 version') === false) {
|
|
die('aria2 must be installed.');
|
|
}
|
|
|
|
// Prepare the filesystem.
|
|
mkdir(__DIR__ . '/assets');
|
|
mkdir(__DIR__ . '/assets/google');
|
|
|
|
// Fetch country data (CLDR).
|
|
echo "Fetching country data.\n";
|
|
exec('git clone --depth 1 https://github.com/unicode-org/cldr-json.git ' . __DIR__ . '/assets/cldr');
|
|
|
|
// Fetch address data (Google).
|
|
echo "Generating the url list.\n";
|
|
$urlList = generate_url_list();
|
|
file_put_contents(__DIR__ . '/assets/url_list.txt', $urlList);
|
|
|
|
// Invoke aria2 and fetch the data.
|
|
echo "Downloading the raw data from Google's endpoint.\n";
|
|
exec('aria2c -u 16 -i ' . __DIR__ . '/assets/url_list.txt -d ' . __DIR__ . '/assets/google');
|
|
|
|
echo "Download complete.\n";
|
|
|
|
/**
|
|
* Generates a list of all urls that need to be downloaded using aria2.
|
|
*/
|
|
function generate_url_list()
|
|
{
|
|
global $serviceUrl;
|
|
|
|
$index = file_get_contents($serviceUrl);
|
|
// Get all links that start with /ssl-address/data.
|
|
// This avoids the /address/examples urls which aren't needed.
|
|
preg_match_all("/<a\shref=\'\/ssl-address\/data\/([^\"]*)\'>/siU", $index, $matches);
|
|
// Assemble the urls
|
|
$list = array_map(function ($href) use ($serviceUrl) {
|
|
// Replace the url encoded single slash with a real one.
|
|
$href = str_replace(''', "'", $href);
|
|
// Convert 'US/CA' into 'US_CA.json'.
|
|
$filename = str_replace('/', '_', $href) . '.json';
|
|
$url = $serviceUrl . '/data/' . $href;
|
|
// aria2 expects the out= parameter to be in the next row,
|
|
// indented by two spaces.
|
|
$url .= "\n out=$filename";
|
|
|
|
return $url;
|
|
}, $matches[1]);
|
|
|
|
return implode("\n", $list);
|
|
}
|
|
|