diff options
Diffstat (limited to 'knewsticker-scripts/bbc.pl')
-rwxr-xr-x | knewsticker-scripts/bbc.pl | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/knewsticker-scripts/bbc.pl b/knewsticker-scripts/bbc.pl new file mode 100755 index 0000000..78cb4e3 --- /dev/null +++ b/knewsticker-scripts/bbc.pl @@ -0,0 +1,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/&/&/g; + $headline =~ s/</</g; + $headline =~ s/>/>/g; + $headline =~ s/"/"/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/&/&/g; + print <<EOT +<item> +<title>$headline ($section)</title> +<link>$url</link> +</item> +EOT + } +} + +print <<'EOT'; +</channel> +</rss> +EOT |