[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