def opdsToMetadata(self, opdsBookStructure): authors = opdsBookStructure.author.replace(u'& ', u'&') metadata = Metadata(opdsBookStructure.title, authors.split(u'&')) metadata.uuid = opdsBookStructure.id.replace('urn:uuid:', '', 1) rawTimestamp = opdsBookStructure.updated parsableTimestamp = re.sub('((\.[0-9]+)?\+00:00|Z)$', '', rawTimestamp) metadata.timestamp = datetime.datetime.strptime(parsableTimestamp, '%Y-%m-%dT%H:%M:%S') tags = [] summary = opdsBookStructure.get(u'summary', u'') summarylines = summary.splitlines() for summaryline in summarylines: if summaryline.startswith(u'TAGS: '): tagsline = summaryline.replace(u'TAGS: ', u'') tagsline = tagsline.replace(u'<br />',u'') tagsline = tagsline.replace(u', ', u',') tags = tagsline.split(u',') metadata.tags = tags bookDownloadUrls = [] links = opdsBookStructure.get('links', []) for link in links: url = link.get('href', '') bookType = link.get('type', '') # Skip covers and thumbnails if not bookType.startswith('image/'): if bookType == 'application/epub+zip': # EPUB books are preferred and always put at the head of the list if found bookDownloadUrls.insert(0, url) else: # Formats other than EPUB (eg. AZW), are appended as they are found bookDownloadUrls.append(url) metadata.links = bookDownloadUrls return metadata
def opdsToMetadata(self, opdsBookStructure): authors = opdsBookStructure.author.replace(u"& ", u"&") metadata = Metadata(opdsBookStructure.title, authors.split(u"&")) metadata.uuid = opdsBookStructure.id.replace("urn:uuid:", "", 1) rawTimestamp = opdsBookStructure.updated parsableTimestamp = re.sub(r"((\.[0-9]+)?\+00:00|Z)$", "", rawTimestamp) metadata.timestamp = datetime.datetime.strptime( parsableTimestamp, "%Y-%m-%dT%H:%M:%S") tags = [] summary = opdsBookStructure.get(u"summary", u"") summarylines = summary.splitlines() for summaryline in summarylines: if summaryline.startswith(u"TAGS: "): tagsline = summaryline.replace(u"TAGS: ", u"") tagsline = tagsline.replace(u"<br />", u"") tagsline = tagsline.replace(u", ", u",") tags = tagsline.split(u",") metadata.tags = tags bookDownloadUrls = [] links = opdsBookStructure.get("links", []) for link in links: url = link.get("href", "") bookType = link.get("type", "") # Skip covers and thumbnails if not bookType.startswith("image/"): if bookType == "application/x-mobipocket-ebook": # azw3 books are preferred and always put at the head of the list if found bookDownloadUrls.insert(0, url) else: # Other formats are appended as they are found bookDownloadUrls.append(url) metadata.links = bookDownloadUrls return metadata