aboutsummaryrefslogtreecommitdiff
path: root/bridges/QwenBlogBridge.php
diff options
context:
space:
mode:
Diffstat (limited to 'bridges/QwenBlogBridge.php')
-rw-r--r--bridges/QwenBlogBridge.php49
1 files changed, 49 insertions, 0 deletions
diff --git a/bridges/QwenBlogBridge.php b/bridges/QwenBlogBridge.php
new file mode 100644
index 00000000..2af3f401
--- /dev/null
+++ b/bridges/QwenBlogBridge.php
@@ -0,0 +1,49 @@
+<?php
+
+class QwenBlogBridge extends FeedExpander
+{
+ const NAME = 'Qwen Blog';
+ const URI = 'https://qwenlm.github.io/blog/';
+ const DESCRIPTION = 'Fetch the latest items from Qwen';
+ const MAINTAINER = 'sqrtminusone';
+ const CACHE_TIMEOUT = 3600;
+
+ const PARAMETERS = [
+ '' => [
+ 'limit' => [
+ 'name' => 'Limit',
+ 'type' => 'number',
+ 'required' => true,
+ 'defaultValue' => 10
+ ],
+ ]
+ ];
+
+ public function collectData()
+ {
+ $this->collectExpandableDatas(self::URI . 'index.xml', $this->getInput('limit'));
+ }
+
+ protected function parseItem(array $item)
+ {
+ $dom = getSimpleHTMLDOM($item['uri']);
+ $content = $dom->find('div.post-content', 0);
+ if ($content == null) {
+ return $item;
+ }
+
+ // Fix code blocks
+ foreach ($dom->find('pre.chroma') as $code_block) {
+ // Somehow there are tags in <pre>??
+ $code_block_html = str_get_html($code_block->plaintext);
+ $code = '';
+ foreach ($code_block_html->find('span.line') as $line) {
+ $code .= $line->plaintext . "\n";
+ }
+ $code_block->outertext = '<pre>' . $code . '</pre>';
+ }
+
+ $item['content'] = $content;
+ return $item;
+ }
+}