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
Problem beim Import von RSS-Feed: Doppelter Text / Datum
-
- 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
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:
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:
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:
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
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']);
}
Code: Select all
$data = $this->decode($item['content:encoded']);
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)) {
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/
# 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/
Re: Problem beim Import von RSS-Feed: Doppelter Text / Datum
Hi Garvin,
vielen Dank für Deine schnelle Antwort und für die Tipps, das werde ich gleich mal ausprobieren!
Danke und Grüße
Nico
vielen Dank für Deine schnelle Antwort und für die Tipps, das werde ich gleich mal ausprobieren!
Yep, Pivot verwendet keine Datenbank - einer der Gründe, weshalb ich umsteigen möchtegarvinhicking 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...
Danke und Grüße
Nico
-
- 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
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
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/
# 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/
Re: Problem beim Import von RSS-Feed: Doppelter Text / Datum
Hallo Garvin,
Danke und Grüße
Nico
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?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
Danke und Grüße
Nico
-
- 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
Ah, danke für das finden dieses Bugs "Monat" und "Tag" waren im Parsing vertauscht. Wenn Du mal folgendes suchst:
und dann timematch 3 und 2 vertauschst:
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
Code: Select all
$entry['timestamp'] = mktime($timematch[4] - $timematch[7], $timematch[5] - $timematch[8], $timematch[6], $timematch[3], $timematch[2], $timematch[1]);
Code: Select all
$entry['timestamp'] = mktime($timematch[4] - $timematch[7], $timematch[5] - $timematch[8], $timematch[6], $timematch[2], $timematch[3], $timematch[1]);
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/
# 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/