ew-rss/index.php

75 lines
2.2 KiB
PHP

<?php
/**
* BassDrive RSS Feed Generator
* @author Markus Birth <markus@birth-online.de>
*/
require_once 'lib/BDAParser.php';
require_once 'lib/RSSGenerator.php';
use \BassDrive\BDAParser;
use \BassDrive\RSSGenerator;
$config = parse_ini_file('global.ini', true);
if ($config === false) {
die('global.ini not found or invalid syntax. See https://www.php.net/manual/en/function.parse-ini-file .');
}
date_default_timezone_set($config['config']['time_zone']);
$base_url = $config['config']['base_url'];
if (!array_key_exists('show', $_GET)) {
header('Content-Type: text/html');
echo '<html><body>No show selected. Available shows (RSS feeds):<br/>';
echo '<ul>';
$dirs = glob('shows/*', GLOB_ONLYDIR);
foreach ($dirs as $dir) {
$show = basename($dir);
$show_conf = parse_ini_file($dir . '/config.ini', true);
if ($show_conf === false) {
echo '<li>No config found or invalid: <strong>' . $show . '</strong></li>';
continue;
}
echo '<li>';
echo '<a href="' . $base_url . '?show=' . $show . '">';
echo $show_conf['show']['title'] . ' (' . $show . ')';
echo '</a>';
echo '</li>';
}
echo '</ul>';
echo '</body></html>';
exit();
}
// If we get here, a show was selected
$show = $_GET['show'];
$show_dir = realpath('shows/' . $show) . '/';
$show_conf = parse_ini_file($show_dir . 'config.ini', true);
if ($show_conf === false) {
die('Couldn\'t read (or parse) show\'s config.ini. See https://www.php.net/manual/en/function.parse-ini-file .');
}
// PARSE BASSDRIVE ARCHIVE
$show_data = new BDAParser($show_dir, $show_conf['archive']['url'], $show_conf['archive']['mp3_bitrate']);
$file_list = $show_data->fetchFiles();
// GENERATE RSS XML
$rss_gen = new RSSGenerator($base_url . '?show=' . $show, $base_url . 'shows/' . $show . '/');
$rss_gen->setGlobalConfig($config);
$rss_gen->setShowConfig($show_conf);
$rss_gen->setShowIntro(file_get_contents($show_dir . 'intro.txt'));
foreach ($file_list as $f) {
$rss_gen->addItem($f['url'], $f['title'], $f['size'], $f['duration'], $f['date']);
}
// OUTPUT RSS
$rss = $rss_gen->getRss();
file_put_contents('feed_' . $show . '.rss2', $rss);
header('Content-Type: application/rss+xml');
echo $rss;