diff --git a/src/Helper/Formater.php b/src/Helper/Formater.php index 209f092..8c275a0 100644 --- a/src/Helper/Formater.php +++ b/src/Helper/Formater.php @@ -11,7 +11,7 @@ class Formater public static function humanSize($size, $precision = 2) { $base = log($size, 1024); - $suffixes = array('', 'kB', 'MB', 'GB', 'TB'); + $suffixes = array('B', 'kB', 'MB', 'GB', 'TB'); return round(pow(1024, $base - floor($base)), $precision) . $suffixes[floor($base)]; } diff --git a/src/Transmission/Command/TransmissionConfigureCommand.php b/src/Transmission/Command/TransmissionConfigureCommand.php index ef30de4..371a026 100644 --- a/src/Transmission/Command/TransmissionConfigureCommand.php +++ b/src/Transmission/Command/TransmissionConfigureCommand.php @@ -20,7 +20,7 @@ class TransmissionConfigureCommand extends Command Configure your transmission web remote access. -Usage: transmission:configure"); +Usage: %command.name%"); } protected function execute(InputInterface $input, OutputInterface $output) diff --git a/src/Transmission/Command/TransmissionDownloadCommand.php b/src/Transmission/Command/TransmissionDownloadCommand.php index f6d671e..d26f8ff 100644 --- a/src/Transmission/Command/TransmissionDownloadCommand.php +++ b/src/Transmission/Command/TransmissionDownloadCommand.php @@ -23,7 +23,7 @@ class TransmissionDownloadCommand extends Command Download a torrent. -Usage: transmission:download TORRENT_ID"); +Usage: %command.name% TORRENT_ID"); } protected function execute(InputInterface $input, OutputInterface $output) diff --git a/src/Transmission/Command/TransmissionStatsCommand.php b/src/Transmission/Command/TransmissionStatsCommand.php new file mode 100644 index 0000000..690a789 --- /dev/null +++ b/src/Transmission/Command/TransmissionStatsCommand.php @@ -0,0 +1,95 @@ +setName('transmission:stats') + ->setDescription('Show stats from the transmission server') + ->setHelp("%command.name% + +Stats of the transmission server. + +Usage: %command.name%"); + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $configLoader = new ConfigLoader(); + + if (!isset($configLoader->getConfig()['transmission'])) { + $output->writeln('No configuration found.'); + + return; + } + + $config = $configLoader->getConfig()['transmission']; + + if (!empty($config['username']) && !empty($config['password'])) { + $options = array( + 'request.options' => array( + 'auth' => array($config['username'], $config['password']) + ) + ); + } + + try { + $client = new GuzzleClient($config['host'], $options); + + $transmission = new Transmission($configLoader->getConfig()['transmission'], $client); + + $stats = $transmission->getStats(); + + $output->writeln(sprintf("Active torrent(s): %d", $stats['activeTorrentCount'])); + + foreach (['cumulative-stats' => 'Cumulative stats', 'current-stats' => 'Current stats'] as $k => $v) { + $output->writeln(["", $v, str_repeat('-', strlen($v))]); + + $output->writeln(sprintf( + "Downloaded: %s", + Formater::humanSize($stats[$k]['downloadedBytes']) + )); + + $output->writeln(sprintf( + "Uploaded: %s", + Formater::humanSize($stats[$k]['uploadedBytes']) + )); + + $output->writeln(sprintf( + "Files Added: %d", + $stats[$k]['filesAdded'] + )); + + $output->writeln(sprintf( + "Seconds Active: %d", + $stats[$k]['secondsActive'] + )); + + $output->writeln(sprintf( + "Sessions: %d", + $stats[$k]['sessionCount'] + )); + } + } catch (\Exception $e) { + $output->writeln(sprintf( + 'An error occured. %s', + $e->getMessage() + )); + + return; + } + } +}