Write a feed file

This commit is contained in:
Alexis Marie Wright 2022-03-05 09:34:37 -05:00
parent 2f86d3e559
commit ef399a7c1c
4 changed files with 42 additions and 26 deletions

View File

@ -7,6 +7,8 @@ class Config {
'description' => '...',
'feedUrl' => 'http://www.inhuman-comic.com/feed.xml'
];
// where to write the feed file
const feedPath = '/tmp/feed.xml';
// where to start spidering
const baseURL = "http://www.inhuman-comic.com";

34
lib/generate-feed.php Normal file
View File

@ -0,0 +1,34 @@
<?php
declare(strict_types = 1);
include_once('config/default.php');
function generateFeed($content) {
$loader = new \Twig\Loader\FilesystemLoader('templates/');
$twig = new \Twig\Environment($loader, [
'autoescape' => false
]);
$now = date('c');
$items = [];
foreach ($content as $result) {
$items[] = $twig->render('item.xml', [
'title' => $result['pageNumber'] . " | " . Config::feed['title'],
'url' => $result['url'],
'imageUrl' => $result['imageUrl'],
'date' => $now
]);
};
$feed = $twig->render('feed.xml', [
'title' => Config::feed['title'],
'description' => Config::feed['description'],
'baseUrl' => Config::baseURL,
'feedUrl' => Config::feed['feedUrl'],
'date' => $now,
'items' => implode("\n", $items)
]);
return $feed;
};

2
lib/parse-page.php Normal file
View File

@ -0,0 +1,2 @@
<?php
declare(strict_types = 1);

View File

@ -11,32 +11,10 @@ include_once('config/default.php');
include_once('lib/log.php');
include_once('lib/fetch-pages.php');
include_once('lib/generate-feed.php');
$content = fetchPages();
$feedXml = generateFeed($content);
$loader = new \Twig\Loader\FilesystemLoader('templates/');
$twig = new \Twig\Environment($loader, [
'autoescape' => false
]);
$now = date('c');
$items = [];
foreach ($content as $result) {
$items[] = $twig->render('item.xml', [
'title' => $result['pageNumber'] . " | " . Config::feed['title'],
'url' => $result['url'],
'imageUrl' => $result['imageUrl'],
'date' => $now
]);
};
print $twig->render('feed.xml', [
'title' => Config::feed['title'],
'description' => Config::feed['description'],
'baseUrl' => Config::baseURL,
'feedUrl' => Config::feed['feedUrl'],
'date' => $now,
'items' => implode("\r\n", $items)
]);
Log::info("writing " . strlen($feedXml) . " bytes to " . Config::feedPath);
file_put_contents(Config::feedPath, $feedXml, LOCK_EX);