2
#----------------------------------------------------------------------
4
# iPlayer post-processing - just create RSS index
5
# Copy & paste from more featureful "done" script
9
#----------------------------------------------------------------------
13
use POSIX qw(strftime);
15
my $hostname = `hostname -f`;
18
create_rss_index("/big/iplayer/tv", "iPlayer TV");
19
create_rss_index("/big/iplayer/radio", "iPlayer radio");
21
sub create_rss_index {
22
my ($dir, $feed_title) = @_;
24
my $urlbase = "http://$hostname/$_";
28
my $mime_type = 'audio/mp4';
31
$mime_type = 'video/mp4';
32
for my $flv (glob("*.flv")) {
35
$m4v =~ s:_b......._default\.m4v:.m4v:;
36
system('HandBrakeCLI', '-i', $flv, '-o', $m4v, '--preset', 'Apple TV 2');
40
print "\n\nConversion to MP4 failed!!!\n\n";
45
while (glob("*.{m4v,m4a,aac,mp4,mp3}")) {
47
print "Deleting $_\n";
50
my ($size, $time) = (stat $_)[7,9];
51
$xml{$time} = [$_, $size];
54
my $now = strftime "%a, %d %b %Y %H:%M:%S %z", gmtime;
55
open XML, ">index.xml" or die $!;
57
<?xml version="1.0" encoding="UTF-8" ?>
60
<title>$feed_title</title>
61
<description>Automatic $feed_title downloads</description>
62
<link>$urlbase/index.xml</link>
63
<lastBuildDate>$now</lastBuildDate>
64
<pubDate>$now</pubDate>
66
for my $time (sort { $b <=> $a } keys %xml) {
67
my ($file, $size) = @{$xml{$time}};
69
$title =~ s:\.(m4v|m4a|aac|mp4|mp3)$::;
70
if ($title =~ /_(.*?)_TX(\d\d)(\d\d)(\d\d)_ITV/) {
71
my @month = qw(_ Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
72
my $date = int($2) . "-" . $month[$3] . "-20$4";
75
$title =~ s:\b([A-Z])([A-Z]+)\b:$1 . lc($2):eg;
79
$title =~ s:b[0-9a-z]{7} default$::;
81
my $url = "$urlbase/$file";
83
my $description = int($size / (1<<20)) . "MB";
84
my $rfctime = strftime "%a, %d %b %Y %H:%M:%S %z", gmtime($time);
88
<description>$description</description>
90
<enclosure url="$url" length="$size" type="$mime_type" />
92
<pubDate>$rfctime</pubDate>