#!/usr/bin/env php getFeedIo(); switch($argv[1]) { case 'discover': discover($feedIo, $argv[2]); break; default: read($feedIo, $argv[2]); break; } } function read(FeedIo $feedIo, string $url) { $result = $feedIo->read($url); $feed = $result->getFeed(); $items = array_reverse(iterator_to_array($feed)); foreach( $items as $i => $item ) { echo "\033[32m{$item->getLastModified()->format(\DateTime::ATOM)} - \033[34m{$item->getTitle()}\033[0m:" . PHP_EOL; echo "\t". strip_tags(nl2br($item->getContent())) . PHP_EOL; } $nextUpdate = $result->getNextUpdate(); echo "\033[32mNext time a new item may be published : \033[34m{$nextUpdate->format(\DATE_ATOM)}\033[0m" . PHP_EOL; $updateStats = $result->getUpdateStats(); echo "\033[32mMinimum interval between items : \033[34m".formatDateInterval($updateStats->getMedianInterval())."\033[0m" . PHP_EOL; echo "\033[32mMedian interval : \033[34m".formatDateInterval($updateStats->getMedianInterval())."\033[0m" . PHP_EOL; echo "\033[32mAverage interval : \033[34m".formatDateInterval($updateStats->getAverageInterval())."\033[0m" . PHP_EOL; echo "\033[32mMaximum interval : \033[34m".formatDateInterval($updateStats->getMaxInterval())."\033[0m". PHP_EOL; } function discover(FeedIo $feedIo, string $url) { $urls = $feedIo->discover($url); foreach( $urls as $i => $url ) { echo "\033[32m{$i} : \033[34m{$url}\033[0m" . PHP_EOL; } } function formatDateInterval(int $interval): string { $zero = new \DateTime('@0'); $diff = $zero->diff(new \DateTime("@{$interval}")); return $diff->format('%a days, %h hours, %i minutes, %s seconds'); }