X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=app%2FConsole%2FCommands%2FGenerateAosSeed.php;h=fa390c8f4c35e6f9b5e2df16583a510205a3aebb;hb=e0195b0aebf84bdf5a05c887abc4300a6546a9b2;hp=c51ce29a09a04a7acfe55e44fa6d1ab950994d84;hpb=a6187e9c653f9727b9703d95361374ae31a0d99c;p=alttp.git diff --git a/app/Console/Commands/GenerateAosSeed.php b/app/Console/Commands/GenerateAosSeed.php index c51ce29..fa390c8 100644 --- a/app/Console/Commands/GenerateAosSeed.php +++ b/app/Console/Commands/GenerateAosSeed.php @@ -4,9 +4,9 @@ namespace App\Console\Commands; use App\Beat\Encoder; use App\Models\AosSeed; -use HeadlessChromium\BrowserFactory; use Illuminate\Console\Command; use Illuminate\Support\Facades\Storage; +use Symfony\Component\Process\Process; class GenerateAosSeed extends Command { @@ -41,39 +41,14 @@ class GenerateAosSeed extends Command $temp_dir = sys_get_temp_dir(); $params = array_merge(['seed' => $seed->seed], $seed->settings); - $url = config('aos.surge_url').'/?'.http_build_query($params, '', '&'); + $settings = http_build_query($params, '', '&'); - $fac = new BrowserFactory('chromium'); - $fac->addOptions(['noSandbox' => true]); - $browser = $fac->createBrowser(); - - $stage = 'loading page'; - $page = $browser->createPage(); - $page->setDownloadPath($temp_dir); - $page->navigate($url)->waitForNavigation(); - - $stage = 'selecting rom'; - $fileInput = $page->dom()->querySelector('input[type=file]'); - $fileInput->sendFile(config('aos.base_rom')); - $page->waitUntilContainsElement('select'); - - $stage = 'clicking randomize'; - $page->mouse()->find('button', 2)->click(); - $page->waitUntilContainsElement('a[download]'); - - $stage = 'clicking download'; - $page->dom()->querySelector('a[download]')->setAttributeValue('download', $seed->hash.'.gba'); - $page->mouse()->find('a[download]')->click(); - - $stage = 'waiting for rom'; $romFile = $temp_dir.'/'.$seed->hash.'.gba'; - for ($i = 0; $i < 100; ++$i) { - clearstatcache(); - if (is_file($romFile) && filesize($romFile) >= 8388608) { - break; - } - usleep(100_000); - } + $spoilerFile = $temp_dir.'/'.$seed->hash.'.txt'; + + $stage = 'randomizing'; + $proc = new Process([config('aos.cli'), config('aos.base_rom'), $romFile, $settings]); + $proc->mustRun(); $stage = 'calculating patch'; $encoder = new Encoder(file_get_contents(config('aos.base_rom'))); @@ -81,11 +56,12 @@ class GenerateAosSeed extends Command Storage::disk('aos-seeds')->put($seed->hash.'.bps', $patch); unlink($romFile); + $stage = 'saving spoiler'; + Storage::disk('aos-spoilers')->put($seed->hash.'.txt', $proc->getOutput()); + $stage = 'done'; $seed->status = 'generated'; $seed->save(); - - $browser->close(); } catch (\Throwable $e) { $seed->status = 'error'; $seed->error_detail = [