domingo, marzo 08, 2009

Como saber que archivos tienen un emblema en Gnome

Para usuarios de Linux y Gnome
Hace rato que quería hacer un pequeño programita que me devuelva una lista de los archivos a los cuales les apliqué un emblema con Nautilus.
Es muy simple:
Aca devuelvo una lista de los que tienen el emblema "important"



import os
import xml.dom.minidom

# cargo una lista con los archivos de metadata de nautilus
# cada archivo se corresponde con un directorio
def getFiles(parent, metadataFileList):
arqs = os.listdir(parent)
for a in arqs:
if os.path.isdir(parent + "/" + a):
getFiles(parent + "/" + a)
else:
if a[0:4] == "file" :
metadataFileList.append(a)

# obtengo el nombre real del directorio
def getRealPath(fileName):
fileName = fileName.replace("%2F","/")
fileName = fileName.replace("%2520"," ")
# le quito el file:// al principio y el .xml al final
return fileName[7:-4]


# busco los archivos con el emblema
def searchFilesWithEmblem(metadataFileName,emblem):
fileList = []
domMetadata = xml.dom.minidom.parse(metadataFileName)
for fileNode in domMetadata.childNodes[0].childNodes:
if fileNode.nodeType == fileNode.ELEMENT_NODE and fileNode.localName == "file":
for child in fileNode.childNodes:
if child.nodeType == child.ELEMENT_NODE and child.localName == "keyword" and child.attributes["name"].value == emblem:
fileList.append(fileNode.attributes["name"].value)
return fileList

# Leo variable de entorno
myhome = os.environ.get("HOME")
emblem = "important"
metadataFileList = []
metadataFilesPath = myhome+"/.nautilus/metafiles"
getFiles(metadataFilesPath,metadataFileList)
for metadataFileName in metadataFileList :
realPath = getRealPath(metadataFileName)
filesWithEmblem = searchFilesWithEmblem(metadataFilesPath+"/"+metadataFileName,emblem)
for fileName in filesWithEmblem:
print realPath+"/"+fileName


Publicar un comentario