aboutsummaryrefslogtreecommitdiff
path: root/run/p5p
blob: d0323a1a468d8d291dc964ee6a09c9f791c46ab5 (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
#!/usr/bin/perl

use strict;
use warnings;
use Net::NNTP;
use HTML::Entities;

my @alt = (
	{
		server => 'nntp.perl.org',
		group => 'perl.perl5.porters',
		offset => 0
	},
	{
		server => 'news.gmane.io',
		group => 'gmane.comp.lang.perl.perl5.porters',
		offset => 77786
	},
);

for my $alt (@alt) {
	my $nntp = Net::NNTP->new($alt->{server}, Timeout => 10) or next;
	my ($count, $first, $last) = $nntp->group($alt->{group});

	my %d = %{$nntp->xhdr('Date', [$last-10, $last])};
	my %f = %{$nntp->xhdr('From', [$last-10, $last])};
	my %s = %{$nntp->xhdr('Subject', [$last-10, $last])};

	# TODO: Handle strings like "=?utf-8?Q?readers=E2=80=99_?=time"

	for ((reverse sort keys %d)[0..4]) {
		$_ = encode_entities($_) for ($d{$_}, $f{$_}, $s{_});
		$f{$_} =~ s,@[^.]*\.,@<i>hidden</i>.,;
		$s{$_} = '(no subject)' if not exists $s{$_};
		my $n = $_ + $alt->{offset};
		my $u = "https://www.nntp.perl.org/group/perl.perl5.porters/0/0/msg$n.html";
		print <<HTML;
<div class="entry">
<div class="date">Date: $d{$_}</div>
<div class="from">From: $f{$_}</div>
<div class="subject"><a href="$u">$s{$_}</a></div>
</div>
HTML
	}

	$nntp->quit;
	exit 0;
}
die "Cannot retrieve news: $!";