#! /usr/bin/env python """ Usage: python rdfparser.py {-or|-fm|-last|-debug| } The rdf is saved into lastrdf.xml in the current dir Options: -or for accessing to objectsroot.com -fm for accessing to freshmeat -last read the last parsed rdf -debug for debug Use that url for parsing rdf """ import sys import os import string import xml.dom.minidom import urllib print "Python RDF Script Rev $id$" def getText(nodelist): """ Legge una stringa """ rc = "" for node in nodelist: if node.nodeType == node.TEXT_NODE: rc = rc + node.data return rc def handleRDF(rdf): """ A simple RDF Parser """ #rss=rdf.getElementsByTagName("rss")[0] #print "==== Rss Version:" + rss.getAttribute("version") channel=rdf.getElementsByTagName("channel")[0] title=channel.getElementsByTagName("title")[0] handleRDFTitle(title) news = rdf.getElementsByTagName("item") handleNews(news) print "===================" def handleNews(l): for news in l: printNews(news) def printNews(news): handleNewsTitle(news.getElementsByTagName("title")[0]) handleLink(news.getElementsByTagName("link")[0]) def handleLink(link): print " "+getText(link.childNodes) def handleNewsTitle(title): print "News Title:" + getText(title.childNodes) def handleRDFTitle(title): print "Site Title:" + getText(title.childNodes) def printIntro(): print "RDF Parser" print "Giovanni Giorgi rdfparser@objectstoot.com" ## MAIN ## printIntro() rdfurl="" opts={ "-fm":"http://freshmeat.net/backend/fm.rdf", "-or":"http://freezope2.nipltd.net/gio/jj/JDot/rdf", "-debug":"http://localhost:8080/freezopeSiteBackup/JDot/rdf" } if len(sys.argv)<=1: print "Usage:" print __doc__ else: if sys.argv[1] == "-last": rdfurl='' print "Reading last" f=open("lastrdf.xml","r") text=f.read() f.close() else: # Opzioni diverse da -last if opts.has_key(sys.argv[1]): rdfurl=opts[sys.argv[1]] else: # Interpretato come URL rdfurl=sys.argv[1] print "Fetching RDF. from URL:"+rdfurl f = urllib.urlopen(rdfurl) text=f.read() lastf=open("lastrdf.xml","w") lastf.write(text) lastf.close() #For debug only: ###print text print "Parsing..." dom = xml.dom.minidom.parseString( text ) handleRDF(dom)