/**
  * 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&#8230;)</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);
     }
 }
Example #5
0
 /**
  */
 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;
 }
Example #6
0
<?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>";