setName('torrents:top') ->setDescription('Top torrents') ->addOption('period', 'p', InputOption::VALUE_REQUIRED, 'Period') ->setHelp("%command.name% Show top torrents. Usage: torrents:search:top [OPTIONS] Period values: \"100\", \"day\", \"week\", \"month\""); } protected function execute(InputInterface $input, OutputInterface $output) { $client = new Client(); $configLoader = new ConfigLoader(); if (!isset($configLoader->getConfig()['auth']['token'])) { $output->writeln('You must login.'); return; } $client->setAuthorization($configLoader->getConfig()['auth']['token']); try { $period = $input->getOption('period'); if (!in_array($period, ['100', 'today', 'week', 'month'])) { $period = '100'; } $response = $client->getTopTorrents($period); return $this->showResults($response, $output); } catch (ClientException $e) { $output->writeln(sprintf('An error occured. %s', $e->getMessage())); } } protected function showResults(ClientResponse $response, OutputInterface $output) { if ($response->hasError()) { $output->writeln(sprintf( '%s (%d)', $response->getErrorMessage(), $response->getErrorCode() )); return; } $output->writeln(' SEED LEECH ID NAME'); foreach ($response->getData() as $torrent) { $output->writeln(sprintf( '[%4d%6d] %9d %s', $torrent['seeders'], $torrent['leechers'], $torrent['id'], $torrent['name'] )); } } }