diff --git a/library/digital_resources/StoryPlayR/Batch.php b/library/digital_resources/StoryPlayR/Batch.php new file mode 100644 index 0000000000000000000000000000000000000000..2c66ef5dac21d14bb74894c0974a2462d6839afc --- /dev/null +++ b/library/digital_resources/StoryPlayR/Batch.php @@ -0,0 +1,23 @@ +<?php +/** + * Copyright (c) 2012-2017, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class StoryPlayR_Batch extends Class_DigitalResource_Batch {} diff --git a/library/digital_resources/StoryPlayR/Config.php b/library/digital_resources/StoryPlayR/Config.php index 940f4cbf00c70c5bb3b85c8a4ff4f060b4ac6e14..8fd01629c839237b000ec4c7508ad01d339a1482 100644 --- a/library/digital_resources/StoryPlayR/Config.php +++ b/library/digital_resources/StoryPlayR/Config.php @@ -24,8 +24,11 @@ class StoryPlayR_Config extends Class_DigitalResource_Config { public function getConfig() { return ['Introduction' => $this->_('Plusieurs centaines d\'albums jeunesse et livres audio !'), 'AdminVars' => ['SSO_URL' => Class_AdminVar_Meta::newDefault($this->_('URL SSO de la plateforme StoryPlay*r')) + ->bePrivate(), + 'OPDS_CATALOG_URL' => Class_AdminVar_Meta::newDefault($this->_('URL du catalogue OPDS de la plateforme StoryPlay*r')) ->bePrivate()], 'PermissionLabel' => $this->_('Bibliothèque numérique: accéder aux albums StoryPlay*r'), + 'NotAllowedMessage' => $this->_('Vous devez être abonné pour accéder à cette ressource.'), 'SsoAction' => true, 'SsoValidateUrl' => true, @@ -37,7 +40,9 @@ class StoryPlayR_Config extends Class_DigitalResource_Config { 'MenuLabel' => $this->_('Lien vers StoryPlay*r'), 'ModuleMenu' => $this->withNameSpace('ModuleMenu'), - 'NotAllowedMessage' => $this->_('Vous devez être abonné pour accéder à cette ressource.'), + 'Service' => $this->withNameSpace('Service'), + 'Batch' => $this->withNameSpace('Batch'), + 'DocTypeLabel' => $this->_('Histoire (StoryPlay*r)'), ]; } @@ -60,5 +65,9 @@ class StoryPlayR_Config extends Class_DigitalResource_Config { public function isEnabled() { return '' != $this->getAdminVar('SSO_URL'); } -} -?> \ No newline at end of file + + + public function getCatalog() { + return $this->getAdminVar('OPDS_CATALOG_URL'); + } +} \ No newline at end of file diff --git a/library/digital_resources/StoryPlayR/Service.php b/library/digital_resources/StoryPlayR/Service.php new file mode 100644 index 0000000000000000000000000000000000000000..7d63512b43facc6ebe6f0f4ce05623decdd222c8 --- /dev/null +++ b/library/digital_resources/StoryPlayR/Service.php @@ -0,0 +1,39 @@ +<?php +/** + * Copyright (c) 2012-2017, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class StoryPlayr_Service extends Class_DigitalResource_Service { + public function getPageCount() { + return 1; + } + + + public function getRessourcesNumeriques() { + return $this->_parser->getStories(); + } + + + protected function loadPage($page_number = 1) { + $opds = $this->httpGet($this->_config->getCatalog()); + $this->_parser = (new StoryPlayR_Service_CatalogReader)->parse($opds); + return $this; + } +} \ No newline at end of file diff --git a/library/digital_resources/StoryPlayR/Service/CatalogReader.php b/library/digital_resources/StoryPlayR/Service/CatalogReader.php new file mode 100644 index 0000000000000000000000000000000000000000..123580d054edf2627e5f122e22037cb5f74b1920 --- /dev/null +++ b/library/digital_resources/StoryPlayR/Service/CatalogReader.php @@ -0,0 +1,112 @@ +<?php +/** + * Copyright (c) 2012-2017, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class StoryPlayR_Service_CatalogReader { + protected + $_xml_parser, + $_stories = [], + $_current_story; + + public function parse($xml) { + $this->_xml_parser = Class_WebService_XMLParser::newInstance(); + $this->_xml_parser->setElementHandler($this); + $this->_xml_parser->parse($xml); + return $this; + } + + + public function getStories() { + return $this->_stories; + } + + + public function startEntry() { + $this->_current_story = new StoryPlayR_Service_Story; + } + + + public function endTitle($data) { + $this->_setInEntry('setTitle', $data); + } + + + public function endId($data) { + $this->_setInEntry('setId', $data); + } + + + public function startLink($attributes) { + if (!array_key_exists('HREF', $attributes)) + return; + + if (!array_key_exists('ORDER', $attributes)) + return; + + if (0 == $attributes['ORDER']) + $this->_setInEntry('setExternalUri', $attributes['HREF']); + } + + + public function endUpdated($data) { + $this->_setInEntry('setYear', date('Y', strtotime($data))); + } + + + public function endContent($data) { + $this->_setInEntry('setDescription', $data); + } + + + public function endThumbnailLarge($data) { + $this->_setInEntry('addPoster', $data); + } + + + public function startCategory($attributes) { + if (array_key_exists('LABEL', $attributes) + && ($label = $attributes['LABEL'])) + $this->_setInEntry('addMatiere', $label); + } + + + public function endAuthor($data) { + $this->_setInEntry('addAuthor', $data); + } + + + public function endEditor($data) { + $this->_setInEntry('setEditeur', $data); + } + + + protected function _setInEntry($setter, $data) { + if (!$this->_xml_parser->inParents('entry')) + return; + + call_user_func([$this->_current_story, $setter], $data); + } + + + public function endEntry() { + $this->_stories [] = $this->_current_story; + } +} diff --git a/library/digital_resources/StoryPlayR/Service/Story.php b/library/digital_resources/StoryPlayR/Service/Story.php new file mode 100644 index 0000000000000000000000000000000000000000..45e3c884791c20afd2e829d5163b4b04aa9590a8 --- /dev/null +++ b/library/digital_resources/StoryPlayR/Service/Story.php @@ -0,0 +1,32 @@ +<?php +/** + * Copyright (c) 2012-2017, Agence Française Informatique (AFI). All rights reserved. + * + * BOKEH is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by + * the Free Software Foundation. + * + * There are special exceptions to the terms and conditions of the AGPL as it + * is applied to this software (see README file). + * + * BOKEH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE + * along with BOKEH; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +class StoryPlayR_Service_Story extends Class_WebService_BibNumerique_RessourceNumerique { + public function fillAlbum($album) { + return $album->setTypeDocId(StoryPlayR_Config::getInstance()->getDocType()); + } + + + public function getRessourceCategorieLibelle() { + return StoryPlayR_Config::getInstance()->getDocTypeLabel(); + } +} \ No newline at end of file diff --git a/library/digital_resources/StoryPlayR/tests/StoryPlayRTest.php b/library/digital_resources/StoryPlayR/tests/StoryPlayRTest.php index 5091e3a84d42c982f922bcea9a64e2ea9e0cfece..35eef067ada444c5db7987d9dd30304334a47d21 100644 --- a/library/digital_resources/StoryPlayR/tests/StoryPlayRTest.php +++ b/library/digital_resources/StoryPlayR/tests/StoryPlayRTest.php @@ -157,10 +157,73 @@ class StoryPlayRAuthValidateTest extends StoryPlayRActivatedTestCase { + class StoryPlayRModuleMenuTest extends StoryPlayRActivatedTestCase { /** @test */ public function storyPlayRMenuShouldBeAvailable() { $modules_menu = new Class_Systeme_ModulesMenu; $this->assertEquals('Lien vers StoryPlay*r', $modules_menu->getFonction('StoryPlayR')->getLibelle()); } -} \ No newline at end of file +} + + + + +class StoryPlayRHarvestTest extends StoryPlayRActivatedTestCase { + protected + $_storm_default_to_volatile = true, + $service, + $_album; + + public function setUp() { + parent::setUp(); + Class_AdminVar::set('StoryPlayR_OPDS_CATALOG_URL', 'https://preprod.storyplayr.com/api/opds-with-links?portalProvider=bokeh'); + + $opds = file_get_contents(__DIR__ . '/StoryPlayrCatalog.xml'); + + $http_client = $this->mock() + ->whenCalled('open_url') + ->with(StoryPlayR_Config::getInstance()->getCatalog()) + ->answers($opds) + + ->whenCalled('open_url') + ->answers(''); + + StoryPlayR_Service::setDefaultHttpClient($http_client); + + $this->service = StoryPlayR_Service::getInstance(); + $this->service->harvest(); + $this->_album = Class_Album::find(1); + } + + + public function getAlbumAttribs() { + return [ + ['getTitre', 'A Coat of Many Colors'], + ['getIdOrigine', '278e13dd-1588-4ab2-a894-b5e9b7577a38'], + ['getExternalUri', 'https://preprod.storyplayr.com/api/bokeh/login?target=/histoire/a-coat-of-many-colors/playr'], + ['getAnnee', '2016'], + ['getDescription', 'Joseph was given a very special coat by his father, which made his brothers jealous—so jealous they sold him into slavery. See how Joseph forgave them, and when he became a ruler of the land, helped and blessed his brothers.'], + ['getTypeDocId' , 'StoryPlayR'], + ['getCategoryLabel', 'Histoire (StoryPlay*r)'], + ['getPoster', 'https://preprod.storyplayr.com/api/library/278e13dd-1588-4ab2-a894-b5e9b7577a38/thumbnail/large'], + ['getMainAuthorName', 'Dhanya M.'], + ['getFirstEditor', 'Flowerpot Children\'s press'], + ]; + } + + + /** + * @test + * @dataProvider getAlbumAttribs + */ + public function albumAttribsShouldMatch($key, $value) { + $this->assertEquals($value, call_user_func([$this->_album, $key])); + } + + + /** @test */ + public function albumShouldContains13Matieres() { + $this->assertEquals(13, count(explode(';', $this->_album->getMatiere()))); + } +} diff --git a/library/digital_resources/StoryPlayR/tests/StoryPlayrCatalog.xml b/library/digital_resources/StoryPlayR/tests/StoryPlayrCatalog.xml new file mode 100644 index 0000000000000000000000000000000000000000..7503fe3a6b617a2413dc6f4d6d1f3e0d65d7b72f --- /dev/null +++ b/library/digital_resources/StoryPlayR/tests/StoryPlayrCatalog.xml @@ -0,0 +1,384 @@ +<?xml version="1.0" encoding="utf-8"?> +<feed xmlns="http://www.w3.org/2005/Atom" xmlns:ermes="http://www.archimed.fr/" xmlns:opds="http://opds-spec.org/2010/catalog" xml:lang="fr"> + <id>https://preprod.storyplayr.com/api/opds</id> + <icon>https://preprod.storyplayr.com/img/globals/Header/Logo.png</icon> + <title>Storyplayr Catalog</title> + <updated>2018-03-27T07:19:01Z</updated> + <author> + <name>Thomas SALOMON</name> + <email>thomas.salomon@storyplayr.com</email> + <uri>https://preprod.storyplayr.com/backoffice/about</uri> + </author> + <link rel="start" href="https://preprod.storyplayr.com/api/opds" type="application/atom+xml;profile=opds-catalog;kind=navigation"> + <rel>start</rel> + </link> + <subtitle>Storyplayr catalog feed!</subtitle> + <rights> Copyright © 2014 Storyplayr. All rights reserved</rights> + <generator>Feed for Node.js</generator> + <entry> + <title>A Coat of Many Colors</title> + <id>278e13dd-1588-4ab2-a894-b5e9b7577a38</id> + <link href="https://preprod.storyplayr.com/api/bokeh/login?target=/histoire/a-coat-of-many-colors/playr" type="text/html" rel="related" title="Lire l'histoire" order="0"> + </link> + <link href="https://preprod.storyplayr.com/api/bokeh/login?target=/histoire/a-coat-of-many-colors/playr/narration/0454cec8-b0b4-4975-afaf-2b707fdc712a" type="text/html" rel="related" title="Ecouter la narration fournie par l'éditeur" order="3"> + </link> + <updated>2016-01-15T00:00:00Z</updated> + <ermes:thumbnailLarge>https://preprod.storyplayr.com/api/library/278e13dd-1588-4ab2-a894-b5e9b7577a38/thumbnail/large</ermes:thumbnailLarge> + <ermes:thumbnailSmall>https://preprod.storyplayr.com/api/library/278e13dd-1588-4ab2-a894-b5e9b7577a38/thumbnail/small</ermes:thumbnailSmall> + <content>Joseph was given a very special coat by his father, which made his brothers jealous—so jealous they sold him into slavery. See how Joseph forgave them, and when he became a ruler of the land, helped and blessed his brothers.</content> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="5 Minute Bible Stories" label="5 Minute Bible Stories"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Brother, sister" label="Brother, sister"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Early readers" label="Early readers"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="English" label="English"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Religious" label="Religious"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Livre pour enfant" label="Livre pour enfant"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Album jeunesse" label="Album jeunesse"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="storyplayr" label="storyplayr"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="storyplay'r" label="storyplay'r"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Histoire pour s'endormir" label="Histoire pour s'endormir"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Audio book" label="Audio book"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Histoire lue" label="Histoire lue"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Histoire à écouter" label="Histoire à écouter"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <author>Dhanya M.</author> + <editor>Flowerpot Children's press</editor> + </entry> + <entry> + <title>'Twas the Night Before Christmas</title> + <id>39a2946b-ee50-4856-a1ad-24b1161c2a7d</id> + <link href="https://preprod.storyplayr.com/api/bokeh/login?target=/histoire/twas-the-night-before-christmas/playr" type="text/html" rel="related" title="Lire l'histoire" order="0"> + </link> + <link href="https://preprod.storyplayr.com/api/bokeh/login?target=/histoire/twas-the-night-before-christmas/playr/narration/1ae58c69-df67-494f-b4cb-271a52e31753" type="text/html" rel="related" title="Ecouter la narration fournie par l'éditeur" order="3"> + </link> + <updated>2015-11-23T00:00:00Z</updated> + <ermes:thumbnailLarge>https://preprod.storyplayr.com/api/library/39a2946b-ee50-4856-a1ad-24b1161c2a7d/thumbnail/large</ermes:thumbnailLarge> + <ermes:thumbnailSmall>https://preprod.storyplayr.com/api/library/39a2946b-ee50-4856-a1ad-24b1161c2a7d/thumbnail/small</ermes:thumbnailSmall> + <content>‘Twas the night before Christmas, + when all through the house + Not a creature was stirring, + not even a mouse</content> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Christmas" label="Christmas"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Classics" label="Classics"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Early readers" label="Early readers"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="English" label="English"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Family Christmas Classics" label="Family Christmas Classics"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Night" label="Night"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Santa Claus" label="Santa Claus"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Winter" label="Winter"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Livre pour enfant" label="Livre pour enfant"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Album jeunesse" label="Album jeunesse"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="storyplayr" label="storyplayr"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="storyplay'r" label="storyplay'r"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Histoire pour s'endormir" label="Histoire pour s'endormir"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Audio book" label="Audio book"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Histoire lue" label="Histoire lue"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Histoire à écouter" label="Histoire à écouter"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <author>CK Dreamaker</author> + <author>Clement C.Moore</author> + <editor>Flowerpot Children's press</editor> + </entry> + <entry> + <title>Alice</title> + <id>30bd742f-c3d1-4773-993f-39affaf7d356</id> + <link href="https://preprod.storyplayr.com/api/bokeh/login?target=/histoire/alice/playr" type="text/html" rel="related" title="Lire l'histoire" order="0"> + </link> + <updated>2016-06-28T00:00:00Z</updated> + <ermes:thumbnailLarge>https://preprod.storyplayr.com/api/library/30bd742f-c3d1-4773-993f-39affaf7d356/thumbnail/large</ermes:thumbnailLarge> + <ermes:thumbnailSmall>https://preprod.storyplayr.com/api/library/30bd742f-c3d1-4773-993f-39affaf7d356/thumbnail/small</ermes:thumbnailSmall> + <content>Alice reÌ‚vassait dans un champ d’herbes folles lorsqu’un Lapin Blanc, fort bien veÌ‚tu, passa en courant. PreÌ€s d’une haie, il marqua un arreÌ‚t, tira une montre de sa poche et regarda l’heure, avant de s’engouffrer dans un eÌnorme terrier.</content> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="7 ans et +" label="7 ans et +"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Alice au pays des merveilles" label="Alice au pays des merveilles"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Aventure" label="Aventure"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Chat" label="Chat"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Classiques" label="Classiques"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Collection Les grands textes" label="Collection Les grands textes"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Lapin" label="Lapin"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Mésaventure" label="Mésaventure"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Premiers romans" label="Premiers romans"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Rêve" label="Rêve"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Surnaturel" label="Surnaturel"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Voyage" label="Voyage"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Livre pour enfant" label="Livre pour enfant"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Album jeunesse" label="Album jeunesse"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="storyplayr" label="storyplayr"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="storyplay'r" label="storyplay'r"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Histoire pour s'endormir" label="Histoire pour s'endormir"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <author>Sylvie Misslin</author> + <author>Sébastien Mourrain</author> + <author>Lewis Carroll</author> + <editor>Amaterra</editor> + </entry> + <entry> + <title>Bill the Bear</title> + <id>acfc2437-d6b4-417a-9a12-7374786a2534</id> + <link href="https://preprod.storyplayr.com/api/bokeh/login?target=/histoire/bill-the-bear/playr" type="text/html" rel="related" title="Lire l'histoire" order="0"> + </link> + <link href="https://preprod.storyplayr.com/api/bokeh/login?target=/histoire/bill-the-bear/playr/narration/5d179f65-62a6-48e5-af97-07896e3cbfa2" type="text/html" rel="related" title="Ecouter la narration fournie par l'éditeur" order="3"> + </link> + <updated>2016-01-30T00:00:00Z</updated> + <ermes:thumbnailLarge>https://preprod.storyplayr.com/api/library/acfc2437-d6b4-417a-9a12-7374786a2534/thumbnail/large</ermes:thumbnailLarge> + <ermes:thumbnailSmall>https://preprod.storyplayr.com/api/library/acfc2437-d6b4-417a-9a12-7374786a2534/thumbnail/small</ermes:thumbnailSmall> + <content>Bill the Bear LOVES Honey! This is Bill the Bear. Bill the Bear’s home is in the forest. Bill’s favorite things are honey, colors, adventure, and more honey!</content> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Animals" label="Animals"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Bear" label="Bear"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Colors" label="Colors"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Early readers" label="Early readers"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Eating" label="Eating"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Learning" label="Learning"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Livre pour enfant" label="Livre pour enfant"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Album jeunesse" label="Album jeunesse"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="storyplayr" label="storyplayr"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="storyplay'r" label="storyplay'r"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Histoire pour s'endormir" label="Histoire pour s'endormir"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Audio book" label="Audio book"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Histoire lue" label="Histoire lue"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Histoire à écouter" label="Histoire à écouter"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <author>Flowerpot Children's Press</author> + <editor>Flowerpot Children's press</editor> + </entry> + <entry> + <title>A Sailor Went to Sea, Sea, Sea</title> + <id>a2d14069-f599-48c1-afbf-d68e5fcb8ee7</id> + <link href="https://preprod.storyplayr.com/api/bokeh/login?target=/histoire/a-sailor-went-to-sea-sea-sea/playr" type="text/html" rel="related" title="Lire l'histoire" order="0"> + </link> + <updated>2016-01-30T00:00:00Z</updated> + <ermes:thumbnailLarge>https://preprod.storyplayr.com/api/library/a2d14069-f599-48c1-afbf-d68e5fcb8ee7/thumbnail/large</ermes:thumbnailLarge> + <ermes:thumbnailSmall>https://preprod.storyplayr.com/api/library/a2d14069-f599-48c1-afbf-d68e5fcb8ee7/thumbnail/small</ermes:thumbnailSmall> + <content>A sailor went to sea, sea, sea .. . so what did he see, see, see? Come aboard with a brave young sailor and his kitty cat for an adventure on the high seas!</content> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Boat" label="Boat"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Cat" label="Cat"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Early readers" label="Early readers"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Fish" label="Fish"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Nursery Rhyme" label="Nursery Rhyme"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Sea and ocean" label="Sea and ocean"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Livre pour enfant" label="Livre pour enfant"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Album jeunesse" label="Album jeunesse"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="storyplayr" label="storyplayr"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="storyplay'r" label="storyplay'r"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Histoire pour s'endormir" label="Histoire pour s'endormir"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <author>Asha Pearse</author> + <author>Lucy Bell</author> + <editor>Flowerpot Children's press</editor> + </entry> + <entry> + <title>Au fait</title> + <id>cf9550ce-29ed-4f19-93aa-943e84a5e26f</id> + <link href="https://preprod.storyplayr.com/api/bokeh/login?target=/histoire/au-fait/playr" type="text/html" rel="related" title="Lire l'histoire" order="0"> + </link> + <link href="https://preprod.storyplayr.com/api/bokeh/login?target=/histoire/au-fait/playr/narration/8a77b0a5-71af-4747-8808-a9ddcbf44736" type="text/html" rel="related" title="Ecouter la narration fournie par storyplayr" order="4"> + </link> + <link href="https://preprod.storyplayr.com/api/bokeh/login?target=/histoire/au-fait/playr/narration/b376b5fc-5571-4fb8-b8ea-eadb66c55b1e" type="text/html" rel="related" title="Ecouter la narration lue par un abonné" order="5"> + </link> + <updated>2016-04-13T23:00:00Z</updated> + <ermes:thumbnailLarge>https://preprod.storyplayr.com/api/library/cf9550ce-29ed-4f19-93aa-943e84a5e26f/thumbnail/large</ermes:thumbnailLarge> + <ermes:thumbnailSmall>https://preprod.storyplayr.com/api/library/cf9550ce-29ed-4f19-93aa-943e84a5e26f/thumbnail/small</ermes:thumbnailSmall> + <content>Atraboule se demande ce qu'il va faire aujourd'hui. + Déjeuner chez sa cousine Louise ? + Aller chez le dentiste ? + Passer au bureau ? Repasser à la maison ? + Non, rien de tout ça. Il ira chasser l'ours.</content> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="5 ans et +" label="5 ans et +"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Aventure" label="Aventure"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Chasse" label="Chasse"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Humour" label="Humour"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Lapin" label="Lapin"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Magie" label="Magie"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Ours" label="Ours"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Poisson" label="Poisson"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Rencontre" label="Rencontre"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Sorcière" label="Sorcière"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Transformation" label="Transformation"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Voyage" label="Voyage"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Livre pour enfant" label="Livre pour enfant"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Album jeunesse" label="Album jeunesse"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="storyplayr" label="storyplayr"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="storyplay'r" label="storyplay'r"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Histoire pour s'endormir" label="Histoire pour s'endormir"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Audio book" label="Audio book"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Histoire lue" label="Histoire lue"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <category scheme="http://www.bisg.org/standards/bisac_subject/index.html" term="Histoire à écouter" label="Histoire à écouter"> + <scheme>http://www.bisg.org/standards/bisac_subject/index.html</scheme> + </category> + <author>Finzo</author> + <editor>L'Atelier du Poisson Soluble</editor> + </entry> +</feed>