summaryrefslogtreecommitdiffstats
path: root/knewsticker-scripts/bbc.pl
blob: 78cb4e3c159ac249555f711e2777fbf7dd6faddc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/usr/bin/perl
=cut

Copyright (c) 2001 Malte Starostik <malte@kde.org>

Unlimited use, modification and distribution granted as long as the above
copyright statement and this sentence remain intact.

=cut

use strict;
use LWP::Simple;

print <<'EOT';
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN"
	"http://my.netscape.com/publish/formats/rss-0.91.dtd">
<rss version="0.91">
<channel>
<title>BBC News Headlines</title>
<description>News from the BBC</description>
<language>en-gb</language>
EOT

my ($secnum, $section, $headline, $url);
foreach (split /\r?\n/, get "http://tickers.bbc.co.uk/tickerdata/story2.dat")
{
	$secnum = $1, $section = '' if (/^STORY ([\d+])/ && $1 != $secnum);
	if (/^HEADLINE (.+)/)
	{
		next if $1 =~ /Last update/;
		$headline = $1;
		$headline =~ s/&/&amp;/g;
		$headline =~ s/</&lt;/g;
		$headline =~ s/>/&gt;/g;
		$headline =~ s/"/&quot;/g;
		$section = $headline, $section =~ s/\s*\d+ (Ja|Fe|Ma|Ap|Ju|Au|Se|Oc|No|De)\S+ \d+$// unless $section;
	}
	if (/^URL (.+)/)
	{
		$url = $1, $url =~ s/&/&amp;/g;
		print <<EOT
<item>
<title>$headline ($section)</title>
<link>$url</link>
</item>
EOT
	}
}

print <<'EOT';
</channel>
</rss>
EOT