class AnalyseDownload(object): def __init__(self): self.analyse_share = None self.share = None self.download = None self.local_path = None self.date = None def open(self, name, attrs): if name == "share": self.analyse_share = AnalyseShare() if self.analyse_share: self.analyse_share.open(name, attrs) def close(self, name, buf): if self.analyse_share: self.analyse_share.close(name, buf) if name == "share": self.share = self.analyse_share.share self.analyse_share = None elif name == "download": self.download = Download.get_download(self.share, self.local_path, self.date) elif name == "localpath": self.local_path = buf elif name == "status": self.status = buf elif name == "date": self.date = date.fromtimestamp(int(buf) / 1000)
class AnalyseResults(DefaultHandler): def __init__(self, callback): DefaultHandler.__init__(self) self.share_results = None self.callback = callback def startElement(self, name, attrs): DefaultHandler.startElement(self, name, attrs) if name == "results": self.share_results = [] elif name == "share": self.analyse_share = AnalyseShare() if "share" in self.opened: self.analyse_share.open(name, attrs) def endElement(self, name): if "share" in self.opened: self.analyse_share.close(name, self.buf) if self.analyse_share.share: self.share_results.append(self.analyse_share.share) else: if name == "results": self.callback(self.share_results) DefaultHandler.endElement(self, name)