mirror of
https://github.com/kmein/niveum
synced 2026-03-18 19:11:08 +01:00
bots: program nietzschebot
This commit is contained in:
@@ -19,6 +19,7 @@ in {
|
|||||||
./nachtischsatan.nix
|
./nachtischsatan.nix
|
||||||
./tlg-wotd.nix
|
./tlg-wotd.nix
|
||||||
./celan.nix
|
./celan.nix
|
||||||
|
./nietzsche.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
systemd.tmpfiles.rules = map (path:
|
systemd.tmpfiles.rules = map (path:
|
||||||
|
|||||||
31
configs/bots/nietzsche.nix
Normal file
31
configs/bots/nietzsche.nix
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
niveumPackages,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
niveum.bots.nietzsche = {
|
||||||
|
enable = true;
|
||||||
|
time = "08:00";
|
||||||
|
mastodon = {
|
||||||
|
enable = true;
|
||||||
|
tokenFile = config.age.secrets.mastodon-token-nietzsche.path;
|
||||||
|
language = "de";
|
||||||
|
};
|
||||||
|
command = toString (pkgs.writers.writeBash "random-nietzsche" ''
|
||||||
|
set -efu
|
||||||
|
random_number=$(( ($RANDOM % 10) + 1 ))
|
||||||
|
if [ "$random_number" -eq 1 ]; then
|
||||||
|
${niveumPackages.random-zeno}/bin/random-zeno "/Literatur/M/Nietzsche,+Friedrich"
|
||||||
|
else
|
||||||
|
${niveumPackages.random-zeno}/bin/random-zeno "/Philosophie/M/Nietzsche,+Friedrich"
|
||||||
|
fi
|
||||||
|
'');
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.timers.bot-nietzsche.timerConfig.RandomizedDelaySec = "10h";
|
||||||
|
|
||||||
|
age.secrets = {
|
||||||
|
mastodon-token-nietzsche.file = ../../secrets/mastodon-token-nietzsche.age;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -389,6 +389,7 @@
|
|||||||
pls = pkgs.callPackage packages/pls.nix {};
|
pls = pkgs.callPackage packages/pls.nix {};
|
||||||
polyglot = pkgs.callPackage packages/polyglot.nix {};
|
polyglot = pkgs.callPackage packages/polyglot.nix {};
|
||||||
qrpaste = pkgs.callPackage packages/qrpaste.nix {};
|
qrpaste = pkgs.callPackage packages/qrpaste.nix {};
|
||||||
|
random-zeno = pkgs.callPackage packages/random-zeno.nix {};
|
||||||
rfc = pkgs.callPackage packages/rfc.nix {};
|
rfc = pkgs.callPackage packages/rfc.nix {};
|
||||||
scanned = pkgs.callPackage packages/scanned.nix {};
|
scanned = pkgs.callPackage packages/scanned.nix {};
|
||||||
swallow = pkgs.callPackage packages/swallow.nix {};
|
swallow = pkgs.callPackage packages/swallow.nix {};
|
||||||
|
|||||||
71
packages/random-zeno.nix
Executable file
71
packages/random-zeno.nix
Executable file
@@ -0,0 +1,71 @@
|
|||||||
|
{ writers, lib, curl, pup, gnused, coreutils, pandoc, gawk, jq }:
|
||||||
|
writers.writeDashBin "random-zeno" ''
|
||||||
|
set -efu
|
||||||
|
|
||||||
|
export PATH=${lib.makeBinPath [ curl pup gnused coreutils pandoc gawk jq ]}
|
||||||
|
|
||||||
|
root="http://www.zeno.org"
|
||||||
|
character_limit=350
|
||||||
|
|
||||||
|
fetch() {
|
||||||
|
curl -sSL "$root$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
blacklist='\/Biographie$'
|
||||||
|
|
||||||
|
next_links() {
|
||||||
|
html="$1"
|
||||||
|
echo "$html" | pup '.zenoTXLinkInt attr{href}' | sed "/$blacklist/d"
|
||||||
|
echo "$html" | pup '.zenoTRNavBottom a attr{href}' | sed "/$blacklist/d"
|
||||||
|
}
|
||||||
|
|
||||||
|
eval_html() {
|
||||||
|
url="$1"
|
||||||
|
html="$(fetch "$url")"
|
||||||
|
links="$(next_links "$html" | sed '/^\s*$/d')"
|
||||||
|
links_count="$(echo "$links" | wc -l)"
|
||||||
|
if [ -z "$links" ]
|
||||||
|
then
|
||||||
|
random_paragraph="$(echo "$html" | pup '.zenoCOMain p' | tr '\n' ' ' | sed 's/<\/p>/&\n/g')"
|
||||||
|
[ "$random_paragraph" = null ] && exit
|
||||||
|
prettify "$url" "$random_paragraph"
|
||||||
|
else
|
||||||
|
next_link="$(echo "$links" | shuf -n1)"
|
||||||
|
eval_html "$next_link"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
prettify() {
|
||||||
|
url="$1"
|
||||||
|
html="$2"
|
||||||
|
|
||||||
|
plain_text="$(echo "$html" | tr '\n' ' ' \
|
||||||
|
| sed \
|
||||||
|
-e 's/<h[1-6][^>]*>[^<]*<\/h[1-6]>//g' \
|
||||||
|
-e 's/\[[0-9]*\]\s*//g' \
|
||||||
|
| pandoc -f html -t plain \
|
||||||
|
| tr '\n' ' '
|
||||||
|
)"
|
||||||
|
|
||||||
|
truncated=$(echo "$plain_text" | awk -v limit="$character_limit" '
|
||||||
|
{
|
||||||
|
for (i = 1; i <= NF; i++) {
|
||||||
|
word_length = length($i) + 1; # +1 for the space
|
||||||
|
if (total_length + word_length > limit) {
|
||||||
|
print "…";
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
total_length += word_length;
|
||||||
|
printf "%s ", $i; # Print the word followed by a space
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print "";
|
||||||
|
}
|
||||||
|
' | sed 's/\([:,.!?;]\)[^:,.!?;]*…/\1 …/')
|
||||||
|
|
||||||
|
url="$(echo "$url" | jq -sRr @uri)"
|
||||||
|
printf "%s\n\n%s\n" "$truncated" "$root$url"
|
||||||
|
}
|
||||||
|
|
||||||
|
eval_html "$1"
|
||||||
|
''
|
||||||
2
secrets
2
secrets
Submodule secrets updated: d621ecc885...e74465f63c
@@ -43,10 +43,12 @@ secrets/mastodon-token-autorenkalender.age
|
|||||||
secrets/mastodon-token-celan.age
|
secrets/mastodon-token-celan.age
|
||||||
secrets/mastodon-token-hesychius.age
|
secrets/mastodon-token-hesychius.age
|
||||||
secrets/mastodon-token-logotheca.age
|
secrets/mastodon-token-logotheca.age
|
||||||
|
secrets/mastodon-token-nietzsche.age
|
||||||
secrets/mastodon-token-smyth.age
|
secrets/mastodon-token-smyth.age
|
||||||
secrets/mastodon-token-tlgwotd.age
|
secrets/mastodon-token-tlgwotd.age
|
||||||
secrets/mastodon-token-transits.age
|
secrets/mastodon-token-transits.age
|
||||||
secrets/matrix-token-lakai.age
|
secrets/matrix-token-lakai.age
|
||||||
|
secrets/matrix-token-lakai-env.age
|
||||||
secrets/maxmind-license-key.age
|
secrets/maxmind-license-key.age
|
||||||
secrets/mega-password.age
|
secrets/mega-password.age
|
||||||
secrets/miniflux-api-token.age
|
secrets/miniflux-api-token.age
|
||||||
|
|||||||
Reference in New Issue
Block a user