| Current Path : /home/seto/indexator.pm/ |
| Current File : /home/seto/indexator.pm/create_projects.php |
<?php
require __DIR__ . '/bootstrap.php';
use App\Core\Database;
use App\Projects\ProjectRepository;
use App\Import\SitemapImporter;
use App\Urls\UrlRepository;
use App\Urls\UrlNormalizer;
$db = Database::getInstance($GLOBALS['config']['DB_PATH']);
$projects = new ProjectRepository($db);
$config = $GLOBALS['config'];
$sites = [
['name' => 'Wazamba Hellas', 'domain' => 'wazamba-hellas.com', 'sitemap' => 'https://wazamba-hellas.com/sitemap.xml'],
['name' => 'Spinmama Club', 'domain' => 'spinmamaclub.com', 'sitemap' => 'https://spinmamaclub.com/sitemap.xml'],
];
$importer = new SitemapImporter($config);
$normalizer = new UrlNormalizer();
$urlRepo = new UrlRepository($db);
foreach ($sites as $site) {
$existing = $db->fetchOne("SELECT id FROM projects WHERE domain = ?", [$site['domain']]);
if ($existing) {
$projectId = $existing['id'];
echo "Project already exists #{$projectId}: {$site['domain']}\n";
} else {
$projectId = $projects->create($site['name'], $site['domain'], 'sitemap');
$db->execute("UPDATE projects SET source_reference = ? WHERE id = ?", [$site['sitemap'], $projectId]);
echo "Created project #{$projectId}: {$site['domain']}\n";
}
echo " Fetching: {$site['sitemap']}\n";
try {
$urls = $importer->fetch($site['sitemap']);
$rows = [];
foreach ($urls as $url) {
$rows[] = ['url' => $url, 'normalized_url' => $normalizer->normalize($url)];
}
$urlRepo->bulkInsert($projectId, $rows, 'sitemap');
echo " Imported: " . count($rows) . " URLs\n";
} catch (\Throwable $e) {
echo " ERROR: " . $e->getMessage() . "\n";
}
}