nemubot/atom.py
2012-04-09 04:27:53 +02:00

54 lines
1.7 KiB
Python
Executable File

#!/usr/bin/python3
# coding=utf-8
import time
from xml.dom.minidom import parse
from xml.dom.minidom import parseString
from xml.dom.minidom import getDOMImplementation
class AtomEntry:
def __init__ (self, node):
self.id = node.getElementsByTagName("id")[0].firstChild.nodeValue
self.title = node.getElementsByTagName("title")[0].firstChild.nodeValue
self.updated = time.strptime(node.getElementsByTagName("updated")[0].firstChild.nodeValue[:19], "%Y-%m-%dT%H:%M:%S")
self.summary = node.getElementsByTagName("summary")[0].firstChild.nodeValue
self.link = node.getElementsByTagName("link")[0].getAttribute ("href")
class Atom:
def __init__ (self, string):
self.feed = parseString (string).documentElement
self.id = self.feed.getElementsByTagName("id")[0].firstChild.nodeValue
self.title = self.feed.getElementsByTagName("title")[0].firstChild.nodeValue
self.updated = None
self.entries = dict ()
for item in self.feed.getElementsByTagName("entry"):
entry = AtomEntry (item)
self.entries[entry.id] = entry
if self.updated is None or self.updated < entry.updated:
self.updated = entry.updated
def diff (self, other):
differ = list ()
for k in other.entries.keys ():
if k not in self.entries and other.entries[k].updated >= self.updated:
differ.append (other.entries[k])
return differ
if __name__ == "__main__":
content1 = ""
with open("rss.php", "r") as f:
for line in f:
content1 += line
content2 = ""
with open("rss.php.1", "r") as f:
for line in f:
content2 += line
a = Atom (content1)
print (a.updated)
b = Atom (content2)
print (b.updated)
diff = a.diff (b)