Switch to side-by-side view

--- a/src/upexplo.cpp
+++ b/src/upexplo.cpp
@@ -233,30 +233,42 @@
 {
     MRDH rdr = getRenderer(fname);
     if (!rdr) {
+        cerr << "Can't connect to renderer " << fname << endl;
         return 1;
     }
-    AVTH avt = rdr->avt();
-    if (!avt) {
-        cerr << "Device " << fname << " has no AVTransport service" << endl;
-        return 1;
-    }
+
     string uri;
-    AVTransport::TransportInfo tinfo;
-    int ret;
-    if ((ret = avt->getTransportInfo(tinfo))) {
-        cerr << "getTransportInfo failed. Code " << ret << endl;
-        return 1;
-    } else if (tinfo.tpstatus == AVTransport::TPS_Ok && 
-               (tinfo.tpstate == AVTransport::Playing || 
-                tinfo.tpstate == AVTransport::PausedPlayback)) {
-        AVTransport::PositionInfo info;
-        if ((ret = avt->getPositionInfo(info))) {
-            cerr << "getPositionInfo failed. Code " << ret << endl;
-            return 1;
+
+    OHIFH ohinfo = rdr->ohif();
+    if (ohinfo) {
+        UPnPDirObject dirent;
+        if (ohinfo->metatext(&dirent) == 0) {
+            uri = dirent.getprop("upnp:albumArtURI");
         } else {
-            uri = info.trackmeta.getprop("upnp:albumArtURI");
-        }
-    }
+            //cerr << "metatext failed\n";
+        }
+    }
+
+    if (uri.empty()) {
+        AVTH avt = rdr->avt();
+        if (avt) {
+            AVTransport::TransportInfo tinfo;
+            int ret;
+            if ((ret = avt->getTransportInfo(tinfo))) {
+                cerr << "getTransportInfo failed. Code " << ret << endl;
+            } else if (tinfo.tpstatus == AVTransport::TPS_Ok && 
+                       (tinfo.tpstate == AVTransport::Playing || 
+                        tinfo.tpstate == AVTransport::PausedPlayback)) {
+                AVTransport::PositionInfo info;
+                if ((ret = avt->getPositionInfo(info))) {
+                    cerr << "getPositionInfo failed. Code " << ret << endl;
+                } else {
+                    uri = info.trackmeta.getprop("upnp:albumArtURI");
+                }
+            }
+        }
+    }
+
     cout << uri << endl;
     return 0;
 }
@@ -487,10 +499,10 @@
             fname = argv[optind++];
             arg = argv[optind++];
     }
-            
+
     if (Logger::getTheLog("/tmp/upexplo.log") == 0) {
         cerr << "Can't initialize log" << endl;
-        return 1;
+        //return 1;
     }
     Logger::getTheLog("")->setLogLevel(Logger::LLDEB1);
 
@@ -500,14 +512,14 @@
         cerr << "Can't get LibUPnP" << endl;
         return 1;
     }
-    cerr << "hwaddr " << hwa << endl;
+    //cerr << "hwaddr " << hwa << endl;
 
     if (!mylib->ok()) {
         cerr << "Lib init failed: " <<
             mylib->errAsString("main", mylib->getInitError()) << endl;
         return 1;
     }
-    mylib->setLogFileName("/tmp/libupnp.log", LibUPnP::LogLevelDebug);
+//    mylib->setLogFileName("/tmp/libupnp.log", LibUPnP::LogLevelDebug);
 
     if ((op_flags & OPT_l)) {
         while (true) {