/** * Wrapper method that uses FeedReader * class to generate XML and then * generates an array of top track info. */ function readInData() { $feedReader = new FeedReader($this->url); $data = $feedReader->readInXML(); $topEntries = array(); foreach ($data->entry as $entry) { $trackInfo = array(); $trackTitleInfo = explode("-", $entry->title); $trackInfo['title'] = $trackTitleInfo[0]; $trackInfo['artist'] = $trackTitleInfo[1]; $trackInfo['link'] = (string) $entry->id; $topEntries[] = $trackInfo; } $this->setTopEntries($topEntries); }
public function test_it_doesnt_reload_duplicate_items() { $testFeed = $this->testFeedUrl; FeedReader::shouldReceive('read')->twice()->with([$testFeed])->andReturn(self::$sampleFeed); Artisan::call('feeds:load', ['feed_url' => $testFeed]); Artisan::call('feeds:load', ['feed_url' => $testFeed]); $sampleItem = self::$sampleFeed->get_item(); $expected_count = 1; $actual_count = \App\RssItem::where('guid', $sampleItem->get_id())->count(); $this->assertEquals($expected_count, $actual_count); }
public function testFeedReaderYandexRss() { $feedChannel = FeedReader::create()->parseFile(dirname(__FILE__) . '/data/feedReader/yandex_rss.xml'); $feedItems = $feedChannel->getFeedItems(); $this->assertTrue($feedChannel instanceof FeedChannel); $this->assertTrue($feedItems[1] instanceof YandexRssFeedItem); $this->assertEquals(count($feedItems), 3); $this->assertEquals($feedChannel->getTitle(), 'RSS understanding'); $feedItem = $feedItems[1]; $this->assertEquals($feedItem->getTitle(), 'Where to submit your RSS feeds …'); $this->assertEquals(trim($feedItem->getFullText()), '<p>Have a blog or other site that outputs an RSS feed? Want more exposure for your site or feed? Masternewmedia has compiled and regularly updates a list of websites where RSS feeds can be submitted. Each link has been tested and there is information on the website and how it works, as well as a direct link to the feed submission page.</p>' . PHP_EOL . '<p> <a href="http://rssblog.whatisrss.com/where-to-submit-your-rss-feeds/#more-6" class="more-link">(more…)</a></p>'); }
private function loadRss($rss) { try { $feed = FeedReader::read($rss->url); $data = array(); foreach ($feed->get_items() as $key => $value) { //Fallback bad url $url = $value->get_id(); $url = filter_var($url, FILTER_VALIDATE_URL) === FALSE ? $value->get_permalink() : $url; $link = Link::where('url', $url)->get()->first(); if (is_null($link)) { $htmlParts = $this->getFinalURL($url); $final_url = $htmlParts['final_url']; $this->info($final_url); if (strpos($final_url, "/") == 0) { $orig = parse_url($url); $final_url = $orig['scheme'] . '://' . $orig['host'] . $final_url; $this->info($final_url); } //'Y-m-d H:i:s' $date = strtotime($value->get_date()); //Fallback bad dates if (strpos($date, '1969') == 0) { $date = new DateTime(); } else { $date = date('Y-m-d H:i:s', $date); } $image = $this->getImage($value, $htmlParts['og_image']); $data[] = array('url' => $url, 'final_url' => $final_url, 'title' => html_entity_decode($value->get_title()), 'image' => $image, 'id_rss' => $rss->id, 'id_tag' => $rss->id_tag, 'id_newspaper' => $rss->id_newspaper, 'date' => $date, 'facebook' => 0, 'twitter' => 0, 'linkedin' => 0, 'googleplus' => 0, 'updated_at' => date('Y-m-d H:i:s'), 'created_at' => date('Y-m-d H:i:s')); } else { $link->touch(); } } } catch (Exception $e) { $this->info($rss->url); $this->info($e->getTraceAsString()); } if (count($data)) { Link::insert($data); } }
/** */ function saveFeed($data) { $id = isset($data["feed_id"]) && $data["feed_id"] != false ? (int) $data["feed_id"] : false; $title = substr($data["title"], 0, 255); $url = substr($data["url"], 0, 255); $old_url = $data["old_url"]; $refresh_time = (int) $data["refresh_time"]; //$show_on_platform = implode(",", $data["show_on_platform"]); if ($id === false) { $field_list = "title, url, active, refresh_time"; $field_val = "'" . $title . "', '" . $url . "', '1', '" . $refresh_time . "'"; $qtxt = "INSERT INTO " . $this->_getFeedsTable() . " (" . $field_list . ") VALUES(" . $field_val . ")"; $id = $this->_executeInsert($qtxt); return $id; } else { if ($id > 0) { $url_changed = $old_url != $url ? TRUE : FALSE; $qtxt = "UPDATE " . $this->_getFeedsTable() . " SET title='" . $title . "', url='" . $url . "', "; if ($url_changed) { $qtxt .= "image='', content='', last_update='0', "; } $qtxt .= "refresh_time='" . $refresh_time . "' "; $qtxt .= "WHERE feed_id='" . $id . "'"; $q = $this->_executeQuery($qtxt); if ($url_changed) { $feed_reader = new FeedReader(); $feed_reader->readFeed($id); unset($feed_reader); } return $q ? true : false; } } return false; }
<?php die("disabled"); require_once dirname(__FILE__) . '/feed-reader.php'; require_once dirname(__FILE__) . '/../config.php'; $prefix_to_url = "http://tasawwuf.org"; $feed_url = "http://tasawwuf.org/feed/"; $pattern_to_search = '/a title="(.*?)" href="(.*?\\.mp3)">/'; $category_search_xpath = "//item/title"; echo "<html><body><pre>"; $feed_reader = new FeedReader($feed_url, $pattern_to_search, $category_search_xpath); $bayans = $feed_reader->update_from_feed(); var_dump($bayans); $found_some_new = $feed_reader->insert_unique($bayans); if ($found_some_new) { $feed_reader->send_update_email(); } echo "</pre></body></html>";