summaryrefslogtreecommitdiff
path: root/gmi2email
diff options
context:
space:
mode:
authorSean Whitton <spwhitton@spwhitton.name>2021-01-24 11:36:27 -0700
committerSean Whitton <spwhitton@spwhitton.name>2021-01-24 11:36:27 -0700
commitd41a20368ed7c7458495cfbe2a13eab50f9c5c28 (patch)
tree88c5e151174ec2c934905832a5979b8cdbd2aba7 /gmi2email
parente004630d1e55006a4d8bce8dfea0658274f69d1b (diff)
downloadmailscripts-d41a20368ed7c7458495cfbe2a13eab50f9c5c28.tar.gz
gmi2email: support for Atom feeds
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Diffstat (limited to 'gmi2email')
-rwxr-xr-xgmi2email25
1 files changed, 17 insertions, 8 deletions
diff --git a/gmi2email b/gmi2email
index 714e58a..dd9edba 100755
--- a/gmi2email
+++ b/gmi2email
@@ -32,6 +32,7 @@ use Getopt::Long;
use Email::Date::Format "email_date";
use Time::Local;
use Mail::Field::AddrList;
+use XML::Feed;
my ($from, $to, $do_subs, $inline_images, $no_mail);
GetOptions
@@ -108,15 +109,23 @@ foreach my $sub (<$subs_fh>) {
}
};
#>>>
- $type =~ m{^text/gemini} or die "$sub is not gemtext";
- for (@$data) {
- if (/^#\s*/ and not $gemlog) {
- chomp($gemlog = $');
- } elsif (my ($uri, $y, $m, $d, $title)
- = /^=>\s*(\S+)\s+([0-9]{4})-([0-9]{2})-([0-9]{2})[\s-]*(.*)/) {
- send_subscribed_gemtext($uri, $gemlog // "unknown gemlog",
- $title, timelocal 0, 0, 12, $d, $m - 1, $y);
+ if ($type =~ m{^text/gemini}) {
+ for (@$data) {
+ if (/^#\s*/ and not $gemlog) {
+ chomp($gemlog = $');
+ } elsif (my ($uri, $y, $m, $d, $title)
+ = /^=>\s*(\S+)\s+([0-9]{4})-([0-9]{2})-([0-9]{2})[\s-]*(.*)/) {
+ send_subscribed_gemtext($uri, $gemlog // "unknown gemlog",
+ $title, timelocal 0, 0, 12, $d, $m - 1, $y);
+ }
}
+ } elsif ($type =~ m{^text/xml}) {
+ my $feed = XML::Feed->parse(\$data);
+ send_subscribed_gemtext($_->link, $feed->title, $_->title,
+ ($_->issued // $_->modified)->epoch)
+ for $feed->entries;
+ } else {
+ die "$sub is not gemtext";
}
}