int SongMetaData_parse_DIDL(struct SongMetaData *object, const char *xml) {
	struct xmldoc *doc = xmldoc_parsexml(xml);
	if (doc == NULL)
		return 0;

	// ... did I mention that I hate navigating XML documents ?
	struct xmlelement *didl_node = find_element_in_doc(doc, "DIDL-Lite");
	if (didl_node == NULL)
		return 0;

	struct xmlelement *item_node = find_element_in_element(didl_node,
							       "item");
	if (item_node == NULL)
		return 0;

	struct xmlelement *value_node = NULL;
	value_node = find_element_in_element(item_node, "dc:title");
	if (value_node) object->title = get_node_value(value_node);

	value_node = find_element_in_element(item_node, "upnp:artist");
	if (value_node) object->artist = get_node_value(value_node);

	value_node = find_element_in_element(item_node, "upnp:album");
	if (value_node) object->album = get_node_value(value_node);

	value_node = find_element_in_element(item_node, "upnp:genre");
	if (value_node) object->genre = get_node_value(value_node);

	xmldoc_free(doc);
	return 1;
}
Ejemplo n.º 2
0
char * output_get_grouprole(void)
{
	char *grouprole = NULL;
	struct xmldoc *doc = xmldoc_fromdoc(RENDERXML);
	if(doc){
		struct xmlelement *render_node = find_element_in_doc(doc, "Gmediarender");
		struct xmlelement *group_node = find_element_in_element(render_node, "Group");
		struct xmlelement *value_node = find_element_in_element(group_node, "GroupRole");
		grouprole = get_node_value(value_node);
		xmldoc_free(doc);
	}
	return grouprole;
}
Ejemplo n.º 3
0
int output_set_grouprole(const char*grouprole)
{
	int ret = -1;
	struct xmldoc *doc = xmldoc_fromdoc(RENDERXML);
	char *xmlstring;
	if(doc){
		struct xmlelement *render_node = find_element_in_doc(doc, "Gmediarender");
		struct xmlelement *group_node = find_element_in_element(render_node, "Group");
		struct xmlelement *value_node = find_element_in_element(group_node, "GroupRole");
		if(value_node)
			ret = set_node_value(value_node, grouprole);
		xmlstring = xmldoc_tostring(doc);
		xmlstringtofile(RENDERXML, xmlstring);
		xmldoc_free(doc);
		free(xmlstring);
	}
	return ret;

}