sfeed show mastodon toot title

2024-02-20T14:03:20Z

I use sfeed to read feeds, and I love it.

=> https://codemadness.org/sfeed.html

I also prefer to follow people on mastodon with the associated rss feed, I mean https://instance.tld/@username.rss.

However, this rss feed don't have a title, resulting of the publication date displayed in sfeed_curses.

Even if I can read the toot when pressing enter, I'd like to see a preview of the toot.

sfeed is so good that you can write you own filter() function.

So now, in my sfeedrc, I have:

filter() {
	case "$1" in
	masto*:*)
		# don't insert date in title, just first line
		awk -F '\t' 'BEGIN { OFS = "\t"; }
		{
			# turn description into title
			$2 = gensub("<[^>]+>", " ", "G", $4)
			print $0
		}
		'
		;;

It isn't perfect, but give a nice preview:

2024-02-19 11:12  I forgot about audacity's fork Tenacity  it's still alive!    https://  codeber…
2024-02-18 17:04  Interesting project, but a bit weird     it's a tool to create interactive documents, i…
2024-02-14 16:39  TIL ecryptfs doesn't support very long file names  long as in 148 characters "only"     
2024-02-12 19:24  As a former ZNC user, is there an advantage at switching to soju?  I don't have any ZNC…
2024-02-11 16:48  If you want to experience  # Gentoo   Linux for the first time, or if you are bored wit…
2024-02-08 23:50   # OpenBSD   may introduces Word into the base system    https://  marc.info/?l=openbsd…

Of course, I have to name mastodon feeds with "masto:otherthing" like this:

feed 'masto:drewdevault@fosstodon.org' 'https://fosstodon.org/@drewdevault.rss'
feed 'masto:fredg@pouet.chapril.org' 'https://pouet.chapril.org/@fredg.rss'
feed 'masto:ploum@mamot.fr' 'https://mamot.fr/@ploum.rss'
feed 'masto:noroanka@im-in.space' 'https://im-in.space/@noroanka.rss'
feed 'masto:solene@bsd.network' 'https://bsd.network/@solene.rss' "" "iso-8859-1"
feed 'mastotag:solarpunk' 'https://im-in.space/tags/solarpunk.rss'
feed 'mastotag:openbsd' 'https://im-in.space/tags/openbsd.rss'

You you're interesed, here is the full filter() I use now:

filter() {
	case "$1" in
	masto*:*)
		# don't insert date in title, just first line
		awk -F '\t' 'BEGIN { OFS = "\t"; }
		{
			# turn description into title
			$2 = gensub("<[^>]+>", "", "G", $4)
			print $0
		}
		'
		;;
	"xkcd.com")
		# do not turn html with w3m/lynx -dump to get img url
		awk -F '\t' 'BEGIN { OFS = "\t"; }
		{
			$5 = "plain";
			# extract img url
			match($4, "src=\"(.+)");
			imglink = substr($4, RSTART,RLENGTH);
			split(imglink , a, "\"");
			imglink = a[2];
			# same with alt
			match($4, "alt=\"(.+)");
			alt = substr($4, RSTART,RLENGTH);
			split(alt , a, "\"");
			alt = a[2]
			# append img link at the end
			$4 = sprintf("%s \\n=> %s", alt,  imglink);
			print $0
			# download the img
			#cmd = sprintf("cd /home/prx/lessernet/box/; curl -O -s -L -H 'User-Agent:' '%s'", imglink)
			#system(cmd)
		}
		'
		;;
	*)
		cat
		;;
	esac | \
	# replace privacy invasive services with alternatives
	# see https://farside.link/

	sed 's@www\.youtube\.com/@invidious.fdn.fr/@g' | \
	sed 's@youtu\.be/@invidious.fdn.fr/@g' | \
	sed 's@.*twitter\.com/@https://nitter.net/@g' | \
	sed 's@.*reddit\.com/@https://i.opnxng.com/@g' | \
	sed 's@.*medium\.com/@https://scribe.rip/@g' | \

	awk -F '\t' 'BEGIN { OFS = "\t"; }
	function filterlink(s) {
		# protocol must start with http, https or gopher.
		if (match(s, /^(http|https|gopher):\/\//) == 0) {
			return "";
		}

		# shorten feedburner links.
		if (match(s, /^(http|https):\/\/[^\/]+\/~r\/.*\/~3\/[^\/]+\//)) {
			s = substr($3, RSTART, RLENGTH);
		}

		# strip tracking parameters
		# urchin, facebook, piwik, webtrekk and generic.
		gsub(/\?(ad|campaign|fbclid|pk|tm|utm|wt)_([^&]+)/, "?", s);
		gsub(/&(ad|campaign|fbclid|pk|tm|utm|wt)_([^&]+)/, "", s);

		gsub(/\?&/, "?", s);
		gsub(/[\?&]+$/, "", s);

		return s
	}
	{
		$3 = filterlink($3); # link
		$8 = filterlink($8); # enclosure

		# try to remove tracking pixels:  tags with 1px width or height.
		gsub("]*(width|height)[[:space:]]*=[[:space:]]*[\"'"'"' ]?1[\"'"'"' ]?[^0-9>]+[^>]*>", "", $4);

		print $0;
	}'
}


Comments?

Send it by mail (anonymous, add a signature if you want):

=> mailto:prx@si3t.ch?subject=sfeed-mastodon-title

Diff list instructions:

=> https://si3t.ch/log/commentaires.txt

Proxy Information
Original URL
gemini://si3t.ch/log/2024-02-20-sfeed-mastodon-title.txt
Status Code
Success (20)
Meta
text/plain
Capsule Response Time
488.179141 milliseconds
Gemini-to-HTML Time
0.650382 milliseconds

This content has been proxied by September (3851b).