--- /dev/null
+<?php
+// url that the mp3s will be accessed at (by the podcast client)
+$url = "http://yourdomain.com/mypodcasts/";
+// path the mp3 directories are stored under
+$mp3_dir = "/var/www/html/mypodcasts/";
+
+/* Each mp3 directory must have an 'info.json' file in the format:
+
+{"author":"Peter F Hamilton","title":"The Great North Road"}
+
+You can add the following optional fields:
+summary, owner, owneremail, subtitle, description, image_file
+
+If image.jpg exists in the directory, that will be used
+as the podcast thumbnail (it can be overriden with
+image_file above)
+
+*/
+
+if(empty($_REQUEST['dirname']))
+ die("Missing mp3 directory\n");
+
+$dir_name = basename($_REQUEST['dirname']);
+
+if(preg_match('/[^a-z_\-0-9]/i', $dir_name))
+ die("Invalid directory\n");
+
+if(!empty($dir_name) and is_dir($mp3_dir.$dir_name)) {
+
+ $path = $mp3_dir.$dir_name."/";
+ $meta_file = $path."info.json";
+ $files = glob($path."*.mp3");
+
+ if(!file_exists($meta_file))
+ die("Missing info.json\n");
+
+ header("Content-Type: application/rss+xml; charset=utf-8");
+
+ $json = json_decode(file_get_contents($meta_file), true);
+ $author = $json['author'];
+ $replace_array['#AUTHOR#'] = $replace_array['#OWNER#'] = $replace_array['#OWNEREMAIL#'] = $json['author'];
+ $replace_array['#TITLE#'] = $json['title'];
+ $replace_array['#SUMMARY#'] = $replace_array['#DESCRIPTION#'] = $json['title']." by ".$json['author'];
+ if(isset($json['summary']))
+ $replace_array['#SUMMARY#'] = $json['summary'];
+ $replace_array['#LINK#'] = $url.$dir_name;
+ $replace_array['#IMAGE_URL#'] = $url.$dir_name."/image.jpg";
+ if(isset($json['image_file']))
+ $replace_array['#IMAGE_URL#'] = $url.$dir_name."/".$json['image_file'];
+ $replace_array['#SUBTITLE#'] = "";
+ if(isset($json['subtitle']))
+ $replace_array['#SUBTITLE#'] = $json['subtitle'];
+ if(isset($json['description']))
+ $replace_array['#DESCRIPTION#'] = $json['description'];
+ if(isset($json['owner']))
+ $replace_array['#OWNER#'] = $json['owner'];
+ if(isset($json['owneremail']))
+ $replace_array['#OWNEREMAIL#'] = $json['owneremail'];
+
+ $number = 1;
+ $all_items = "";
+ foreach($files as $file) {
+ $size = filesize($file);
+ $filename = basename($file);
+ $all_items .= "
+<item>
+ <title>$filename</title>
+ <itunes:summary>$filename</itunes:summary>
+ <description>$filename</description>
+ <link>$url/$dir_name/$filename</link>
+ <enclosure url=\"$url/$dir_name/$filename\" type=\"audio/mpeg\" length=\"$size\"></enclosure>
+";
+$all_items .= " <pubDate>".date("r", strtotime("1 June 2018 21:00 +$number days"))."</pubDate>";
+$all_items .= "
+ <itunes:author>$author</itunes:author>
+ <itunes:duration>00:32:16</itunes:duration>
+ <itunes:explicit>no</itunes:explicit>
+ <guid>$url$dir_name/$filename</guid>
+</item>";
+
+ $number++;
+}
+
+
+} else {
+ http_response_code(404);
+ die("File not found\n");
+}
+
+
+function header_update($buffer) {
+ global $replace_array;
+ return(str_replace(array_keys($replace_array), $replace_array, $buffer));
+}
+
+ob_start("header_update");
+?>
+<?xml version="1.0" encoding="UTF-8"?>
+<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
+<channel>
+<title>#TITLE#</title>
+<link>#LINK#</link>
+<language>en-us</language>
+<itunes:subtitle>#SUBTITLE#</itunes:subtitle>
+<itunes:author>#AUTHOR#</itunes:author>
+<itunes:summary>#SUMMARY#</itunes:summary>
+<description>#DESCRIPTION#</description>
+<itunes:owner>
+ <itunes:name>#OWNER#</itunes:name>
+ <itunes:email>#OWNEREMAIL#</itunes:email>
+</itunes:owner>
+<itunes:explicit>no</itunes:explicit>
+<itunes:image href="#IMAGE_URL#" />
+<itunes:category text="Arts">
+<itunes:category text="Literature"/>
+</itunes:category>
+<?php
+
+ob_end_flush();
+
+echo $all_items;
+?>
+
+</channel>
+</rss>