Estoy usando la impresionante biblioteca Cling
para escanear mi red en busca de dispositivos UPnP. Mi objetivo es armar un pequeño explorador de la biblioteca DLNA para que pueda aprender la tecnología. Hasta ahora he podido 1. escanear la red y conectar dispositivos UPnP, 2. escanear cada dispositivo remoto y determinar si tiene un servicio DLNA en ejecución, y 3. explorar los elementos secundarios inmediatos de los nodos conocidos. En resumen, este es mi método que es capaz de ejecutar todo esto:¿Buscar todos los directorios de almacenamiento raíz DLNA en Cling?
public void remoteDeviceAdded(Registry registry, RemoteDevice device) {
logger.debug("remote device added: {}[{}]", device.getDetails().getFriendlyName(),
device.getType().getType());
if (device.getType().getType().equals("MediaServer")) {
for (RemoteService service : device.getServices()) {
if (service.getServiceType().getType().equals("ContentDirectory")) {
// '1' is Music, '2' is Video, '3' is Pictures
this.service.getControlPoint().execute(new Browse(service, "3", BrowseFlag.DIRECT_CHILDREN) {
@Override public void received(ActionInvocation arg0,
DIDLContent didl) {
logger.debug("found {} items.", didl.getItems().size());
}
@Override public void updateStatus(Status arg0) { };
@Override public void failure(ActionInvocation arg0, UpnpResponse arg1, String arg2) { };
});
}
}
}
}
lo sé, es probable que se parece a un desastre horrible y lo es, pero funciona :) Cuando me cae en un depurador, me puedo ver lo que tengo Sin embargo, a diferencia de las instrucciones de la guía here, no recibo ningún elemento multimedia real, solo directorios de almacenamiento en el resultado de búsqueda. Este tipo de DLNA tiene sentido ya que organiza las cosas en una jerarquía de este modo:
Music
All Music
Artists
Fleetwood Mac
...
Albums
...
Video
All Video
Folders
...
Mi pregunta es, ¿cuál es la forma más fácil de navegar por estas carpetas y subir a través de la jerarquía? Ya estoy en un punto en el que estoy conectado al servidor UPnP DLNA que estaba buscando, ¿cómo puedo obtener estos directorios de almacenamiento raíz? En el comando de navegación dado anteriormente, tengo que pasar una representación de cadena de algún índice para obtener "Música" o "Video" o similar. ¿Cómo obtengo el nivel más alto de directorios de almacenamiento? ¿Cómo puedo navegar en cada uno de esos directorios? Mi objetivo es al menos construir un navegador simple.
¿Cómo se las arregló para obtener la lista de archivos una vez que obtiene el artículo? Tengo el contenedor, pero getItems() siempre está vacío. – Nifhel
didl.getContainers(). Get (0) .getItems() siempre está vacío – Nifhel