[ekg2-commit] ekg2: feed.c (HEAD) rss.c (HEAD) [darkjames]
CVS commit
cvs w amba.bydg.pdi.net
Sob, 24 Lut 2007, 15:34:37 CET
Module name: ekg2
Changes by: darkjames 07/02/24 15:34:33
Modified files:
feed.c rss.c
Log message:
fast implementation of rdf:RDF
Index: feed.c
===================================================================
RCS file: /home/cvs/ekg2/plugins/feed/feed.c,v
diff -d -u -r1.19 -r1.20
--- feed.c 16 Dec 2006 12:59:31 -0000 1.19
+++ feed.c 24 Feb 2007 14:34:32 -0000 1.20
@@ -184,7 +184,7 @@
if ((value = xstrchr(tmp, ' '))) *value = 0;
if (dheaders && !xstrstr(dheaders, tmp)) {
-/* debug("DHEADER: %s=%s\n", tmp, value+1); */
+/* debug("DHEADER: %s=%s\n", tmp, value+1); */
continue; /* jesli mamy display_headers a tego nie mamy na liscie to pomijamy */
}
@@ -287,7 +287,7 @@
plugin_var_add(&feed_plugin, "display_mode", VAR_INT, "3", 0, NULL);
plugin_var_add(&feed_plugin, "display_headers", VAR_STR,
/* RSS: */
- "pubDate: author: "
+ "pubDate: author: dc:creator: dc:date:"
/* NNTP: */
"From: Date: Newsgroups: Subject: User-Agent: NNTP-Posting-Host:",
0, NULL);
@@ -322,9 +322,13 @@
format_add("feed_message_footer", _("%g|+=%G----- End of message...%n\n"), 1);
/* %1 - tag %2 - value */
+/* rss: */
format_add("feed_message_header_generic", _("%r %1 %W%2"), 1);
format_add("feed_message_header_pubDate:", _("%r Napisano: %W%2"), 1);
format_add("feed_message_header_author:", _("%r Autor: %W%2"), 1);
+/* rdf: */
+ format_add("feed_message_header_dc:date:", _("%r Napisano: %W%2"), 1);
+ format_add("feed_message_header_dc:creator:", _("%r Autor: %W%2"), 1);
format_add("feed_server_header_generic", _("%m %1 %W%2"), 1);
Index: rss.c
===================================================================
RCS file: /home/cvs/ekg2/plugins/feed/rss.c,v
diff -d -u -r1.19 -r1.20
--- rss.c 22 Feb 2007 21:23:27 -0000 1.19
+++ rss.c 24 Feb 2007 14:34:32 -0000 1.20
@@ -551,6 +551,50 @@
debug("rss_parsexml_atom() sorry, atom not implemented\n");
}
+static void rss_parsexml_rdf(rss_feed_t *f, xmlnode_t *node) {
+ rss_channel_t *chan;
+
+ debug("rss_parsexml_rdf (channels oldcount: %d)\n", list_count(f->rss_channels));
+ debug_error("XXX http://web.resource.org/rss/1.0/");
+
+ chan = rss_channel_find(f, /* chanlink, chantitle, chandescr, chanlang */ "", "", "", "");
+
+ for (; node; node = node->next) {
+ if (!xstrcmp(node->name, "channel")) {
+ /* DUZE XXX */
+
+
+ } else if (!xstrcmp(node->name, "item")) {
+ const char *itemtitle = NULL;
+ const char *itemdescr = NULL;
+ const char *itemlink = NULL;
+
+ xmlnode_t *subnode;
+ rss_item_t *item;
+ string_t tmp = string_init(NULL);
+
+ for (subnode = node->children; subnode; subnode = subnode->next) {
+ if (!xstrcmp(subnode->name, "title")) itemtitle = subnode->data->str;
+ else if (!xstrcmp(subnode->name, "link")) itemlink = subnode->data->str;
+ else if (!xstrcmp(subnode->name, "description"))itemdescr = subnode->data->str;
+ else { /* other, format tag: value\n */
+/* debug("rss_parsexml_rdf RDF->ITEMS: %s\n", subnode->name); */
+ string_append(tmp, subnode->name);
+ string_append(tmp, ": ");
+ string_append(tmp, subnode->data->str);
+ string_append_c(tmp, '\n');
+ }
+ }
+ item = rss_item_find(chan, itemlink, itemtitle, itemdescr);
+
+ string_free(item->other_tags, 1);
+ item->other_tags = tmp;
+
+
+ } else debug("rss_parsexml_rdf RSS: %s\n", node->name);
+ }
+}
+
static void rss_parsexml_rss(rss_feed_t *f, xmlnode_t *node) {
debug("rss_parsexml_rss (channels oldcount: %d)\n", list_count(f->rss_channels));
@@ -645,6 +689,7 @@
for (node = priv->node; node; node = node->next) {
if (!xstrcmp(node->name, "rss")) rss_parsexml_rss(f, node->children);
else if (!xstrcmp(node->name, "feed")) rss_parsexml_atom(f, node->children); /* xmlns */
+ else if (!xstrcmp(node->name, "rdf:RDF")) rss_parsexml_rdf(f, node->children);
else {
debug("UNKNOWN node->name: %s\n", node->name);
goto fail;
Więcej informacji o liście dyskusyjnej ekg2-commit