sfeed

simple feed reader - forked from https://git.codemadness.org/sfeed
git clone git://src.gearsix.net/sfeedsfeed.zip
Log | Files | Refs | Atom | README | LICENSE

sfeed_opml_export (raw) (1318B)


   1 #!/bin/sh
   2 
   3 # load config (evaluate shellscript).
   4 # loadconfig(configfile)
   5 loadconfig() {
   6 	# allow to specify config via argv[1].
   7 	if [ "$1" != "" ]; then
   8 		# get absolute path of config file required for including.
   9 		config="$1"
  10 		path=$(readlink -f "${config}" 2>/dev/null)
  11 	else
  12 		# default config location.
  13 		config="$HOME/.sfeed/sfeedrc"
  14 		path="${config}"
  15 	fi
  16 
  17 	# config is loaded here to be able to override $sfeedpath or functions.
  18 	if [ -r "${path}" ]; then
  19 		. "${path}"
  20 	else
  21 		printf "Configuration file \"%s\" cannot be read.\n" "${config}" >&2
  22 		echo "See the sfeedrc.example file or the sfeedrc(5) man page for an example." >&2
  23 		exit 1
  24 	fi
  25 }
  26 
  27 # override feed function to output OPML XML.
  28 # feed(name, feedurl, [basesiteurl], [encoding])
  29 feed() {
  30 	# uses the characters 0x1f and 0x1e as a separator.
  31 	printf '%s\037%s\036' "$1" "$2"
  32 }
  33 
  34 # load config file.
  35 loadconfig "$1"
  36 
  37 cat <<!
  38 <?xml version="1.0" encoding="UTF-8"?>
  39 <opml version="1.0">
  40 <head>
  41 	<title>OPML export from sfeed</title>
  42 </head>
  43 <body>
  44 !
  45 
  46 feeds | LC_ALL=C awk '
  47 BEGIN {
  48 	FS = "\x1f"; RS = "\x1e";
  49 }
  50 {
  51 	gsub("&", "\\&amp;");
  52 	gsub("\"", "\\&quot;");
  53 	gsub("'"'"'", "\\&#39;");
  54 	gsub("<", "\\&lt;");
  55 	gsub(">", "\\&gt;");
  56 
  57 	print "\t<outline type=\"rss\" title=\"" $1 "\" text=\"" $1 "\" xmlUrl=\"" $2 "\"/>";
  58 }'
  59 
  60 cat <<!
  61 </body>
  62 </opml>
  63 !