Just execute the script by specifying your Instapaper username, password and any number of rss feeds
php getnews.php [username] [password] [rss feed]...
| <?php | |
| function http_response($url, $status = null, $wait = 1) | |
| { | |
| $ch = curl_init(); | |
| curl_setopt($ch, CURLOPT_URL, $url); | |
| curl_setopt($ch, CURLOPT_HEADER, TRUE); | |
| curl_setopt($ch, CURLOPT_NOBODY, TRUE); // remove body | |
| curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); | |
| $head = curl_exec($ch); | |
| $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); | |
| curl_close($ch); | |
| if(!$head) | |
| { | |
| return FALSE; | |
| } | |
| if($status == $httpCode) | |
| { | |
| return TRUE; | |
| } | |
| return FALSE; | |
| sleep($wait); | |
| } | |
| if (isset($argv[1]) && isset($argv[2]) && isset($argv[3])) { | |
| $username = $argv[1]; | |
| $password = $argv[2]; | |
| $doc = new DOMDocument(); | |
| for ($i = 3; $i < count($argv); $i++) { | |
| // Read RSS Feed | |
| $doc->load($argv[$i]); | |
| $arrFeeds = array(); | |
| foreach ($doc->getElementsByTagName('item') as $node) { | |
| $itemRSS = array ( | |
| 'title' => $node->getElementsByTagName('title')->item(0)->nodeValue, | |
| 'desc' => $node->getElementsByTagName('description')->item(0)->nodeValue, | |
| 'link' => $node->getElementsByTagName('link')->item(0)->nodeValue, | |
| 'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue | |
| ); | |
| array_push($arrFeeds, $itemRSS); | |
| } | |
| // Loop through all articles and add each to Instapaper | |
| foreach ($arrFeeds as $article) { | |
| $url = 'https://instapaper.com/api/add?username='.$username.'&password='.$password.'&url='.urlencode($article['link']).'&title='.urlencode($article['title']).'&selection='.urlencode($article['desc']); | |
| echo "Adding: ".$article['link']."..."; | |
| if (http_response($url, '201')) { | |
| echo "added!\n"; | |
| } else { | |
| echo "error! [code: ".$httpCode."]\n"; | |
| } | |
| } | |
| } | |
| echo "All done!\n"; | |
| } else { | |
| echo "Please specify an Instapaper username, password and at least 1 RSS feed\n"; | |
| } | |
| ?> |