Add opml
This commit is contained in:
parent
2a48f7ebd5
commit
5105ea56eb
|
@ -0,0 +1,86 @@
|
|||
<?xml version=1.0?>
|
||||
<opml version=2.0>
|
||||
<head>
|
||||
<title>the most delicious opml on friend planet</title>
|
||||
<dateCreated>Mon, 08 Aug 2022 07:42:14 +0000</dateCreated>
|
||||
<dateModified>Mon, 08 Aug 2022 07:42:14 +0000</dateModified>
|
||||
<ownerName>acdw</ownerName>
|
||||
<ownerEmail>acdw@acdw.net</ownerEmail>
|
||||
<ownerId>https://git.acdw.net/sfeed/</ownerId>
|
||||
<docs>http://dev.opml.org/spec2.html</docs>
|
||||
</head>
|
||||
<body>
|
||||
<outline text="blogs">
|
||||
<outline type="rss" text="blog // ~ben"
|
||||
xmlUrl="https://tilde.team/~ben/blog/index.xml" htmlUrl="https://tilde.team/~ben/blog/" description="Recent content on blog // ~ben"/>
|
||||
<outline type="rss" text="Benjamin Wil"
|
||||
xmlUrl="https://benjaminwil.info/feed.xml" htmlUrl="https://benjaminwil.info/" description="No description available"/>
|
||||
<outline type="rss" text="p1k3::feed"
|
||||
xmlUrl="https://p1k3.com/feed" htmlUrl="https://p1k3.com/" description="No description available"/>
|
||||
<outline type="rss" text="chrismanbrown.gitlab.io"
|
||||
xmlUrl="https://chrisman.github.io/rss.xml" htmlUrl="https://chrismanbrown.gitlab.io/" description="chrisman blog"/>
|
||||
<outline type="rss" text="Dozens and Dragons"
|
||||
xmlUrl="https://dozensanddragons.neocities.org/rss.xml" htmlUrl="https://dozensanddragons.neocities.org" description="ttrpg blog"/>
|
||||
<outline type="rss" text="Society For Putting Things On Top Of Other Things"
|
||||
xmlUrl="https://society.neocities.org/rss.xml" htmlUrl="https://society.neocities.org/" description="putting things on top of other things since 1991"/>
|
||||
<outline type="rss" text="It's Pro Toad and Superb Owl"
|
||||
xmlUrl="https://git.tilde.town/dozens/protoadandsuperbowl/raw/branch/master/feed.xml" htmlUrl="https://git.tilde.town/dozens/protoadandsuperbowl" description="It's Pro Toad and Superb Owl!"/>
|
||||
<outline type="rss" text=" Oatmeal"
|
||||
xmlUrl="https://eli.li/feed.rss" htmlUrl="https://eli.li" description=" The feed of updates for Oatmeal "/>
|
||||
<outline type="rss" text="Aaron Brady"
|
||||
xmlUrl="https://www.insom.me.uk/feed.xml" htmlUrl="https://www.insom.me.uk/" description="No description available"/>
|
||||
<outline type="rss" text="kindrobot"
|
||||
xmlUrl="https://tilde.town/~kindrobot/index.xml" htmlUrl="https://tilde.town/~kindrobot/" description="Recent content on kindrobot"/>
|
||||
<outline type="rss" text="~lucidiot's wiki"
|
||||
xmlUrl="https://envs.net/~lucidiot/rss.xml" htmlUrl="https://envs.net/~lucidiot/" description="latest articles on ~lucidiot's personal wiki"/>
|
||||
<outline type="rss" text="Brainshit"
|
||||
xmlUrl="https://brainshit.fr/rss" htmlUrl="https://brainshit.fr" description="Site communautaire de partage de connaissances inutiles et d'inepties pseudo-scientifiques."/>
|
||||
<outline type="rss" text="~lucidiot's ideas"
|
||||
xmlUrl="https://tilde.town/~lucidiot/ideas/rss.xml" htmlUrl="https://tilde.town/~lucidiot/ideas/" description="random ideas published by ~lucidiot"/>
|
||||
<outline type="rss" text="#fridaypostcard"
|
||||
xmlUrl="https://tilde.town/~lucidiot/fridaypostcard.xml" htmlUrl="http://tilde.town/~jumblesale/fp.html" description="to contribute, share a link to an image on irc with the text #fridaypostcard. updated every friday"/>
|
||||
<outline type="rss" text="m455's blog"
|
||||
xmlUrl="https://m455.casa/feed.rss" htmlUrl="https://m455.casa" description="A blog about programming and documentation."/>
|
||||
<outline type="rss" text="Rick Carlino's Blog"
|
||||
xmlUrl="https://rickcarlino.com/rss/feed.rss" htmlUrl="https://rickcarlino.com" description="The personal blog of Rick Carlino, a software tinkerer."/>
|
||||
<outline type="rss" text="lipu pi jan Niko"
|
||||
xmlUrl="https://tilde.town/~nihilazo/index.xml" htmlUrl="https://tilde.town/~nihilazo/" description="Recent content on lipu pi jan Niko"/>
|
||||
<outline type="rss" text="(lambda (x) (create x))"
|
||||
xmlUrl="http://lambdacreate.com/static/feed.xml" htmlUrl="http://lambdacreate.com" description="A blog held together entirely by lua, coffee, and crazy ideas."/>
|
||||
<outline type="rss" text="coolguy.website"
|
||||
xmlUrl="https://coolguy.website/rss/" htmlUrl="https://coolguy.website/" description="The personal homepage of friend, writer, code witch,"/>
|
||||
</outline>
|
||||
<outline text="gemlogs">
|
||||
<outline type="rss" text="bakersdozen gemlog"
|
||||
xmlUrl="https://portal.mozz.us/gemini/breadpunk.club/~bakersdozen/gemlog/atom.xml" htmlUrl="https://portal.mozz.us/gemini/breadpunk.club/~bakersdozen/gemlog/" description="No description available"/>
|
||||
<outline type="rss" text="~mio/gemlog"
|
||||
xmlUrl="https://portal.mozz.us/gemini/tilde.town/~mio/log/atom.xml" htmlUrl="https://portal.mozz.us/gemini/tilde.town/~mio/log/" description="No description available"/>
|
||||
</outline>
|
||||
<outline text="podcasts">
|
||||
<outline type="rss" text="Lowtech Radio Gazette"
|
||||
xmlUrl="http://lambdacreate.com/static/ltrg/feed.xml" htmlUrl="http://lambdacreate.com" description="A podcast recorded, produced, and published entirely on junk computers!"/>
|
||||
<outline type="rss" text="trash cat tech chat"
|
||||
xmlUrl="https://podcast.librepunk.club/tctc/ogg.xml" htmlUrl="https://podcast.librepunk.club/tctc/" description="No description available"/>
|
||||
<outline type="rss" text="Tilde Whirl Tildeverse Podcast"
|
||||
xmlUrl="https://tilde.town/~dozens/podcast/rss.xml" htmlUrl="https://tilde.town/~dozens/podcast/index.html" description="the greatest tildeverse podcast in the world"/>
|
||||
</outline>
|
||||
<outline text="weeds">
|
||||
<outline type="rss" text="dozens weed"
|
||||
xmlUrl="https://tilde.town/~dozens/rsspect/feed.xml" htmlUrl="https://tilde.town/~dozens/rsspect/feed.xml" description="my special little weed in my special little garden"/>
|
||||
<outline type="rss" text="vgnfdblg"
|
||||
xmlUrl="https://supervegan.neocities.org/feed.xml" htmlUrl="https://supervegan.neocities.org/feed.xml" description="a vegan food blog"/>
|
||||
<outline type="rss" text="backgammon with dozens"
|
||||
xmlUrl="http://tilde.town/~dozens/backgammon/rss.xml" htmlUrl="http://tilde.town/~dozens/backgammon/" description="No description available"/>
|
||||
<outline type="rss" text="RSRSSS"
|
||||
xmlUrl="https://envs.net/~lucidiot/rsrsss/feed.xml" htmlUrl="https://envs.net/~lucidiot/rsrsss/feed.xml" description="Really Simple Really Simple Syndication Syndication probably just shitposts and feels#8212; An RSS feed about RSS feeds"/>
|
||||
<outline type="rss" text="m455's weed"
|
||||
xmlUrl="https://m455.casa/weed/weed.rss" htmlUrl="https://m455.casa/weed/" description="probably just shitposts and feels"/>
|
||||
</outline>
|
||||
<outline text="misc">
|
||||
<outline type="rss" text="linkbudz rss feed"
|
||||
xmlUrl="https://linkbudz.m455.casa/feed.rss" htmlUrl="https://linkbudz.m455.casa" description="links shared by friends"/>
|
||||
<outline type="rss" text="Glorious Trainwrecks - Make Games Constantly Forever"
|
||||
xmlUrl="https://www.glorioustrainwrecks.com/rss.xml" htmlUrl="https://www.glorioustrainwrecks.com" description="No description available"/>
|
||||
</outline>
|
||||
</body>
|
||||
</opml>
|
|
@ -0,0 +1,159 @@
|
|||
#!/bin/bash
|
||||
# This script has not been tested with other POSIX shells.
|
||||
|
||||
_whoami="opml.sh"
|
||||
_npc="<barista>"
|
||||
_readlinkpls=`readlink -f $0`
|
||||
_whereami=`dirname "$_readlinkpls"`
|
||||
_wheresauce="$_whereami/urls"
|
||||
_wheremug="$_whereami/mug.of.opml"
|
||||
_when_picked=`date -Ru`
|
||||
_when_tasted="$_when_picked"
|
||||
_jam_proxy="https://portal.mozz.us/gemini/"
|
||||
_gob_proxy="https://gopher.tildeverse.org/"
|
||||
|
||||
__twinkle="the most delicious opml on planet earth"
|
||||
__barista="barista"
|
||||
__pail="mail@example.tld"
|
||||
__lid="https://git.tilde.town/mio/opml"
|
||||
__an="<?xml version="1.0"?>
|
||||
<opml version="2.0">
|
||||
<head>
|
||||
<title>{{twinkle}}</title>
|
||||
<dateCreated>{{when_picked}}</dateCreated>
|
||||
<dateModified>{{when_tasted}}</dateModified>
|
||||
<ownerName>{{barista}}</ownerName>
|
||||
<ownerEmail>{{pail}}</ownerEmail>
|
||||
<ownerId>{{lid}}</ownerId>
|
||||
<docs>http://dev.opml.org/spec2.html</docs>
|
||||
</head>
|
||||
<body>"
|
||||
__orange=" <outline text=\"{{kat}}\">"
|
||||
__pecan=" <outline type=\"rss\" text=\"{{sprinkle}}\"
|
||||
xmlUrl=\"{{seed}}\" htmlUrl=\"{{pearl}}\" description=\"{{luncheon}}\"/>"
|
||||
__mousse=" </outline>"
|
||||
__latte=" </body>\n</opml>"
|
||||
|
||||
|
||||
an() {
|
||||
test -f $_wheresauce || (echo "$_npc sauce or it won't happen" && exit 1)
|
||||
test -z "$1" || __twinkle="$1"
|
||||
test -z "$2" || __barista="$2"
|
||||
test -z "$3" || __pail="$3"
|
||||
test -z "$4" || __lid="$4"
|
||||
test -z "$5" || _wheremug="$5"
|
||||
|
||||
# Header
|
||||
echo -e "$_npc okay, it'll take a few minutes, why don't you get a cuppa in
|
||||
the meantime? oh wait ..."
|
||||
echo "$_npc *grabs a mug*"
|
||||
echo -e "$__an" > $_wheremug.tmp
|
||||
sed -i "s/{{twinkle}}/$__twinkle/g" $_wheremug.tmp
|
||||
sed -i "s/{{when_picked}}/$_when_picked/g" $_wheremug.tmp
|
||||
sed -i "s/{{when_tasted}}/$_when_tasted/g" $_wheremug.tmp
|
||||
sed -i "s/{{barista}}/$__barista/g" $_wheremug.tmp
|
||||
sed -i "s/{{pail}}/$__pail/g" $_wheremug.tmp
|
||||
sed -i "s|{{lid}}|$__lid|g" $_wheremug.tmp
|
||||
}
|
||||
|
||||
orange_pecan_mousse() {
|
||||
# Feeds
|
||||
first_kat="true"
|
||||
while read lime; do
|
||||
is_kat=`echo "$lime" | awk '{ print substr($0, 1, 1) }' | grep '\['`
|
||||
is_char=`echo "$lime" | awk '{ print substr($0, 1, 1) }' | grep -E '\[|#'`
|
||||
|
||||
# Category
|
||||
if [ -n "$is_kat" ] && [ "$first_kat" == "false" ]; then
|
||||
echo -e "$__mousse" >> $_wheremug.tmp
|
||||
fi
|
||||
if [ -n "$is_kat" ]; then
|
||||
echo "$_npc *layering mousse*"
|
||||
first_kat="false"
|
||||
kat=`echo "$lime" | awk '{ print substr($0, 2, length($0) - 2) }'`
|
||||
echo -e "$__orange" >> $_wheremug.tmp
|
||||
sed -i "s/{{kat}}/$kat/" $_wheremug.tmp
|
||||
fi
|
||||
|
||||
# Feed URL
|
||||
test -n "$is_char" || seed=`echo "$lime" | awk '{ print $1 }'`
|
||||
if [ ! -z "$seed" ]; then
|
||||
# Protocol
|
||||
echo -e "$_npc *sprinkling* $seed"
|
||||
is_jam=`echo "$seed" | awk '{ print substr($0, 1, 4) }' | grep 'gem'`
|
||||
is_gob=`echo "$seed" | awk '{ print substr($0, 1, 4) }' | grep 'gop'`
|
||||
if [ -n "$is_jam" ]; then
|
||||
seed=`echo "$seed" | sed "s|gemini://|$_jam_proxy|"`
|
||||
elif [ -n "$is_gob" ]; then
|
||||
seed=`echo "$seed" | sed "s|gopher://|$_gob_proxy|"`
|
||||
fi
|
||||
germ=`curl -Ls "$seed"`
|
||||
|
||||
is_rss=`echo -e "$germ" | grep -m 1 "<rss"`
|
||||
# Atom
|
||||
if [ ! -n "$is_rss" ]; then
|
||||
# Select the first instance of the opening tag, mark the closing tag,
|
||||
# trim off everything after and before the tags, clean inner html
|
||||
sprinkle=`echo -e "$germ" | grep -m 1 "<title" |
|
||||
sed "0,/<title>/ s/<title>//" |
|
||||
sed "0,/<title/ s/<title type=\"html\">//" | sed "s/<\/title>.*//" |
|
||||
sed "s/.*<title>//" | sed "s/.*<title type=\"html\">//" |
|
||||
sed "s/<!\[CDATA\[//" | sed "s/\]\]>//" | sed "s/
//"`
|
||||
|
||||
# RSS
|
||||
else
|
||||
sprinkle=`echo -e "$germ" | grep -m 1 "<title>" |
|
||||
sed "s/.*<title>//" | sed "s/<\/title>.*//" |
|
||||
sed "s/<!\[CDATA\[//" | sed "s/\]\]>//" | sed "s/
//"`
|
||||
pearl=`echo -e "$germ" | grep -m 1 "<link>" |
|
||||
sed "s/.*<link>//" | sed "s/<\/link>.*//" | sed "s/
//"`
|
||||
luncheon=`echo -e "$germ" | grep -m 1 "<description>" |
|
||||
sed "s/.*<description>//" | sed "s/<\/description>.*//" |
|
||||
sed "s/<!\[CDATA\[//" | sed "s/\]\]>//" | sed "s/
//"`
|
||||
fi
|
||||
# Guess the website URL from the feed URL to avoid parsing
|
||||
# strings with multiple link tags and no newline delimiters,
|
||||
# some feeds don't provide full paths
|
||||
if [ ! -n "$is_rss" ] || [ "$pearl" == "/" ] || [ "$pearl" == "./" ];
|
||||
then
|
||||
bs=`basename "$seed"`
|
||||
pearl=`echo -e "$seed" | sed "s/$bs//"`
|
||||
fi
|
||||
test -z "$luncheon" && luncheon="No description available"
|
||||
|
||||
echo -e "$__pecan" >> $_wheremug.tmp
|
||||
sed -i "s|{{sprinkle}}|$sprinkle|g" $_wheremug.tmp
|
||||
sed -i "s|{{seed}}|$seed|g" $_wheremug.tmp
|
||||
sed -i "s|{{pearl}}|$pearl|g" $_wheremug.tmp
|
||||
sed -i "s|{{luncheon}}|$luncheon|g" $_wheremug.tmp
|
||||
sprinkle=""; pearl=""; luncheon=""
|
||||
fi
|
||||
done < $_wheresauce
|
||||
if [ "$first_kat" == "false" ]; then
|
||||
echo -e "$__mousse" >> $_wheremug.tmp
|
||||
fi
|
||||
}
|
||||
|
||||
latte() {
|
||||
# Closing
|
||||
echo -e "$__latte" >> $_wheremug.tmp
|
||||
mv $_wheremug.tmp $_wheremug
|
||||
if [ -f $_wheremug ]; then
|
||||
echo "$_npc your OPML is ready, enjoy!"
|
||||
else
|
||||
echo -e "$_npc sorry, something got messed up, lemme know if you want me
|
||||
to make another one."
|
||||
rm -r $_wheremug.tmp
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
case "$1" in
|
||||
make)
|
||||
an "$2" "$3" "$4" "$5" "$6"
|
||||
orange_pecan_mousse
|
||||
latte
|
||||
;;
|
||||
*) echo -e "$_npc $_whoami make|welp [title] [author] [author-email] \
|
||||
[author-url] [output-file]";;
|
||||
esac
|
|
@ -0,0 +1,25 @@
|
|||
# Orange Pecan Mousse Latte
|
||||
|
||||
An OPML generator script for friend planet.
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
- Add some RSS feeds to a `urls` file in the same directory as the script.
|
||||
|
||||
- Run the script:
|
||||
|
||||
```
|
||||
opml.sh make [title] [author] [author-email] [author-url] [output-file]
|
||||
```
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
opml.sh make "mug of opml" "barista" "barista@dev.null" \
|
||||
"https://git.tilde.town/mio/opml" ~/mug.of.opml
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
A free/open license of [acdw's](https://git.acdw.net/sfeed/) choice
|
|
@ -0,0 +1,69 @@
|
|||
[blogs]
|
||||
https://tilde.team/~ben/blog/index.xml # ben
|
||||
https://benjaminwil.info/feed.xml # benjaminwil
|
||||
https://p1k3.com/feed # brennen
|
||||
https://chrisman.github.io/rss.xml # dozens
|
||||
https://dozensanddragons.neocities.org/rss.xml
|
||||
https://society.neocities.org/rss.xml
|
||||
https://git.tilde.town/dozens/protoadandsuperbowl/raw/branch/master/feed.xml
|
||||
https://eli.li/feed.rss # elioat
|
||||
https://www.insom.me.uk/feed.xml # insom
|
||||
https://tilde.town/~kindrobot/index.xml # kindrobot
|
||||
https://envs.net/~lucidiot/rss.xml # lucidiot
|
||||
https://brainshit.fr/rss
|
||||
https://tilde.town/~lucidiot/ideas/rss.xml
|
||||
https://tilde.town/~lucidiot/fridaypostcard.xml
|
||||
https://m455.casa/feed.rss # m455
|
||||
https://rickcarlino.com/rss/feed.rss # netscape_navigator
|
||||
https://tilde.town/~nihilazo/index.xml # nihilazo
|
||||
http://lambdacreate.com/static/feed.xml # wsinatra
|
||||
https://coolguy.website/rss/ # zim
|
||||
|
||||
# [fediverse]
|
||||
# https://tiny.tilde.website/@acdw.rss
|
||||
# https://writing.exchange/@acdw.rss
|
||||
# https://www.librepunk.club/@agafnd.rss
|
||||
# https://cybre.space/@archangelic.rss
|
||||
# https://tilde.zone/@ben.rss
|
||||
# https://tiny.tilde.website/@benjaminwil.rss
|
||||
# https://federation.p1k3.com/@brennen.rss
|
||||
# https://tiny.tilde.website/@dozens.rss
|
||||
# https://write.tildeverse.org/dozens/feed/
|
||||
# https://dog.estate/@eli_oat.rss
|
||||
# https://cybre.space/@eq.rss
|
||||
# https://tiny.tilde.website/@insom.rss
|
||||
# https://mk.absturztau.be/@lucidiot.rss
|
||||
# https://tiny.tilde.website/@m455.rss
|
||||
# https://tiny.tilde.website/@marcus.rss
|
||||
# https://tiny.tilde.website/@mio.rss
|
||||
# https://tiny.tilde.website/@nihilazo.rss
|
||||
# https://tiny.tilde.website/@pho4cexa.rss
|
||||
# https://tiny.tilde.website/@sl2c.rss
|
||||
# https://cybre.space/@vilmibm.rss
|
||||
|
||||
[gemlogs]
|
||||
gemini://breadpunk.club/~bakersdozen/gemlog/atom.xml
|
||||
gemini://tilde.town/~mio/log/atom.xml
|
||||
|
||||
[podcasts]
|
||||
http://lambdacreate.com/static/ltrg/feed.xml # low tech radio gazette
|
||||
https://podcast.librepunk.club/tctc/ogg.xml # trashcat tech chat
|
||||
https://tilde.town/~dozens/podcast/rss.xml # tilde whirl
|
||||
|
||||
[weeds]
|
||||
https://tilde.town/~dozens/rsspect/feed.xml
|
||||
https://supervegan.neocities.org/feed.xml
|
||||
http://tilde.town/~dozens/backgammon/rss.xml
|
||||
https://envs.net/~lucidiot/rsrsss/feed.xml
|
||||
https://m455.casa/weed/weed.rss
|
||||
|
||||
[misc]
|
||||
https://linkbudz.m455.casa/feed.rss
|
||||
https://www.glorioustrainwrecks.com/rss.xml # SpindleyQ's game comm
|
||||
|
||||
|
||||
# Feed lists:
|
||||
# https://git.acdw.net/sfeed/tree/sfeedrc
|
||||
# http://tilde.town/~dozens/feeds/
|
||||
# https://envs.net/~lucidiot/feeds.html
|
||||
# https://m455.casa/feeds.html
|
Loading…
Reference in New Issue