planet/planet/foaf.py
2006-09-02 15:19:01 -04:00

57 lines
1.6 KiB
Python

from ConfigParser import ConfigParser
# input = foaf, output = ConfigParser
def foaf2config(rdf, baseuri, config=None):
if not config:
config = ConfigParser()
try:
from RDF import Model, NS, Parser, Statement
except:
return config
if hasattr(rdf, 'read'):
rdf = rdf.read()
model = Model()
def handler(code, level, facility, message, line, column, byte, file, uri):
pass
Parser().parse_string_into_model(model,rdf,baseuri,handler)
dc = NS('http://purl.org/dc/elements/1.1/')
foaf = NS('http://xmlns.com/foaf/0.1/')
rdfs = NS('http://www.w3.org/2000/01/rdf-schema#')
for statement in model.find_statements(Statement(None,foaf.weblog,None)):
feed = model.get_target(statement.object,rdfs.seeAlso)
if not feed: continue
title = model.get_target(statement.subject,foaf.name)
if not title: title = model.get_target(statement.object,dc.title)
if not title: continue
feed = str(feed.uri)
if not config.has_section(feed):
config.add_section(feed)
config.set(feed, 'name', str(title))
return config
if __name__ == "__main__":
import sys, urllib
config = ConfigParser()
for uri in sys.argv[1:]:
foaf2config(urllib.urlopen(uri), uri, config)
config.write(sys.stdout)
if __name__ == "__main__":
# small main program which converts FOAF into config.ini format
import sys, urllib
config = ConfigParser()
for foaf in sys.argv[1:]:
foaf2config(urllib.urlopen(foaf), config)
config.write(sys.stdout)