1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
<?php
$GLOBALS['DATE_FORMATTER'] = new IntlDateFormatter(
'fr-FR',
IntlDateFormatter::FULL,
IntlDateFormatter::SHORT,
'Etc/UTC',
IntlDateFormatter::GREGORIAN,
"d MMMM y"
);
class FipAlbumsBridge extends XPathAbstract {
const NAME = 'Fip Albums Bridge';
const URI = 'https://www.radiofrance.fr/fip/albums/';
const DESCRIPTION = 'Albums promoted by Fip.';
const MAINTAINER = 'Quentin Aristote';
const CACHE_TIMEOUT = 86400; // 6h
const PARAMETERS = [
'' => [
'category' => [
'name' => 'Category',
'type' => 'text',
'description' => 'See examples for available options.',
'exampleValue' => 'can be empty, "selections" or "album-jazz-de-la-semaine"'
]
]
];
const XPATH_EXPRESSION_ITEM = '//div[starts-with(@class, "CardSide ")]';
const XPATH_EXPRESSION_ITEM_TITLE = './/a/@aria-label';
const XPATH_EXPRESSION_ITEM_CONTENT = './/img/@alt';
const XPATH_EXPRESSION_ITEM_URI = './/a/@href';
const XPATH_EXPRESSION_ITEM_AUTHOR = './/div[starts-with(@class, "title-zone ")]/p[2]/text()';
const XPATH_EXPRESSION_ITEM_TIMESTAMP = './/div[starts-with(@class, "AdditionalInfos ")]/p[1]/text()';
const XPATH_EXPRESSION_ITEM_ENCLOSURES = './/img/@src';
const XPATH_EXPRESSION_ITEM_CATEGORIES = './/div[starts-with(@class, "AdditionalInfos ")]/p[2]/text()';
public function getSourceUrl() {
return self::URI . $this->getInput('category');
}
public function getIcon() {
return 'https://www.radiofrance.fr/dist/favicons/fip/favicon.png';
}
protected function formatItemTimestamp($value) {
$monthyear = explode(": ", $value)[1];
return $GLOBALS['DATE_FORMATTER']->parse('1 ' . $monthyear);
}
# enclosure links don't have an extension
protected function cleanMediaUrl($mediaUrl) {
return $mediaUrl;
}
}
|