mirror of
https://github.com/RSS-Bridge/rss-bridge.git
synced 2024-12-18 08:54:20 +03:00
[MistralAIBridge] Add Mistral (#4356)
This commit is contained in:
parent
17d142c038
commit
bf4a918e60
1 changed files with 70 additions and 0 deletions
70
bridges/MistralAIBridge.php
Normal file
70
bridges/MistralAIBridge.php
Normal file
|
@ -0,0 +1,70 @@
|
|||
<?php
|
||||
|
||||
class MistralAIBridge extends BridgeAbstract
|
||||
{
|
||||
const MAINTAINER = 'sqrtminusone';
|
||||
const NAME = 'Mistral AI Bridge';
|
||||
const URI = 'https://mistral.ai/';
|
||||
|
||||
const CACHE_TIMEOUT = 3600; // 1 hour
|
||||
const DESCRIPTION = 'Returns blog posts from Mistral AI';
|
||||
|
||||
const PARAMETERS = [
|
||||
'' => [
|
||||
'limit' => [
|
||||
'name' => 'Limit',
|
||||
'type' => 'number',
|
||||
'required' => true,
|
||||
'defaultValue' => 10
|
||||
],
|
||||
]
|
||||
];
|
||||
|
||||
public function collectData()
|
||||
{
|
||||
$html = getSimpleHTMLDOM(self::URI . 'news/');
|
||||
$limit = $this->getInput('limit');
|
||||
|
||||
$posts = $html->find('article.news-card');
|
||||
for ($i = 0; $i < min($limit, count($posts)); $i++) {
|
||||
$post = $posts[$i];
|
||||
$url = self::URI . $post->find('a', 0)->href;
|
||||
$this->parsePage($url);
|
||||
}
|
||||
}
|
||||
|
||||
private function parsePage($url)
|
||||
{
|
||||
$html = getSimpleHTMLDOMCached($url, 7 * 24 * 60 * 60);
|
||||
$title = $html->find('h1.hero-title', 0)->plaintext;
|
||||
$timestamp_tag = $html->find('i.ti-calendar', 0)->parent;
|
||||
$timestamp = DateTime::createFromFormat('F j, Y', $timestamp_tag->plaintext)->format('U');
|
||||
|
||||
$content = '';
|
||||
|
||||
// Subheader
|
||||
$header = $html->find('p.hero-description', 0);
|
||||
if ($header != null) {
|
||||
$content .= $header->outertext;
|
||||
}
|
||||
|
||||
// Main content
|
||||
$main = $html->find('$article > div.content', 0);
|
||||
|
||||
// Mostly YouTube videos
|
||||
$iframes = $main->find('iframe');
|
||||
foreach ($iframes as $iframe) {
|
||||
$iframe->parent->removeAttribute('style');
|
||||
$iframe->outertext = '<a href="' . $iframe->src . '">' . $iframe->src . '</a>';
|
||||
}
|
||||
|
||||
$main = defaultLinkTo($main, self::URI);
|
||||
$content .= $main;
|
||||
$this->items[] = [
|
||||
'title' => $title,
|
||||
'timestamp' => $timestamp,
|
||||
'content' => $content,
|
||||
'uri' => $url,
|
||||
];
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue