mirror of
https://github.com/kmein/niveum
synced 2026-03-19 11:31:09 +01:00
celan: use tei edition
This commit is contained in:
@@ -3,12 +3,7 @@
|
|||||||
lib,
|
lib,
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}: let
|
}: {
|
||||||
celan = pkgs.fetchzip {
|
|
||||||
url = "http://c.krebsco.de/celan.tar.gz";
|
|
||||||
sha256 = "sha256-nA+EwAH2vkeolsy9AoPLEMt1uGKDZe/aPrS95CZvuus=";
|
|
||||||
};
|
|
||||||
in {
|
|
||||||
niveum.bots.celan = {
|
niveum.bots.celan = {
|
||||||
enable = true;
|
enable = true;
|
||||||
time = "08:00";
|
time = "08:00";
|
||||||
@@ -22,28 +17,49 @@ in {
|
|||||||
tokenFile = config.age.secrets.mastodon-token-celan.path;
|
tokenFile = config.age.secrets.mastodon-token-celan.path;
|
||||||
language = "de";
|
language = "de";
|
||||||
};
|
};
|
||||||
command = toString (pkgs.writers.writeDash "random-celan" ''
|
command = toString (pkgs.writers.writePython3 "random-celan.py" { libraries = [pkgs.python3Packages.lxml]; } ''
|
||||||
cd ${celan}
|
from lxml import etree
|
||||||
poem="$(${pkgs.findutils}/bin/find . -type f | ${pkgs.coreutils}/bin/shuf -n1)"
|
import random
|
||||||
source="$(${pkgs.coreutils}/bin/dirname "$poem" \
|
|
||||||
| ${pkgs.gnused}/bin/sed 's#^\./##;s/[-_]/ /g;s!/! › !g;s/0\([0-9]\+\)/\1/g' \
|
|
||||||
| ${pkgs.gnused}/bin/sed 's/Der Sand aus den Urnen/#Der_Sand_aus_den_Urnen (1948)/g' \
|
def xml_text(elements):
|
||||||
| ${pkgs.gnused}/bin/sed 's/Mohn und Gedächtnis/#Mohn_und_Gedächtnis (1952)/g' \
|
return "".join("".join(t.itertext()) for t in elements).strip()
|
||||||
| ${pkgs.gnused}/bin/sed 's/Von Schwelle zu Schwelle/#Von_Schwelle_zu_Schwelle (1955)/g' \
|
|
||||||
| ${pkgs.gnused}/bin/sed 's/Sprachgitter/#& (1959)/g' \
|
|
||||||
| ${pkgs.gnused}/bin/sed 's/Niemandsrose/#& (1963)/g' \
|
tree = etree.parse('${pkgs.fetchurl {
|
||||||
| ${pkgs.gnused}/bin/sed 's/Atemwende/#& (1967)/g' \
|
url = "http://c.krebsco.de/celan.tei.xml";
|
||||||
| ${pkgs.gnused}/bin/sed 's/Fadensonnen/#& (1968)/g' \
|
hash = "sha256-HgNmJYfhuwyfm+FcNtnnYWpJpIIU1ElHLeLiIFjF9mE=";
|
||||||
| ${pkgs.gnused}/bin/sed 's/Lichtzwang/#& (1970)/g' \
|
}}')
|
||||||
| ${pkgs.gnused}/bin/sed 's/Schneepart/#& (1971)/g' \
|
root = tree.getroot()
|
||||||
| ${pkgs.gnused}/bin/sed 's/Zeitgehöft/#& (1976)/g' \
|
|
||||||
| ${pkgs.gnused}/bin/sed 's/Frühwerk/#& (1989)/g' \
|
tei = {"tei": "http://www.tei-c.org/ns/1.0"}
|
||||||
| ${pkgs.gnused}/bin/sed 's/Eingedunkelt/#& (1991)/g' \
|
|
||||||
| ${pkgs.gnused}/bin/sed 's/Nachlaß/#& (1997)/g'
|
poems = root.xpath(".//tei:lg[@type='poem']", namespaces=tei)
|
||||||
)"
|
|
||||||
cat "$poem"
|
poem = random.choice(poems)
|
||||||
echo
|
|
||||||
printf "Aus: %s\n\n#PaulCelan #Celan #Lyrik #poetry" "$source"
|
for stanza in poem.xpath("./tei:lg[@type='stanza']", namespaces=tei):
|
||||||
|
for line in stanza.xpath('./tei:l', namespaces=tei):
|
||||||
|
if line.text:
|
||||||
|
print(line.text.strip())
|
||||||
|
print()
|
||||||
|
|
||||||
|
current_element = poem
|
||||||
|
while current_element is not None:
|
||||||
|
if current_element.tag == "{http://www.tei-c.org/ns/1.0}text":
|
||||||
|
text_element = current_element
|
||||||
|
|
||||||
|
title = xml_text(text_element.xpath("./tei:front/tei:docTitle",
|
||||||
|
namespaces=tei))
|
||||||
|
print(f"Aus: #{title.replace(" ", "_")}", end=" ")
|
||||||
|
|
||||||
|
if date := xml_text(text_element.xpath("./tei:front/tei:docDate",
|
||||||
|
namespaces=tei)):
|
||||||
|
print(f"({date})")
|
||||||
|
break
|
||||||
|
current_element = current_element.getparent()
|
||||||
|
|
||||||
|
print("\n\n#PaulCelan #Celan #Lyrik #poetry")
|
||||||
'');
|
'');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user