Skip to content
Snippets Groups Projects
Commit 995dc003 authored by Arthur Suzuki's avatar Arthur Suzuki
Browse files

Merge branch 'hotline#169349_arte_campus_documents_non_redescendus' into 'master'

hotline#169349 : fix ArteCampus connector

See merge request !4669
parents c4a64d16 1cc5079f
1 merge request!4669hotline#169349 : fix ArteCampus connector
Pipeline #20745 passed with stage
in 19 minutes and 42 seconds
- correctif #169349 : Bibliothèque numérique : Correction de l'URL de moissonnage Arte Campus et récupération de méta-données.
\ No newline at end of file
......@@ -73,6 +73,12 @@ class ArteCampus_Config extends Class_DigitalResource_Config {
public function getHarvestUrl(int $page = 1) : string {
return $this->getAdminVar('CATALOG_URL');
$catalog_url = $this->getAdminVar('CATALOG_URL');
$ent_id = $this->getAdminVar('ENT_ID');
$ent_param = strpos( $catalog_url , '?')
? '&ent=' . $ent_id
: '?ent=' . $ent_id;
return $catalog_url . $ent_param;
}
}
......@@ -44,6 +44,20 @@ class ArteCampus_Service extends Class_DigitalResource_Service {
}
protected function _importRessources($ressources) {
if(!$ressources)
return [];
$harvestedIds = [];
foreach ($ressources as $ressource) {
$harvestedIds[] = $ressource->getId();
$this->loadRessource($ressource);
$ressource->import(true);
}
return $harvestedIds;
}
public function getPageCount() {
return 1;
}
......@@ -54,7 +68,12 @@ class ArteCampus_Service extends Class_DigitalResource_Service {
}
protected function _deleteNonHarvested() {
return $this->_deleteNonHarvestedAlbums();
}
protected function _httpGetCatalogue() : string {
return $this->httpGet($this->_config->getAdminVar('CATALOG_URL'));
return $this->httpGet($this->_config->getHarvestUrl());
}
}
......@@ -21,6 +21,7 @@
class ArteCampus_Service_Program extends Class_WebService_BibNumerique_RessourceNumerique {
const DURATION_UNIT = 'mn';
protected
$_directors = [];
......@@ -35,12 +36,16 @@ class ArteCampus_Service_Program extends Class_WebService_BibNumerique_Ressource
->addPoster($json['media']['poster'] ?? '')
->setTrailers($json['media']['trailers'] ?? '')
->setTags($json['editorial']['keywords'] ?? [])
->setDuration($json['technical']['duration'])
->addAuthor($json['staff']['director'] ?? '');
->setDuration($json['technical']['duration'] . self::DURATION_UNIT)
->addAuthor($json['staff']['director'] ?? '')
->setEditeur($json['staff']['producers'] ?? '');
foreach($json['editorial']['subjects'] as $matiere)
$this->addMatiere($matiere);
foreach($json['technical']['versions'] as $version)
$this->addTag($version['language']);
return $this;
}
......@@ -52,7 +57,8 @@ class ArteCampus_Service_Program extends Class_WebService_BibNumerique_Ressource
public function fillAlbum(Class_Album $album) : self {
$album->setTypeDocId(ArteCampus_Config::getInstance()->getDocType());
return $this;
$album->getMarc()->clearZone('856');
return $this->updateRessourceNumeriqueNotes($album);
}
......
......@@ -39,7 +39,7 @@ class ArteCampusFixtures {
$page1 = file_get_contents(__DIR__ . '/fixture.json');
$http_client = $this->mock()
->whenCalled('open_url')
->with('https://campus.arte.tv/api/list/programs?lang=fr')
->with('https://campus.arte.tv/api/list/programs?lang=fr&ent=1234')
->answers($page1)
->whenCalled('getResponse')
......@@ -117,7 +117,6 @@ class ArteCampusFixtures {
class ArteCampusSsoTest extends AbstractControllerTestCase {
protected
$_storm_default_to_volatile = true,
$_album,
$_arte_fixture;
......@@ -127,7 +126,7 @@ class ArteCampusSsoTest extends AbstractControllerTestCase {
['id' => 2,
'type_doc_id' => 'ArteCampus',
'titre' => 'Cultures',
'id_origine' => '88817216',
'id_origine' => '17779',
'external_uri' => 'http//campus.arte.tv/album-url']);
$this->_arte_fixture = new ArteCampusFixtures();
}
......@@ -165,7 +164,6 @@ class ArteCampusSsoTest extends AbstractControllerTestCase {
class ArteCampusDashboardUnactivatedTest extends Admin_AbstractControllerTestCase {
protected $_storm_default_to_volatile = true;
public function setUp() {
parent::setUp();
......@@ -189,7 +187,6 @@ class ArteCampusDashboardUnactivatedTest extends Admin_AbstractControllerTestCas
class ArteCampusDashboardActivatedTest extends AbstractControllerTestCase {
protected $_storm_default_to_volatile = true;
public function setUp() {
parent::setUp();
......@@ -223,7 +220,6 @@ class ArteCampusDashboardActivatedTest extends AbstractControllerTestCase {
class ArteCampusSsoUserNotInGroupTest extends AbstractControllerTestCase {
protected $_storm_default_to_volatile = true;
public function setUp() {
parent::setUp();
......@@ -283,14 +279,15 @@ class ArteCampusHarvestAlbumCreationTest extends ModelTestCase {
['getUrlOrigine', 'https://campus.arte.tv'],
['getExternalUri', 'https://campus.arte.tv/program/karambolage-le-hamburger-et-les-voeux'],
['getAnnee', '2004'],
['getDuration','10'],
['getDuration','10mn'],
['getDescription', 'Le mot : qui aurait pensé que le "hamburger", cette discutable bénédiction qui nous vient des Etats-Unis, allait un jour conquérir le monde ? L\'analyse d\'image : ensemble, nous allons regarder comment les vœux sont adressés à la nation, comment ils sont mis en scène. La collection : Un mot, un objet, une image, une coutume, une onomatopée… une devinette ! Karambolage se penche sur les particularités de la culture quotidienne française et allemande. Des regards à la fois critiques et pleins d\'humour qui décryptent nos habitudes et nos comportements.'],
['getTypeDocId' , 'ArteCampus'],
['getCategoryLabel', 'Arte Campus'],
['getTags', 'hamburger;karambolage'],
['getTags', 'hamburger;karambolage;Version française;Version allemande'],
['getMatiere','4;5' ],
['getPoster', 'https://vodstorage.arte.tv/educarte/illustrations/93333_affiche.jpg'],
['getMainAuthorName', 'Claire Doutriaux'],
['getFirstEditor', 'ARTE France Développement']
];
}
......@@ -328,7 +325,7 @@ class ArteCampusHarvestAlbumCreationTest extends ModelTestCase {
class ArteCampusAlreadyHarvestedNoUpdateAlbumTest extends ModelTestCase {
class ArteCampusAlreadyHarvestedUpdateAlbumTest extends ModelTestCase {
protected $_album;
public function setUp() {
......@@ -337,6 +334,8 @@ class ArteCampusAlreadyHarvestedNoUpdateAlbumTest extends ModelTestCase {
['id' => 1,
'id_origine' => '17779',
'url_origine' => 'https://campus.arte.tv',
'external_uri' => 'https://campus.arte.tv/il-fait-gris',
'poster' => 'ilestsageilauneimage',
'type_doc_id' => 'ArteCampus',
'titre' => 'il va faire tout noir']);
......@@ -348,9 +347,11 @@ class ArteCampusAlreadyHarvestedNoUpdateAlbumTest extends ModelTestCase {
public function getAlbumAttribs() {
return [
['getTitre', 'il va faire tout noir'],
['getTitre', 'Un voyage avec Martin Scorsese à travers le cinéma italien 2'],
['getIdOrigine', '17779'],
['getUrlOrigine', 'https://campus.arte.tv'],
['getExternalUri', 'https://campus.arte.tv/program/un-voyage-avec-martin-scorsese-a-travers-le-cinema-italien-2'],
['getPoster', 'https://vodstorage.arte.tv/educarte/illustrations/52585_affiche.jpg'],
['getTypeDocId' , 'ArteCampus'],
];
}
......@@ -364,3 +365,28 @@ class ArteCampusAlreadyHarvestedNoUpdateAlbumTest extends ModelTestCase {
$this->assertEquals($value, call_user_func([$this->_album, $key]));
}
}
class ArteCampusAlbumNotHarvestedShouldBeDeletedTest extends AbstractControllerTestCase {
protected
$_album,
$_arte_fixture;
public function setUp() {
parent::setUp();
$this->_album = $this->fixture(Class_Album::class,
['id' => 2,
'type_doc_id' => 'ArteCampus',
'titre' => 'Cultures',
'id_origine' => '123456789',
'external_uri' => 'http//campus.arte.tv/album-url']);
$this->_arte_fixture = new ArteCampusFixtures();
}
/** @test */
public function album2ShouldHaveBeenDeletedAfterHarvest() {
$this->assertNull(Class_Album::find(2));
}
}
......@@ -50,6 +50,7 @@
"producers": "TTC Films Productions",
"presenter": ""
},
"status": "PUBLISHED",
"media": {
"poster": "https://vodstorage.arte.tv/educarte/illustrations/52585_affiche.jpg",
"trailers": []
......@@ -103,6 +104,7 @@
"producers": "ARTE France Développement",
"presenter": ""
},
"status": "PUBLISHED",
"media": {
"poster": "https://vodstorage.arte.tv/educarte/illustrations/93333_affiche.jpg",
"trailers":["https://vodstorage.arte.tv/trailers/129237/BA_129237_0-VOF-2.mp4","https://vodstorage.arte.tv/trailers/129237/BA_129237_0-VA-1.mp4"]
......@@ -147,6 +149,7 @@
"producers": "BFI TV",
"presenter": ""
},
"status": "PUBLISHED",
"media": {
"poster": "https://vodstorage.arte.tv/educarte/illustrations/12592_affiche.jpg",
"trailers": []
......@@ -204,6 +207,7 @@
"producers": "Arte France, Artline Films",
"presenter": ""
},
"status": "PUBLISHED",
"media": {
"poster": "https://vodstorage.arte.tv/educarte/illustrations/000-111599_affiche.jpg",
"trailers": []
......@@ -255,6 +259,7 @@
"producers": "Gedeon Programmes",
"presenter": ""
},
"status": "PUBLISHED",
"media": {
"poster": "https://vodstorage.arte.tv/educarte/illustrations/112455_affiche.jpg",
"trailers": []
......@@ -319,6 +324,7 @@
"producers": "Arte France, Camera Lucida, Musée Du Louvre",
"presenter": ""
},
"status": "PUBLISHED",
"media": {
"poster": "https://vodstorage.arte.tv/educarte/illustrations/000-113493_affiche.jpg",
"trailers": []
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment