sfeed.1 (2863B)
1 .Dd January 7, 2023 2 .Dt SFEED 1 3 .Os 4 .Sh NAME 5 .Nm sfeed 6 .Nd RSS and Atom parser 7 .Sh SYNOPSIS 8 .Nm 9 .Op Ar baseurl 10 .Sh DESCRIPTION 11 .Nm 12 reads RSS or Atom feed data (XML) from stdin. 13 It writes the feed data in a TAB-separated format to stdout. 14 If the 15 .Ar baseurl 16 argument is a valid absolute URL then the relative links or enclosures will be 17 made an absolute URL. 18 .Sh TAB-SEPARATED FORMAT FIELDS 19 The items are output per line in a TAB-separated format. 20 .Pp 21 For the fields title, id and author each whitespace character is replaced by a 22 SPACE character. 23 Control characters are removed. 24 .Pp 25 The content field can contain newlines and these are escaped. 26 TABs, newlines and '\e' are escaped with '\e', so it becomes: '\et', '\en' 27 and '\e\e'. 28 Other whitespace characters except spaces are removed. 29 Control characters are removed. 30 .Pp 31 The order and content of the fields are: 32 .Bl -tag -width 15n 33 .It 1. timestamp 34 UNIX timestamp in UTC+0, empty if missing or on a parse failure. 35 .It 2. title 36 Title text, HTML code in titles is ignored and is treated as plain-text. 37 .It 3. link 38 Link 39 .It 4. content 40 Content, can have plain-text or HTML code depending on the content-type field. 41 .It 5. content-type 42 "html" or "plain" if it has content. 43 .It 6. id 44 RSS item GUID or Atom id. 45 .It 7. author 46 Item, first author. 47 .It 8. enclosure 48 Item, first enclosure. 49 .It 9. category 50 Item, categories, multiple values are separated by the '|' character. 51 .El 52 .Sh EXIT STATUS 53 .Ex -std 54 .Sh EXAMPLES 55 .Bd -literal 56 curl -s 'https://codemadness.org/atom.xml' | sfeed 57 .Ed 58 .Pp 59 To convert the character set from a feed that is not UTF-8 encoded the 60 .Xr iconv 1 61 tool can be used: 62 .Bd -literal 63 curl -s 'https://codemadness.org/some_iso-8859-1_feed.xml' | \e 64 iconv -f iso-8859-1 -t utf-8 | \e 65 sfeed 66 .Ed 67 .Sh EXAMPLE SETUP 68 1. Create a directory for the sfeedrc configuration and the feeds: 69 .Bd -literal 70 mkdir -p ~/.sfeed/feeds 71 .Ed 72 .Pp 73 2. Copy the example 74 .Xr sfeedrc 5 75 configuration: 76 .Bd -literal 77 cp sfeedrc.example ~/.sfeed/sfeedrc 78 $EDITOR ~/.sfeed/sfeedrc 79 .Ed 80 .Pp 81 Or import existing OPML subscriptions using 82 .Xr sfeed_opml_import 1 : 83 .Bd -literal 84 sfeed_opml_import < file.opml > ~/.sfeed/sfeedrc 85 .Ed 86 .Pp 87 3. To update feeds and merge the new items with existing items: 88 .Bd -literal 89 sfeed_update 90 .Ed 91 .Pp 92 4. Format feeds to a plain-text list: 93 .Bd -literal 94 sfeed_plain ~/.sfeed/feeds/* 95 .Ed 96 .Pp 97 Or format feeds to a curses interface: 98 .Bd -literal 99 sfeed_curses ~/.sfeed/feeds/* 100 .Ed 101 .Pp 102 There are also other formatting programs included. 103 The README file has more examples. 104 .Sh SEE ALSO 105 .Xr sfeed_curses 1 , 106 .Xr sfeed_opml_import 1 , 107 .Xr sfeed_plain 1 , 108 .Xr sfeed_update 1 , 109 .Xr sfeed 5 , 110 .Xr sfeedrc 5 111 .Sh AUTHORS 112 .An Hiltjo Posthuma Aq Mt hiltjo@codemadness.org 113 .Sh CAVEATS 114 If a timezone for the timestamp field is not in the RFC822 or RFC3339 format it 115 is not supported and the timezone is interpreted as UTC+0.