def test_editions(self): pandata = Pandata(EDITIONTEST_FILENAME) (ed1,ed2) = pandata.get_edition_list() self.assertEqual(ed1.publisher, "Project Gutenberg") self.assertEqual(ed2.publisher, "Recovering the Classics") self.assertEqual(ed2.isbn, "9781111122223") self.assertEqual(ed1.isbn, "") self.assertEqual(ed1.edition_identifiers['edition_id'], "repo:Space-Viking_20728#default") self.assertEqual(ed2.edition_identifiers['edition_id'], u'repo:Space-Viking_20728#9781111122223') pandata = Pandata('https://github.com/gitenberg-dev/metadata/raw/master/samples/pandata.yaml') [ed] = pandata.get_edition_list()
def add_by_webpage(url, work=None, user=None): edition = None scraper = get_scraper(url) loader = BasePandataLoader(url) pandata = Pandata() pandata.metadata = scraper.metadata for metadata in pandata.get_edition_list(): edition = loader.load_from_pandata(metadata, work) work = edition.work loader.load_ebooks(pandata, edition, user=user) return edition if edition else None
def load_from_yaml(yaml_url, test_mode=False): """ This really should be called 'load_from_github_yaml' if mock_ebook is True, don't construct list of ebooks from a release -- rather use an epub """ all_metadata = Pandata(yaml_url) loader = GithubLoader(yaml_url) for metadata in all_metadata.get_edition_list(): edition = loader.load_from_pandata(metadata) loader.load_ebooks(metadata, edition, test_mode) return edition.work_id if edition else None
def add_by_sitemap(url, maxnum=None): editions = [] for bookdata in scrape_sitemap(url, maxnum=maxnum): edition = work = None loader = BasePandataLoader(bookdata.base) pandata = Pandata() pandata.metadata = bookdata.metadata for metadata in pandata.get_edition_list(): edition = loader.load_from_pandata(metadata, work) work = edition.work loader.load_ebooks(pandata, edition) if edition: editions.append(edition) return editions
def add_from_bookdatas(bookdatas): ''' bookdatas are iterators of scrapers ''' editions = [] for bookdata in bookdatas: edition = work = None loader = BasePandataLoader(bookdata.base) pandata = Pandata() pandata.metadata = bookdata.metadata for metadata in pandata.get_edition_list(): edition = loader.load_from_pandata(metadata, work) work = edition.work loader.load_ebooks(pandata, edition) if edition: editions.append(edition) return editions