Fix bug for atom items without date and add grabber rules
This commit is contained in:
parent
580dd1f7b7
commit
ec95d8699d
2
vendor/autoload.php
vendored
2
vendor/autoload.php
vendored
@ -4,4 +4,4 @@
|
||||
|
||||
require_once __DIR__ . '/composer' . '/autoload_real.php';
|
||||
|
||||
return ComposerAutoloaderInit32c1e5caea1303c23c9e3aeeb4850b2e::getLoader();
|
||||
return ComposerAutoloaderInit093c65b5382fc7317d870fcd9f8036ba::getLoader();
|
||||
|
10
vendor/composer/autoload_real.php
vendored
10
vendor/composer/autoload_real.php
vendored
@ -2,7 +2,7 @@
|
||||
|
||||
// autoload_real.php @generated by Composer
|
||||
|
||||
class ComposerAutoloaderInit32c1e5caea1303c23c9e3aeeb4850b2e
|
||||
class ComposerAutoloaderInit093c65b5382fc7317d870fcd9f8036ba
|
||||
{
|
||||
private static $loader;
|
||||
|
||||
@ -19,9 +19,9 @@ class ComposerAutoloaderInit32c1e5caea1303c23c9e3aeeb4850b2e
|
||||
return self::$loader;
|
||||
}
|
||||
|
||||
spl_autoload_register(array('ComposerAutoloaderInit32c1e5caea1303c23c9e3aeeb4850b2e', 'loadClassLoader'), true, true);
|
||||
spl_autoload_register(array('ComposerAutoloaderInit093c65b5382fc7317d870fcd9f8036ba', 'loadClassLoader'), true, true);
|
||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
||||
spl_autoload_unregister(array('ComposerAutoloaderInit32c1e5caea1303c23c9e3aeeb4850b2e', 'loadClassLoader'));
|
||||
spl_autoload_unregister(array('ComposerAutoloaderInit093c65b5382fc7317d870fcd9f8036ba', 'loadClassLoader'));
|
||||
|
||||
$map = require __DIR__ . '/autoload_namespaces.php';
|
||||
foreach ($map as $namespace => $path) {
|
||||
@ -42,14 +42,14 @@ class ComposerAutoloaderInit32c1e5caea1303c23c9e3aeeb4850b2e
|
||||
|
||||
$includeFiles = require __DIR__ . '/autoload_files.php';
|
||||
foreach ($includeFiles as $file) {
|
||||
composerRequire32c1e5caea1303c23c9e3aeeb4850b2e($file);
|
||||
composerRequire093c65b5382fc7317d870fcd9f8036ba($file);
|
||||
}
|
||||
|
||||
return $loader;
|
||||
}
|
||||
}
|
||||
|
||||
function composerRequire32c1e5caea1303c23c9e3aeeb4850b2e($file)
|
||||
function composerRequire093c65b5382fc7317d870fcd9f8036ba($file)
|
||||
{
|
||||
require $file;
|
||||
}
|
||||
|
8
vendor/composer/installed.json
vendored
8
vendor/composer/installed.json
vendored
@ -162,12 +162,12 @@
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/fguillot/picoFeed.git",
|
||||
"reference": "da9c8df79c76b00e2e7c16ae12f768117164a838"
|
||||
"reference": "a006fc10642fbdc5414bebd6542aeabd35f8c98b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/fguillot/picoFeed/zipball/da9c8df79c76b00e2e7c16ae12f768117164a838",
|
||||
"reference": "da9c8df79c76b00e2e7c16ae12f768117164a838",
|
||||
"url": "https://api.github.com/repos/fguillot/picoFeed/zipball/a006fc10642fbdc5414bebd6542aeabd35f8c98b",
|
||||
"reference": "a006fc10642fbdc5414bebd6542aeabd35f8c98b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -178,7 +178,7 @@
|
||||
"ext-xml": "*",
|
||||
"php": ">=5.3.0"
|
||||
},
|
||||
"time": "2015-03-01 23:58:00",
|
||||
"time": "2015-03-03 03:14:01",
|
||||
"type": "library",
|
||||
"installation-source": "dist",
|
||||
"autoload": {
|
||||
|
@ -138,16 +138,20 @@ class Atom extends Parser
|
||||
* Find the item date
|
||||
*
|
||||
* @access public
|
||||
* @param SimpleXMLElement $entry Feed item
|
||||
* @param Item $item Item object
|
||||
* @param SimpleXMLElement $entry Feed item
|
||||
* @param Item $item Item object
|
||||
* @param \PicoFeed\Parser\Feed $feed Feed object
|
||||
*/
|
||||
public function findItemDate(SimpleXMLElement $entry, Item $item)
|
||||
public function findItemDate(SimpleXMLElement $entry, Item $item, Feed $feed)
|
||||
{
|
||||
$published = isset($entry->published) ? $this->date->getDateTime((string) $entry->published) : null;
|
||||
$updated = isset($entry->updated) ? $this->date->getDateTime((string) $entry->updated) : null;
|
||||
|
||||
if ($published !== null && $updated !== null) {
|
||||
$item->date = max($published, $updated);
|
||||
if ($published === null && $updated === null) {
|
||||
$item->date = $feed->getDate(); // We use the feed date if there is no date for the item
|
||||
}
|
||||
else if ($published !== null && $updated !== null) {
|
||||
$item->date = max($published, $updated); // We use the most recent date between published and updated
|
||||
}
|
||||
else {
|
||||
$item->date = $updated ?: $published;
|
||||
|
@ -164,7 +164,7 @@ abstract class Parser
|
||||
// Id generation can use the item url/title/content (order is important)
|
||||
$this->findItemId($entry, $item, $feed);
|
||||
|
||||
$this->findItemDate($entry, $item);
|
||||
$this->findItemDate($entry, $item, $feed);
|
||||
$this->findItemEnclosure($entry, $item, $feed);
|
||||
$this->findItemLanguage($entry, $item, $feed);
|
||||
|
||||
@ -532,9 +532,10 @@ abstract class Parser
|
||||
*
|
||||
* @access public
|
||||
* @param SimpleXMLElement $entry Feed item
|
||||
* @param \PicoFeed\Parser\Item $item Item object
|
||||
* @param Item $item Item object
|
||||
* @param \PicoFeed\Parser\Feed $feed Feed object
|
||||
*/
|
||||
public abstract function findItemDate(SimpleXMLElement $entry, Item $item);
|
||||
public abstract function findItemDate(SimpleXMLElement $entry, Item $item, Feed $feed);
|
||||
|
||||
/**
|
||||
* Find the item content
|
||||
|
@ -142,9 +142,10 @@ class Rss20 extends Parser
|
||||
*
|
||||
* @access public
|
||||
* @param SimpleXMLElement $entry Feed item
|
||||
* @param \PicoFeed\Parser\Item $item Item object
|
||||
* @param Item $item Item object
|
||||
* @param \PicoFeed\Parser\Feed $feed Feed object
|
||||
*/
|
||||
public function findItemDate(SimpleXMLElement $entry, Item $item)
|
||||
public function findItemDate(SimpleXMLElement $entry, Item $item, Feed $feed)
|
||||
{
|
||||
$date = XmlParser::getNamespaceValue($entry, $this->namespaces, 'date');
|
||||
|
||||
@ -156,7 +157,7 @@ class Rss20 extends Parser
|
||||
$date = (string) $entry->pubDate;
|
||||
}
|
||||
|
||||
$item->date = $this->date->getDateTime($date);
|
||||
$item->date = empty($date) ? $feed->getDate() : $this->date->getDateTime($date);
|
||||
}
|
||||
|
||||
/**
|
||||
|
15
vendor/fguillot/picofeed/lib/PicoFeed/Rules/dailyjs.com.php
vendored
Executable file
15
vendor/fguillot/picofeed/lib/PicoFeed/Rules/dailyjs.com.php
vendored
Executable file
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
return array(
|
||||
'test_url' => 'http://dailyjs.com/2014/08/07/p5js/',
|
||||
'body' => array(
|
||||
'//div[@id="post"]',
|
||||
),
|
||||
'strip' => array(
|
||||
'//h2[@class="post"]',
|
||||
'//div[@class="meta"]',
|
||||
'//*[contains(@class, "addthis_toolbox")]',
|
||||
'//*[contains(@class, "addthis_default_style")]',
|
||||
'//*[@class="navigation small"]',
|
||||
'//*[@id="related"]',
|
||||
)
|
||||
);
|
12
vendor/fguillot/picofeed/lib/PicoFeed/Rules/putaindecode.fr.php
vendored
Executable file
12
vendor/fguillot/picofeed/lib/PicoFeed/Rules/putaindecode.fr.php
vendored
Executable file
@ -0,0 +1,12 @@
|
||||
<?php
|
||||
return array(
|
||||
'test_url' => 'http://putaindecode.fr/posts/js/etat-lieux-js-modulaire-front/',
|
||||
'body' => array(
|
||||
'//*[@class="putainde-Post-md"]',
|
||||
),
|
||||
'strip' => array(
|
||||
'//*[contains(@class, "inlineimg")]',
|
||||
'//*[contains(@class, "comment-respond")]',
|
||||
'//header'
|
||||
)
|
||||
);
|
@ -2,8 +2,16 @@
|
||||
return array(
|
||||
'test_url' => 'http://www.developpez.com/actu/81757/Mozilla-annonce-la-disponibilite-de-Firefox-36-qui-passe-au-HTTP-2-et-permet-la-synchronisation-de-son-ecran-d-accueil/',
|
||||
'body' => array(
|
||||
'//div[@itemprop="articleBody"]',
|
||||
'//*[@itemprop="articleBody"]',
|
||||
),
|
||||
'strip' => array(
|
||||
'//form',
|
||||
'//div[@class="content"]/img',
|
||||
'//a[last()]/following-sibling::*',
|
||||
'//*[contains(@class,"actuTitle")]',
|
||||
'//*[contains(@class,"date")]',
|
||||
'//*[contains(@class,"inlineimg")]',
|
||||
'//*[@id="signaler"]',
|
||||
'//*[@id="signalerFrame"]',
|
||||
)
|
||||
);
|
@ -124,6 +124,10 @@ class AtomParserTest extends PHPUnit_Framework_TestCase
|
||||
$parser = new Atom(file_get_contents('tests/fixtures/atomsample.xml'));
|
||||
$feed = $parser->execute();
|
||||
$this->assertEquals(1071340202, $feed->getDate()->getTimestamp(), '', 1);
|
||||
|
||||
$parser = new Atom(file_get_contents('tests/fixtures/duesseldorf_lokalzeit.rdf'));
|
||||
$feed = $parser->execute();
|
||||
$this->assertEquals('2015-01-05', $feed->getDate()->format('Y-m-d'));
|
||||
}
|
||||
|
||||
public function testFeedLanguage()
|
||||
@ -193,6 +197,11 @@ class AtomParserTest extends PHPUnit_Framework_TestCase
|
||||
|
||||
public function testItemDate()
|
||||
{
|
||||
$parser = new Atom(file_get_contents('tests/fixtures/duesseldorf_lokalzeit.rdf'));
|
||||
$feed = $parser->execute();
|
||||
$this->assertNotEmpty($feed->items);
|
||||
$this->assertEquals('2015-01-05', $feed->items[4]->getDate()->format('Y-m-d'));
|
||||
|
||||
$parser = new Atom(file_get_contents('tests/fixtures/atom.xml'));
|
||||
$feed = $parser->execute();
|
||||
$this->assertNotEmpty($feed->items);
|
||||
|
@ -12,6 +12,7 @@ class DateParserTest extends PHPUnit_Framework_TestCase
|
||||
|
||||
date_default_timezone_set('UTC');
|
||||
|
||||
$this->assertEquals('2013-04-12', $parser->getDateTime('Fri, 12 Apr 2013 15:38:15 +0000')->format('Y-m-d'));
|
||||
$this->assertEquals(1359066183, $parser->getDateTime('Thu, 24 Jan 2013 22:23:03 +0000')->getTimestamp(), '', 1);
|
||||
$this->assertEquals(1362992761, $parser->getDateTime('2013-03-11T09:06:01+00:00')->getTimestamp(), '', 1);
|
||||
$this->assertEquals(1363752990, $parser->getDateTime('2013-03-20T04:16:30+00:00')->getTimestamp(), '', 1);
|
||||
|
@ -172,12 +172,12 @@ class Rss20ParserTest extends PHPUnit_Framework_TestCase
|
||||
$parser = new Rss20(file_get_contents('tests/fixtures/rss20.xml'));
|
||||
$feed = $parser->execute();
|
||||
$this->assertNotEmpty($feed->items);
|
||||
$this->assertEquals(1357006940, $feed->items[1]->getDate()->getTimestamp());
|
||||
$this->assertEquals('2013-01-01', $feed->items[1]->getDate()->format('Y-m-d'));
|
||||
|
||||
$parser = new Rss20(file_get_contents('tests/fixtures/fulltextrss.xml'));
|
||||
$feed = $parser->execute();
|
||||
$this->assertNotEmpty($feed->items);
|
||||
$this->assertEquals(1365781095, $feed->items[0]->getDate()->getTimestamp());
|
||||
$this->assertEquals('2013-04-12', $feed->items[0]->getDate()->format('Y-m-d'));
|
||||
}
|
||||
|
||||
public function testItemLanguage()
|
||||
|
111
vendor/fguillot/picofeed/tests/fixtures/duesseldorf_lokalzeit.rdf
vendored
Normal file
111
vendor/fguillot/picofeed/tests/fixtures/duesseldorf_lokalzeit.rdf
vendored
Normal file
@ -0,0 +1,111 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<title>Studio Düsseldorf - NRW-Studios WDR</title>
|
||||
<link rel="alternate" type="text/html" href="http://www1.wdr.de/studio/duesseldorf/studioduesseldorf-homepage100.html" />
|
||||
<link rel="self" href="http://www1.wdr.de/studio/duesseldorf/studioduesseldorf-homepage100.feed" />
|
||||
<updated>2015-01-05T08:18:00Z</updated>
|
||||
<dc:date>2015-01-05T08:18:00Z</dc:date>
|
||||
<entry>
|
||||
<title>Lokalzeit aus Düsseldorf: Unsere Themen am Montag, 02.03.2015</title>
|
||||
<link rel="alternate" href="http://www1.wdr.de/studio/duesseldorf/lokalzeit/studioduesseldorf-lokalzeit100.html" />
|
||||
<author>
|
||||
<name>NRW-Studios</name>
|
||||
</author>
|
||||
<id>http://www1.wdr.de/studio/duesseldorf/lokalzeit/studioduesseldorf-lokalzeit100.html</id>
|
||||
<updated>2015-02-05T11:15:00Z</updated>
|
||||
<published>2015-02-05T11:15:00Z</published>
|
||||
<content type="html">Umstrittene Dügida-Urteile<br/><br/>Ein preisgekröntes Fachwerkhaus</content>
|
||||
<summary>Umstrittene Dügida-UrteileEin preisgekröntes Fachwerkhaus</summary>
|
||||
<dc:creator>NRW-Studios</dc:creator>
|
||||
<dc:date>2015-02-05T11:15:00Z</dc:date>
|
||||
<dc:type>Nachricht</dc:type>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>Neues Kennzeichen im Kreis Viersen: Großes Interesse an „KK“</title>
|
||||
<link rel="alternate" href="http://www1.wdr.de/studio/duesseldorf/themadestages/kennzeichen-kreis-viersen100.html" />
|
||||
<author>
|
||||
<name>NRW-Studios</name>
|
||||
</author>
|
||||
<id>http://www1.wdr.de/studio/duesseldorf/themadestages/kennzeichen-kreis-viersen100.html</id>
|
||||
<updated>2015-03-02T09:01:00Z</updated>
|
||||
<published>2015-03-02T09:01:00Z</published>
|
||||
<content type="html">Bürger im Kreis Viersen können ihre Autos ab sofort wieder mit dem früheren Kennzeichen KK zulassen. Rund 7.000 Mal sind bereits im Vorfeld Wunschkennzeichen reserviert worden. Am Morgen bildeten sich vor dem Straßenverkehrsamt in Kempen bereits längere Schlangen.</content>
|
||||
<summary>Bürger im Kreis Viersen können ihre Autos ab sofort wieder mit dem früheren Kennzeichen KK zulassen. Rund 7.000 Mal sind bereits im Vorfeld Wunschkennzeichen reserviert worden. Am Morgen bildeten sich vor dem Straßenverkehrsamt in Kempen bereits längere Schlangen.</summary>
|
||||
<dc:creator>NRW-Studios</dc:creator>
|
||||
<dc:date>2015-03-02T09:01:00Z</dc:date>
|
||||
<dc:type>Nachricht</dc:type>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>Tarifstreit: Eine Woche voller Streiks</title>
|
||||
<link rel="alternate" href="http://www1.wdr.de/studio/essen/themadestages/streikwoche100.html" />
|
||||
<author>
|
||||
<name>NRW-Studios</name>
|
||||
</author>
|
||||
<id>http://www1.wdr.de/studio/essen/themadestages/streikwoche100.html</id>
|
||||
<updated>2015-03-02T13:15:00Z</updated>
|
||||
<published>2015-03-02T13:15:00Z</published>
|
||||
<content type="html">Geduld ist in dieser Woche an vielen Krankenhäusern, aber auch an Gerichten und bei Behörden im Ruhrgebiet gefragt. Die Gewerkschaft ver.di hat die Angestellten im öffentlichen Dienst zu Warnstreiks aufgerufen. Von morgen an legen auch angestellte Lehrer ihre Arbeit nieder.</content>
|
||||
<summary>Geduld ist in dieser Woche an vielen Krankenhäusern, aber auch an Gerichten und bei Behörden im Ruhrgebiet gefragt. Die Gewerkschaft ver.di hat die Angestellten im öffentlichen Dienst zu Warnstreiks aufgerufen. Von morgen an legen auch angestellte Lehrer ihre Arbeit nieder.</summary>
|
||||
<dc:creator>NRW-Studios</dc:creator>
|
||||
<dc:date>2015-03-02T13:15:00Z</dc:date>
|
||||
<dc:type>Nachricht</dc:type>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>Die neue WDR-App macht vieles möglich: Filme gucken, Bilder schicken</title>
|
||||
<link rel="alternate" href="http://www1.wdr.de/studio/duesseldorf/themadestages/wdr-app100.html" />
|
||||
<author>
|
||||
<name>NRW-Studios</name>
|
||||
</author>
|
||||
<id>http://www1.wdr.de/studio/duesseldorf/themadestages/wdr-app100.html</id>
|
||||
<updated>2015-02-13T15:06:00Z</updated>
|
||||
<published>2015-02-13T15:06:00Z</published>
|
||||
<content type="html">Mit der neuen WDR-App können Sie Fotos, Videos, Texte und Audio-Aufnahmen direkt an den WDR schicken. Und: Holen Sie sich alle WDR Hörfunkprogramme und das WDR Fernsehen auf Ihr Smartphone oder Tablet!</content>
|
||||
<summary>Mit der neuen WDR-App können Sie Fotos, Videos, Texte und Audio-Aufnahmen direkt an den WDR schicken. Und: Holen Sie sich alle WDR Hörfunkprogramme und das WDR Fernsehen auf Ihr Smartphone oder Tablet!</summary>
|
||||
<dc:creator>NRW-Studios</dc:creator>
|
||||
<dc:date>2015-02-13T15:06:00Z</dc:date>
|
||||
<dc:type>Nachricht</dc:type>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>Die Lokalzeit Düsseldorf bei Facebook: Bleiben Sie mit uns in Kontakt!</title>
|
||||
<link rel="alternate" href="https://www.facebook.com/wdrlokalzeitduesseldorf" />
|
||||
<author>
|
||||
<name>NRW-Studios</name>
|
||||
</author>
|
||||
<id>https://www.facebook.com/wdrlokalzeitduesseldorf</id>
|
||||
<content type="html">Halb acht am Abend, von Montag bis Freitag - ihre Lokalzeit aus Düsseldorf. Alles Wichtige vom Tag gibt’s bei uns. Über die Themen aus Düsseldorf und der Region diskutieren wir mit Ihnen außerdem auf unserer Facebook-Seite.</content>
|
||||
<summary>Halb acht am Abend, von Montag bis Freitag - ihre Lokalzeit aus Düsseldorf. Alles Wichtige vom Tag gibt’s bei uns. Über die Themen aus Düsseldorf und der Region diskutieren wir mit Ihnen außerdem auf unserer Facebook-Seite.</summary>
|
||||
<dc:creator>NRW-Studios</dc:creator>
|
||||
<dc:type>Nachricht</dc:type>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>Beiträge aus dem Studio Düsseldorf: Ihre Region im Überblick</title>
|
||||
<link rel="alternate" href="http://www1.wdr.de/studio/duesseldorf/themadestages/archiv/themadestages-duesseldorf104.html" />
|
||||
<author>
|
||||
<name>NRW-Studios</name>
|
||||
</author>
|
||||
<id>http://www1.wdr.de/studio/duesseldorf/themadestages/archiv/themadestages-duesseldorf104.html</id>
|
||||
<updated>2015-01-19T08:58:00Z</updated>
|
||||
<published>2015-01-19T08:58:00Z</published>
|
||||
<content type="html">Hier finden Sie die wichtigsten Themen, über die wir in den vergangenen Tagen und Wochen berichtet haben, nochmal zum Nachlesen, - hören und -schauen.</content>
|
||||
<summary>Hier finden Sie die wichtigsten Themen, über die wir in den vergangenen Tagen und Wochen berichtet haben, nochmal zum Nachlesen, - hören und -schauen.</summary>
|
||||
<dc:creator>NRW-Studios</dc:creator>
|
||||
<dc:date>2015-01-19T08:58:00Z</dc:date>
|
||||
<dc:type>Nachricht</dc:type>
|
||||
</entry>
|
||||
<entry>
|
||||
<title>Alles tanzt - rund um Düsseldorf: Die schönsten Bilder und Videos</title>
|
||||
<link rel="alternate" href="http://www1.wdr.de/studio/duesseldorf/lokalzeit/studioduesseldorf_tanzaktion100.html" />
|
||||
<author>
|
||||
<name>NRW-Studios</name>
|
||||
</author>
|
||||
<id>http://www1.wdr.de/studio/duesseldorf/lokalzeit/studioduesseldorf_tanzaktion100.html</id>
|
||||
<updated>2013-11-22T15:55:00Z</updated>
|
||||
<published>2013-11-22T15:55:00Z</published>
|
||||
<content type="html">In unserer Weihnachtsaktion wollten wir mit Ihnen gemeinsam tanzen. Sie haben mitgemacht und uns dabei wirklich beeindruckt! Eishockeyspieler, Gärtner, Rollkunstläufer oder Busfahrer - alle haben sie zusammen mit unserer Reporterin Regina Bremer getanzt.</content>
|
||||
<summary>In unserer Weihnachtsaktion wollten wir mit Ihnen gemeinsam tanzen. Sie haben mitgemacht und uns dabei wirklich beeindruckt! Eishockeyspieler, Gärtner, Rollkunstläufer oder Busfahrer - alle haben sie zusammen mit unserer Reporterin Regina Bremer getanzt.</summary>
|
||||
<dc:creator>NRW-Studios</dc:creator>
|
||||
<dc:date>2013-11-22T15:55:00Z</dc:date>
|
||||
<dc:type>Nachricht</dc:type>
|
||||
</entry>
|
||||
</feed>
|
||||
|
Loading…
Reference in New Issue
Block a user