class Dryad(object): def __init__(self): self.d = Dryad_DataOne() def list_packages(self, start_n=0, count=20): x = self.d.list(count=count, start_n=start_n) count = int(x.getElementsByTagName("d1:objectList")[0].attributes["count"].value ) start = int(x.getElementsByTagName("d1:objectList")[0].attributes["start"].value) total = int(x.getElementsByTagName("d1:objectList")[0].attributes["total"].value) output=[] for obj in x.getElementsByTagName("objectInfo"): ident = obj.getElementsByTagName("identifier")[0].firstChild.wholeText size = obj.getElementsByTagName("size")[0].firstChild.wholeText doi = "doi:"+ident.split("dx.doi.org/")[1].split("?")[0] output.append({'id':ident, 'size':size, 'doi': doi}) return output, count, start, total def get_package(self, doi): m = self.d.metadata(doi) return DryadPackage(m,doi) def get_files_for_packages(self, package): child_list = [ i.split("dx.doi.org/")[1].split("?")[0] for i in package.get_children() ] metadata_list = [self.d.metadata("doi:"+i) for i in child_list ] file_metadata_list = [self.d.file_metadata("doi:"+i) for i in child_list ] files= [DryadFile(i,'doi:'+child_list[x], file_metadata_list[x] ) for x,i in enumerate(metadata_list) ] for f in files: f.set_file_name(self.d.get_file_name(f.doi) ) return files