| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 | #!/usr/bin/env php<?phprequire_once 'vendor/autoload.php';use PicoFeed\Config\Config;use PicoFeed\Reader\Favicon;use PicoFeed\Scraper\Scraper;use PicoFeed\Reader\Reader;use PicoFeed\Logging\Logger;use PicoFeed\PicoFeedException;Logger::enable();function get_feed($url, $disable_filtering = false){    try {        $reader = new Reader;        $resource = $reader->discover($url);        $parser = $reader->getParser(            $resource->getUrl(),            $resource->getContent(),            $resource->getEncoding()        );        if ($disable_filtering) {            $parser->disableContentFiltering();        }        return $parser->execute();    }    catch (PicoFeedException $e) {        echo 'Exception thrown ===> "'.$e->getMessage().'"'.PHP_EOL;        return false;    }}function get_item($feed, $item_id){    foreach ($feed->items as $item) {        if ($item->getId() === $item_id) {            echo $item;            echo "============= CONTENT ================\n";            echo $item->getContent();            echo "\n============= CONTENT ================\n";            break;        }    }}function dump_feed($url){    $feed = get_feed($url);    echo $feed;}function debug_feed($url){    get_feed($url);    print_r(Logger::getMessages());}function dump_item($url, $item_id){    $feed = get_feed($url);    if ($feed !== false) {        get_item($feed, $item_id);    }}function nofilter_item($url, $item_id){    $feed = get_feed($url, true);    if ($feed !== false) {        get_item($feed, $item_id);    }}function grabber($url){    $grabber = new Scraper(new Config);    $grabber->setUrl($url);    $grabber->execute();    print_r(Logger::getMessages());    echo "============= CONTENT ================\n";    echo $grabber->getRelevantContent().PHP_EOL;    echo "============= FILTERED ================\n";    echo $grabber->getFilteredContent().PHP_EOL;}function fetch_favicon($url){    $favicon = new Favicon();    echo $favicon->find($url) . PHP_EOL;}// Parse command line argumentsif ($argc === 4) {    switch ($argv[1]) {        case 'item':            dump_item($argv[2], $argv[3]);            die;        case 'nofilter':            nofilter_item($argv[2], $argv[3]);            die;    }} else if ($argc === 3) {    switch ($argv[1]) {        case 'feed':            dump_feed($argv[2]);            die;        case 'debug':            debug_feed($argv[2]);            die;        case 'grabber':            grabber($argv[2]);            die;        case 'favicon':            fetch_favicon($argv[2]);            die;    }}printf("Usage:\n");printf("%s feed <feed-url>\n", $argv[0]);printf("%s debug <feed-url>\n", $argv[0]);printf("%s item <feed-url> <item-id>\n", $argv[0]);printf("%s nofilter <feed-url> <item-id>\n", $argv[0]);printf("%s grabber <url>\n", $argv[0]);printf("%s favicon <url>\n", $argv[0]);
 |