public void addDidlNodes(DIDLContent didl, JSONArray browse) throws JSONException {
    for (int i = 0; i < browse.length(); i++) {
      JSONObject obj = browse.getJSONObject(i);
      String url = obj.getString("browse");
      String label = obj.getString("name");
      String thumbnail = obj.optString("image");
      String type = obj.optString("type");

      Integer subCount = Integer.parseInt(obj.optString("count", "10"));

      // Hack so we can easily get container label in request for metadata.
      try {
        url += "&label=" + URLEncoder.encode(label, "UTF-8");
      } catch (UnsupportedEncodingException e) {
      }

      // TODO: Use Album/Artist containers where appropriate. Check "type" field.
      // Container folder = new StorageFolder(url,"0",label,"Me", subCount, storageUsed);
      DIDLObject.Class containerClass;
      if (type == null) type = "";

      type = type.toLowerCase();
      if (type.equals("album")) {
        containerClass = MusicAlbum.CLASS;
      } else if (type.equals("artist")) {
        containerClass = ARTIST_CLASS;
      } else if (type.equals("genre")) {
        containerClass = MusicGenre.CLASS;
      } else {
        containerClass = CONTAINER_CLASS;
      }

      Container folder = new Container(url, "0", label, "System", containerClass, subCount);
      String playlist = obj.optString("playlink");
      if (playlist != null && playlist.length() > 0) {
        MimeType mimeType = new MimeType("audio", "m3u");
        Res res = new Res();
        res.setProtocolInfo(new ProtocolInfo(mimeType));
        res.setValue(playlist);
        folder.addResource(res);

        if (thumbnail != null && thumbnail.length() > 0) {
          try {
            URI uri = new URI(thumbnail);
            ALBUM_ART_URI albumArt = new ALBUM_ART_URI(uri);
            // TODO: DLNA requires xml attribute:
            // dlna:profileID="JPEG_TN" for jpeg thumbnails.
            folder.addProperty(albumArt);
          } catch (URISyntaxException e) {
            Log.w(TAG, "Found album art but bad URI", e);
          }
        }
      }
      didl.addContainer(folder);
    }
  }