summaryrefslogtreecommitdiff
path: root/config/services/web/rss/WhatsOnMubiBridge.php
diff options
context:
space:
mode:
authorQuentin Aristote <quentin@aristote.fr>2022-12-20 22:29:55 +0100
committerQuentin Aristote <quentin@aristote.fr>2022-12-20 22:29:55 +0100
commit95644485ac1402a8dc84c520a3ded7b29720f950 (patch)
treec124a795dba03106cadff1645c532f6251898f86 /config/services/web/rss/WhatsOnMubiBridge.php
parent51df83cffaa45130f94bf5ab78b6b14fbb37ec4d (diff)
parent9bde3c4624eb916bafcf9a18792edb42e3a25a17 (diff)
Merge branch 'master' into searx-engine-alternativeto
Diffstat (limited to 'config/services/web/rss/WhatsOnMubiBridge.php')
-rw-r--r--config/services/web/rss/WhatsOnMubiBridge.php49
1 files changed, 49 insertions, 0 deletions
diff --git a/config/services/web/rss/WhatsOnMubiBridge.php b/config/services/web/rss/WhatsOnMubiBridge.php
new file mode 100644
index 0000000..4cf7718
--- /dev/null
+++ b/config/services/web/rss/WhatsOnMubiBridge.php
@@ -0,0 +1,49 @@
+<?php
+
+class WhatsOnMubiBridge extends XPathAbstract {
+ const NAME = 'What\'s on Mubi Bridge';
+ const URI = 'https://whatsonmubi.com/?catalogue=ns&sort=expires-desc';
+ const DESCRIPTION = 'Movies currently showing on Mubi.';
+ const MAINTAINER = 'Quentin Aristote';
+ const CACHE_TIMEOUT = 21800; // 6h
+
+ const PARAMETERS = [
+ '' => [
+ 'country' => [
+ 'name' => 'Country',
+ 'type' => 'text',
+ 'exampleValue' => 'fr',
+ 'defaultValue' => 'fr',
+ ]
+ ]
+ ];
+
+ const XPATH_EXPRESSION_ITEM = '//div[@class="film"]';
+ const XPATH_EXPRESSION_ITEM_TITLE = './/h2';
+ const XPATH_EXPRESSION_ITEM_CONTENT = './/div[@class="film_details flex flex-col flex-1"]';
+ const XPATH_EXPRESSION_ITEM_URI = './/a[@class="relative film_thumbnail"]/@href';
+ const XPATH_EXPRESSION_ITEM_AUTHOR = './@data-directors';
+ const XPATH_EXPRESSION_ITEM_TIMESTAMP = './/p[@class="hidden film-expires"]';
+ const XPATH_EXPRESSION_ITEM_ENCLOSURES = './/a[@class="relative film_thumbnail"]/img/@src';
+ const XPATH_EXPRESSION_ITEM_CATEGORIES = './/div[@class="film_details flex flex-col flex-1"]//div[@class="mt-3 flex flex-wrap"]';
+
+ public function getSourceUrl() {
+ return self::URI . '&showing=' . $this->getInput('country');
+ }
+
+ public function getIcon() {
+ return 'https://whatsonmubi.com/favicon.ico';
+ }
+
+ protected function formatItemTimestamp($value) {
+ return strtotime('today +' . $value);
+ }
+
+ protected function formatItemContent($value) {
+ $text = preg_replace("/\s{2}\s+/", "\n", $value);
+ $lines = array_map("trim", explode("\n", $text));
+ $title = $lines[0];
+ $director = $lines[1];
+ return $director . ' ' . $title;
+ }
+}