Problem beim Import von RSS-Feed: Doppelter Text / Datum

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
Post Reply
nicoz
Posts: 2
Joined: Mon Nov 14, 2005 4:52 pm

Problem beim Import von RSS-Feed: Doppelter Text / Datum

Post by nicoz »

Hallo zusammen,

ich möchte von Pivot auf Serendipity umsteigen und habe dafür in Pivot alle Einträge als RSS-Feed exportiert. Wenn ich diesen Feed in Serendipity importiere, habe ich folgende Probleme:

- Als Datum wird für jeden Eintrag das aktuelle Datum verwendet.
- Teilweise ist der Text der Postings doppelt (einmal aus dem "<description>"-Feld und einmal aus dem "<content:encoded>"-Feld).

Die RSS-Datei, die ich importieren möchte: http://www.nicozorn.com/anzeigen/feed.xml

Hat jemand eine Idee?

Danke und Grüße

Nico
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: Problem beim Import von RSS-Feed: Doppelter Text / Datum

Post by garvinhicking »

Hi Nico!

Schön Dich hier zu treffen :)

Der RSS-Import ist generell mit ein paar Problemen versehen, da gerade das von Dir benannte content:encoded vs. description schwierig zu entschlüsseln ist. Jedes blog nutzt da quasi seinen eigenen Algorithmus.

Das einfachste wäre es, dein <description> tag aus dem RSS-Feed zu entfernen, und nur content:encoded zu übernehmen. Im Serendipity-Code wird durch folgenden Code versucht rauszufinden, ob description etwas eigenständiges ist, oder als Teaser verwendet wurde:

Code: Select all

            if ($testbody != substr(trim(strip_tags($item['content:encoded'])), 0, strlen($testbody))) {
                $data .= $this->decode($item['content:encoded']);
            } else {
                $data = $this->decode($item['content:encoded']);
            }
Dieser block in include/admin/importers/generic.inc.php bewirkt also, ob content:encoded angehangen wird, oder ob er ersetzt. Du kannst diese Datei natürlich auch temporär editieren und oberes ersetzen durch:

Code: Select all

$data = $this->decode($item['content:encoded']);
Dann verwirft s9y selbständig immer das unnötige description, was in deinem Fall keine HTML-Tags enthält.

Das Parsing des Timecodes war auf negative Timezones vorbereitet, in selber Datei:

Code: Select all

            if (preg_match('@^([0-9]{4})\-([0-9]{2})\-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})[\-\+]([0-9]{2}):([0-9]{2})$@', isset($item['pubdate']) ? $item['pubdate'] : $item['dc:date'], $timematch)) {
Wenn Du da in der Mitte des regulären Ausdrucks das "\-" ersetzt durch "[\-\+]" müsste bei Dir auch das Datum korrekt konvertiert werden. Das habe ich auch gerade in unserem Repository gefixt, vielen Dank.

Pivot hat ja glaube ich keine Datenbank, sondern ein eigenes Textformat, richtig? Sonst könnte man überlegen, ob man mit einem anderen Importer da schneller zur Sache käme...

Viele Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
nicoz
Posts: 2
Joined: Mon Nov 14, 2005 4:52 pm

Re: Problem beim Import von RSS-Feed: Doppelter Text / Datum

Post by nicoz »

Hi Garvin,

vielen Dank für Deine schnelle Antwort und für die Tipps, das werde ich gleich mal ausprobieren!
garvinhicking wrote:Hi Nico!

Pivot hat ja glaube ich keine Datenbank, sondern ein eigenes Textformat, richtig? Sonst könnte man überlegen, ob man mit einem anderen Importer da schneller zur Sache käme...
Yep, Pivot verwendet keine Datenbank - einer der Gründe, weshalb ich umsteigen möchte ;-)

Danke und Grüße

Nico
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: Problem beim Import von RSS-Feed: Doppelter Text / Datum

Post by garvinhicking »

Okay, so langsam kommt meine Erinnerung an Pivot zurück, als ich damals ein paar Importer schrieb. Das Format war mir nicht sofort zugänglich und etwas blöd zu parsen, meine ich. Vielleicht kommst du also mit dem RSS Parsing so schon weiter. Ansonsten stehe ich gerne zur Verfügung!

Viele Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
Guest

Re: Problem beim Import von RSS-Feed: Doppelter Text / Datum

Post by Guest »

Hallo Garvin,
garvinhicking wrote:Hi Nico!

Wenn Du da in der Mitte des regulären Ausdrucks das "\-" ersetzt durch "[\-\+]" müsste bei Dir auch das Datum korrekt konvertiert werden. Das habe ich auch gerade in unserem Repository gefixt, vielen Dank.


Viele Grüße,
Garvin
das unnötige description habe ich erfolgreich entfernt, aber mit dem Datum komme ich nicht weiter: Ich habe jetzt das Problem, dass einige Postings in der Zukunft liegen (2006, 2007 etc.). Hast Du noch eine Idee wie ich das beheben kann?

Danke und Grüße

Nico
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: Problem beim Import von RSS-Feed: Doppelter Text / Datum

Post by garvinhicking »

Ah, danke für das finden dieses Bugs :) "Monat" und "Tag" waren im Parsing vertauscht. Wenn Du mal folgendes suchst:

Code: Select all

                $entry['timestamp'] = mktime($timematch[4] - $timematch[7], $timematch[5] - $timematch[8], $timematch[6], $timematch[3], $timematch[2], $timematch[1]);
und dann timematch 3 und 2 vertauschst:

Code: Select all

                $entry['timestamp'] = mktime($timematch[4] - $timematch[7], $timematch[5] - $timematch[8], $timematch[6], $timematch[2], $timematch[3], $timematch[1]);
dann sollte es korrekt klappen. Der Code wird sowieso nur ausgeführt, wenn PHPs strtotime() fehlschlägt, und weil das recht selten ist, ist es bisher wohl nicht aufgefallen.

Vielen Dank und Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
Post Reply