evolution-rss r424 - in trunk: . src



Author: lucilanga
Date: Mon Jan 12 09:13:25 2009
New Revision: 424
URL: http://svn.gnome.org/viewvc/evolution-rss?rev=424&view=rev

Log:
2009-01-12  Lucian Langa  <lucilanga gnome org>

* src/parser.c- layer_find_tag_prop
new function for parsing media tag properties

Modified:
   trunk/ChangeLog
   trunk/TODO
   trunk/src/parser.c
   trunk/src/rss.c

Modified: trunk/TODO
==============================================================================
--- trunk/TODO	(original)
+++ trunk/TODO	Mon Jan 12 09:13:25 2009
@@ -45,3 +45,5 @@
     name=<value optimized out>, error=<value optimized out>, 
     emsg=<value optimized out>) at rss.c:273
         * implement right-click in browser
+	* category posted under
+	* coments updatable

Modified: trunk/src/parser.c
==============================================================================
--- trunk/src/parser.c	(original)
+++ trunk/src/parser.c	Mon Jan 12 09:13:25 2009
@@ -417,7 +417,6 @@
 	g_print("syndication\n");
 }
 
-
 gchar *standard_rss_modules[3][3] = {
 	{"content", "content", (gchar *)content_rss},
 	{"dublin core", "dc", (gchar *)dublin_core_rss},
@@ -479,6 +478,56 @@
         return fail;
 }
 
+gchar*
+media_rss(xmlNode *node, gchar *search, gchar *fail)
+{
+	gchar *content;
+	g_print("media_rss()\n");
+
+	content = xmlGetProp(node, search);
+	if (content)
+		return content;
+	else
+		return fail;
+}
+
+gchar *property_rss_modules[1][3] = {
+	{"media", "media", (gchar *)media_rss}};
+
+static char *
+layer_find_tag_prop (xmlNodePtr node,
+            char *match,
+            char *search,
+            char *fail)
+{
+	gchar *content;
+	guint len = 0;
+	int i;
+	char* (*func)();
+
+        while (node!=NULL) {
+#ifdef RDF_DEBUG
+                xmlDebugDumpNode (stdout, node, 32);
+                printf("%s.\n", node->name);
+#endif
+		if (node->ns && node->ns->prefix)
+		{
+			for (i=0; i < 1; i++)
+			{
+				if (!strcasecmp (node->ns->prefix, property_rss_modules[i][1]))
+				{
+					func = (gpointer)property_rss_modules[i][2];
+					if (strcasecmp (node->ns->prefix, match)==0)
+					{
+						g_print("URL:%s\n", func(node, search, fail));
+					}
+				}
+			}
+		}
+                node = node->next;
+	}
+}
+
 static gchar *
 layer_find_innerhtml (xmlNodePtr node,
 	    char *match, char *submatch,
@@ -863,11 +912,19 @@
 			}
 		}
 
-		encl = layer_find_innerelement(el->children, "enclosure", "url",	// RSS 2.0 Enclosure
-			layer_find_innerelement(el->children, "link", "enclosure", NULL)); 		// ATOM Enclosure
+		//<enclosure url=>
+		//handle multiple enclosures
+//		encl = layer_find_innerelement(el->children, "enclosure", "url",	// RSS 2.0 Enclosure
+//			layer_find_innerelement(el->children, "link", "enclosure", NULL)); 		// ATOM Enclosure
+		encl = layer_find_tag_prop(el->children, "media", "url",	// RSS 2.0 Enclosure
+							NULL); 		// ATOM Enclosure
+//		g_print("encl:%s\n", encl);
+//		if (!strcmp(encl, "99"))
+			encl = NULL;
 		//we have to free this somehow
+		//<link></link>
                 char *link = g_strdup(layer_find (el->children, "link", NULL));		//RSS,
-		if (!link) 
+		if (!link) 								// <link href=>
 			link = layer_find_innerelement(el->children, "link", "href", g_strdup(_("No Information")));	//ATOM
 
 		char *id = layer_find (el->children, "id",				//ATOM

Modified: trunk/src/rss.c
==============================================================================
--- trunk/src/rss.c	(original)
+++ trunk/src/rss.c	Mon Jan 12 09:13:25 2009
@@ -1738,6 +1738,7 @@
 			content_colour & 0xEDECEB & 0xffffff,
 			website, subject);
      		camel_stream_printf (fstream, "<tr><td><font colour=#%06x>%s</font></td></tr></table></div>", text_colour & 0xffffff, buff);
+		camel_stream_printf (fstream, "mew<br>");
 	}
 
 	//this is required for proper charset rendering when html



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]