<?php require_once __DIR__ . '/../src/core.php'; $mediaProcessors = [Media::Anime => new AnimeProcessor(), Media::Manga => new MangaProcessor()]; $mediaIds = []; foreach (Database::getAllDbNames() as $dbName) { Database::attachDatabase($dbName); $query = 'SELECT um.mal_id, um.media FROM usermedia um' . ' GROUP BY um.media, um.mal_id' . ' HAVING NOT EXISTS(' . 'SELECT null FROM media m' . ' WHERE m.mal_id = um.mal_id AND m.media = um.media' . ') ORDER BY um.mal_id'; $localMediaIds = array_map(function ($row) { $row = ReflectionHelper::arrayToClass($row); return TextHelper::serializeMediaId($row); }, R::getAll($query)); $mediaIds = array_merge($mediaIds, $localMediaIds); } $mediaIds = array_unique($mediaIds); $pad = strlen(count($mediaIds)); $done = 0; $exitCode = 0; foreach ($mediaIds as $mediaId) { try { ++$done; list($media, $malId) = TextHelper::deserializeMediaId($mediaId); printf("(%0{$pad}d/%d) Processing %s #%d" . PHP_EOL, $done, count($mediaIds), Media::toString($media), $malId); $mediaProcessors[$media]->process($malId); } catch (Exception $e) { echo $e->getMessage() . PHP_EOL; $exitCode = 1; } } exit($exitCode);
$mediaIds[] = TextHelper::serializeMediaId($entry); } } } $mediaQueue->enqueueMultiple(array_map(function ($mediaId) { return new QueueItem($mediaId); }, $mediaIds)); $logger->log('ok'); }); $mediaIds = []; foreach (Media::getConstList() as $media) { $entries = Model_Media::getOldest($media, 100); foreach ($entries as $entry) { $mediaAge = time() - strtotime($entry->processed); if ($mediaAge > Config::$mediaQueueMinWait) { $mediaIds[] = TextHelper::serializeMediaId($entry); } } } $mediaQueue->enqueueMultiple(array_map(function ($mediaId) { return new QueueItem($mediaId); }, $mediaIds)); #process media processQueue($mediaQueue, Config::$mediaPerCronRun, Config::$mediaQueueMaxAttempts, $logger, function ($key) use($mediaProcessors, $logger) { list($media, $malId) = TextHelper::deserializeMediaId($key); $logger->log('Processing %s #%d... ', Media::toString($media), $malId); #process the media $mediaProcessors[$media]->process($malId); $logger->log('ok'); }); });