--- a
+++ b/src/mediaserver/cdplugins/uprcl/uprcluntagged.py
@@ -0,0 +1,83 @@
+
+import os
+import shlex
+import urllib
+import sys
+
+from uprclutils import *
+
+from recoll import recoll
+from recoll import rclconfig
+
+g_myprefix = '0$uprcl$untagged'
+
+
+def recoll2untagged(docs):
+    global g_utidx, g_rcldocs
+    g_rcldocs = docs
+    g_utidx = [-1]
+    
+    for docidx in range(len(docs)):
+        doc = docs[docidx]
+        if doc.mtype == 'inode/directory':
+            continue
+        url = doc.getbinurl()
+        url = url[7:]
+        try:
+            decoded = url.decode('utf-8')
+        except:
+            decoded = urllib.quote(url).decode('utf-8')
+        tt = doc.title
+        if not tt:
+            g_utidx.append(docidx)
+
+def _objidtoidx(pid):
+    if not pid.startswith(g_myprefix):
+        raise Exception("untagged.browse: bad pid %s" % pid)
+
+    if len(g_rcldocs) == 0:
+        raise Exception("untagged:browse: no docs")
+
+    idx = pid[len(g_myprefix):]
+    if not idx:
+        idx = 0
+    else:
+        if idx[1] != 'u':
+            raise Exception("untagged:browse: called on bad objid %s" % pid)
+        idx = int(idx[2:])
+    
+    if idx >= len(g_utidx):
+        raise Exception("untagged:browse: bad pid %s" % pid)
+
+    return idx
+
+
+def rootentries(pid):
+    return [rcldirentry(pid + 'untagged', pid, '[untagged]'),]
+
+# Browse method
+# objid is like untagged$*u<index>
+# flag is meta or children. 
+def browse(pid, flag, httphp, pathprefix):
+
+    idx = _objidtoidx(pid)
+
+    entries = []
+    if idx == 0:
+        # Browsing root
+        for i in range(len(g_utidx))[1:]:
+            doc = g_rcldocs[g_utidx[i]]
+            id = g_myprefix + '$u' + str(i)
+            e = rcldoctoentry(id, pid, httphp, pathprefix, doc)
+            if e:
+                entries.append(e)
+    else:
+        # Non root: only items in there. flag needs to be 'meta'
+        doc = g_rcldocs[thisdocidx]
+        id = g_myprefix + '$u' + str(idx)
+        e = rcldoctoentry(id, pid, httphp, pathprefix, doc)
+        if e:
+            entries.append(e)
+
+    return sorted(entries, cmp=cmpentries)
+