예제 #1
0
void
soap_encode_arg(htsbuf_queue_t *xml, htsmsg_field_t *f)
{
  switch(f->hmf_type) {
  case HMF_S64:
    htsbuf_qprintf(xml, "<%s>%"PRId64"</%s>",
		   f->hmf_name, f->hmf_s64, f->hmf_name);
    break;
      
  case HMF_STR:
    if(f->hmf_str[0] == 0) {
      htsbuf_qprintf(xml, "<%s/>", f->hmf_name);
      break;
    }

    htsbuf_qprintf(xml, "<%s>", f->hmf_name);
    htsbuf_append_and_escape_xml(xml, f->hmf_str);
    htsbuf_qprintf(xml, "</%s>", f->hmf_name);
    break;
  default:
    break;
  }
}
예제 #2
0
static char *
build_didl(const char *myhost, int myport)
{
  htsbuf_queue_t hq;

  htsbuf_queue_init(&hq, 0);

  htsbuf_qprintf(&hq,
		 "<DIDL-Lite xmlns=\"urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/\" "
		 "xmlns:dc=\"http://purl.org/dc/elements/1.1/\" "
		 "xmlns:dlna=\"urn:schemas-dlna-org:metadata-1-0\" "
		 "xmlns:pv=\"http://www.pv.com/pvns/\" "
		 "xmlns:upnp=\"urn:schemas-upnp-org:metadata-1-0/upnp/\">"
		 "<item id=\"101\" parentID=\"100\" restricted=\"0\">"
		 "<upnp:class xmlns:upnp=\"urn:schemas-upnp-org:metadata-1-0/upnp/\">object.item.audioItem.musicTrack</upnp:class>");

  if(upnp_current_title) {
    htsbuf_qprintf(&hq,
		   "<dc:title xmlns:dc=\"http://purl.org/dc/elements/1.1/\">");
    htsbuf_append_and_escape_xml(&hq, upnp_current_title);
    htsbuf_qprintf(&hq, "</dc:title>");
  }


  if(upnp_current_artist) {
    htsbuf_qprintf(&hq,
		   "<upnp:artist xmlns:upnp=\"urn:schemas-upnp-org:metadata-1-0/upnp/\">");
    htsbuf_append_and_escape_xml(&hq, upnp_current_artist);
    htsbuf_qprintf(&hq, "</upnp:artist>");
  }
  


  if(upnp_current_album) {
    htsbuf_qprintf(&hq,
		   "<upnp:album xmlns:upnp=\"urn:schemas-upnp-org:metadata-1-0/upnp/\">");
    htsbuf_append_and_escape_xml(&hq, upnp_current_album);
    htsbuf_qprintf(&hq, "</upnp:album>");
  }

  if(upnp_current_album_art) {

    char url[URL_MAX];
    const char *arturl;

    if(strncmp(upnp_current_album_art, "http://", strlen("http://"))) {
      snprintf(url, sizeof(url), "http://%s:%d/api/image/%s",
	       myhost, myport, upnp_current_album_art);
      arturl = url;
    } else {
      arturl = upnp_current_album_art;
    }

    htsbuf_qprintf(&hq,
		   "<upnp:albumArtURI xmlns:upnp=\"urn:schemas-upnp-org:metadata-1-0/upnp/\">");
    htsbuf_append_and_escape_xml(&hq, arturl);
    htsbuf_qprintf(&hq, "</upnp:albumArtURI>");
  }
  
  htsbuf_qprintf(&hq, "</item></DIDL-Lite>");

  return htsbuf_to_string(&hq);
}
예제 #3
0
파일: xmltv.c 프로젝트: dkonerma/tvheadend
  struct tm tm;
  /* 20140817060000 +0200 */
  strftime(dst, 32, "%Y%m%d%H%M%S %z", localtime_r(&t, &tm));
}

/*
 *
 */
static void
http_xmltv_begin(htsbuf_queue_t *hq)
{
  htsbuf_append_str(hq, "\
<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n\
<!DOCTYPE tv SYSTEM \"xmltv.dtd\">\n\
<tv generator-info-name=\"TVHeadend-");
  htsbuf_append_and_escape_xml(hq, tvheadend_version);
  htsbuf_append_str(hq, "\" source-info-name=\"tvh-");
  htsbuf_append_and_escape_xml(hq, config_get_server_name());
  htsbuf_append_str(hq, "\">\n");
}

/*
 *
 */
static void
http_xmltv_end(htsbuf_queue_t *hq)
{
  htsbuf_append_str(hq, "</tv>\n");
}

/*