diff options
Diffstat (limited to 'src/App.php')
| -rw-r--r-- | src/App.php | 65 | 
1 files changed, 65 insertions, 0 deletions
| diff --git a/src/App.php b/src/App.php new file mode 100644 index 0000000..317eb2b --- /dev/null +++ b/src/App.php @@ -0,0 +1,65 @@ +<?php + +namespace FBeans\Blamarine; + +use FBeans\BlaIRC\Command; +use FBeans\BlaIRC\Application As BlaApplication; +use PHPHtmlParser\Dom; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + + +class App extends BlaApplication +{ +    public function commands(): Array +    { +        $command = new Command; +        $command->setName('marine'); + +        // argument 0 is the command name +        $command->addArgument(1); + +        $command->setExecuteCallback( +            function (InputInterface $input, OutputInterface $output) { +                $ship_id = $input->getArgument(1); + +                $url = $this->getVesselUrl($ship_id); + +                $dom = new Dom; +                $dom->loadFromUrl($url); + +                $html = $dom->find( +                    ".column.vfix-top.npr table tbody" +                ); + +                $out = []; + +                foreach ($html as $inner_elem) { +                    $elem_dom = new Dom(); +                    $item = $elem_dom->loadStr($inner_elem); + + +                    $out = ''; +                    $index = 0; +                    while ($data = $item->find('tr td', $index)) { +                        $value = $item->find('tr td', $index+1)->innerHtml(); +                        $out .= strip_tags($data->innerHtml()) . ': ' . strip_tags($value) . ' '; + +                        $index += 2; +                    } + +                    $output->writeLn(rtrim($out)); +                } + +                return Command::SUCCESS; +            } +        ); + +        return [$command]; +    } + +    private function getVesselUrl(string $ship_id): string +    { +        return "https://www.vesselfinder.com/vessels/" . $ship_id; +    } +} | 
