Skip to content

Commit 39878f1

Browse files
authored
Merge pull request #5 from coredump-ch/add-more-pages
Add more pages
2 parents fb76c26 + 6b22e84 commit 39878f1

File tree

6 files changed

+136
-21
lines changed

6 files changed

+136
-21
lines changed

.gitignore

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
.venv/
22
__pycache__/
3-
*.gmi
4-
!content/index.gmi
53
certs/
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Gönner und Sponsoren – Coredump
2+
3+
Da die Mitgliederbeiträge unsere Kosten nicht vollständig decken, freuen wir uns sehr über Gönner und Sponsoren!
4+
5+
## Gönnerschaft
6+
Die Gönnerschaft ist ideal wenn du dich nicht als Mitglied verpflichten willst, uns aber trotzdem unterstützen möchtest.
7+
8+
* Gönner: Ab 10 CHF / Monat
9+
* Super-Gönner: Ab 20 CHF / Monat
10+
* 1337-Gönner: Ab 40 CHF / Monat
11+
Die Gönnerschaft ist nicht bindend und muss nicht gekündet werden, ganz unkompliziert. Die Bankdaten für einen Dauerauftrag findest du auf der Kontakt-Seite.
12+
13+
=> ../kontakt.gmi auf der Kontakt-Seite
14+
## Sponsoring
15+
Wir versuchen auf klassische Sponsoren zu verzichten, um unsere Unabhängigkeit zu wahren. Falls du den Verein unterstützen möchtest, wie wäre es mit dem Sponsoring eines Gfrörli-Sensors?
16+
17+
=> https://gfrör.li/ Gfrörli-Sensors
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Mitgliedschaft – Coredump
2+
3+
Als Mitglieder in unserem Verein ist jeder willkommen, der sich für kreativen Umgang mit Technik interessiert und die Vereinsziele unterstützen kann. Um als Mitglied aufgenommen zu werden, wende dich an ein Vorstandsmitglied oder sende eine Email an vorstand@coredump.ch.
4+
5+
=> http://www.coredump.ch/der-verein/ Vereinsziele
6+
=> mailto:vorstand@coredump.ch vorstand@coredump.ch
7+
## Kosten für Mitglieder
8+
Die Mitgliederbeiträge werden benötigt um die Kosten für den Raum und die Einrichtung zu decken. Es gibt verschiedene Mitgliedschafts-Pakete:
9+
10+
## Gönnerschaft / Sponsoring
11+
Falls du kein Aktivmitglied werden möchtest, aber uns trotzdem unterstützen möchtest, könnte eine Gönnerschaft oder ein Sponsoring interessant für dich sein: https://www.coredump.ch/der-verein/gonner-und-sponsoren/
12+
13+
=> gonner-und-sponsoren.gmi https://www.coredump.ch/der-verein/gonner-und-sponsoren/

content/index.gmi

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,14 +65,14 @@ Unsere Räumlichkeiten befinden sich an der Eichwiesstrasse 4 in Jona. Der Raum
6565

6666
Weitere Informationen (Anreise, Parkmöglichkeiten, etc) findest du auf unserer Kontakt-Seite.
6767

68-
=> https://www.coredump.ch/kontakt/ auf unserer Kontakt-Seite
68+
=> kontakt.gmi auf unserer Kontakt-Seite
6969
## Besuch & Mitgliedschaft
7070
Selbstverständlich sind Besucher jederzeit willkommen. Am besten kommst du am Montagabend ab 20:30 Uhr vorbei. Den Öffnungsstatus siehst du auf dieser Website (am Computer oben rechts, in der mobilen Ansicht ganz unten).
7171

7272
Wenn du schon einmal im Space warst und dir dieser gefällt, darfst du sehr gerne auch Vereinsmitglied werden. Alle Informationen dazu findest du auf unserer Mitgliedschafts-Seite.
7373

74-
=> https://www.coredump.ch/der-verein/mitgliedschaft/ Mitgliedschafts-Seite
74+
=> der-verein/mitgliedschaft.gmi Mitgliedschafts-Seite
7575
## Gönnerschaft & Sponsoring
7676
Falls du uns passiv unterstützen möchtest, freuen wir uns auch über private Gönner! Ebenso gibt es die Möglichkeit für Firmen, Sponsor unseres Vereins zu werden. Infos zu Gönnerschaften und Sponsorings gibt es auf dieser Unterseite.
7777

78-
=> https://www.coredump.ch/der-verein/gonner-und-sponsoren/ auf dieser Unterseite
78+
=> der-verein/gonner-und-sponsoren.gmi auf dieser Unterseite

content/kontakt.gmi

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Kontakt – Coredump
2+
3+
### Online
4+
* Email: vorstand@coredump.ch
5+
=> mailto:vorstand@coredump.ch vorstand@coredump.ch
6+
* Mastodon: https://chaos.social/@coredump/
7+
=> https://chaos.social/@coredump/ https://chaos.social/@coredump/
8+
* Unter https://chat.coredump.ch/ betreiben wir eine Mattermost-Instanz als Vereins-Chat. Die Registration steht auch Nichtmitgliedern offen.
9+
=> https://chat.coredump.ch/ https://chat.coredump.ch/
10+
* IRC: Unser Channel ist #coredump auf libera.chat. Der Chat ist allerdings nicht sehr aktiv. Es besteht eine Bridge auf Mattermost.
11+
=> https://libera.chat/ libera.chat
12+
* Unter https://forum.coredump.ch/ findest du unser Diskussionsforum.
13+
=> https://forum.coredump.ch/ https://forum.coredump.ch/
14+
### Location
15+
Unser Raum befindet sich an folgender Adresse:
16+
17+
Eichwiesstrasse 48645 Jona
18+
19+
Space-Telefon: 055 508 14 13
20+
21+
Unser Vereinsraum ist durch den Haupteingang an der Eichwiesstrasse 2/4 erreichbar. Danach durch das Treppenhaus ins UG und durch zwei weitere Türen in die Garage.
22+
23+
Normalerweise sollte die Haupteingangs-Türe geöffnet sein. Falls sie doch mal abgeschlossen ist, kannst du um das Gebäude herumgehen und via Tiefgarage zu unserem Vereinsraum gelangen. Oder einfach die Nummer 055 508 14 13 anrufen, dann macht dir jemand auf (falls jemand anwesend ist).
24+
25+
### Anreise: ÖV
26+
Das Gelände befindet sich nur 5-10 Minuten zu Fuss vom Bahnhof Jona, wo alle 15 Minuten ein Zug von/nach Zürich und Rapperswil fährt. Von Uznach her kommend, kann der Raum auch in 5-10 Minuten ab Bahnhof Blumenau erreicht werden.
27+
28+
### Anreise: Auto
29+
Wir haben keine eigenen Parkplätze, bitte beim Bahnhof Jona (kostenpflichtig) parkieren.
30+
31+
### Postadresse
32+
Bitte Post nicht an die Eichwiesstrasse senden, sondern an:
33+
34+
Verein CoredumpLenzikon 32B8732 Neuhaus
35+
36+
### Bankverbindung
37+
IBAN: CH77 0873 1545 3295 0200 1Empfänger: Verein Coredump, 8640 RapperswilBank: Bank Linth, 8640 Rapperswil

generate.py

Lines changed: 66 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,22 @@ def clean_text(text):
77
return " ".join(text.split())
88

99

10-
def convert_to_gemini(url):
10+
def get_relative_path(from_path, to_path):
11+
"""
12+
Calculate relative path from one file to another.
13+
Example: from_path='der-verein/mitgliedschaft.gmi', to_path='index.gmi'
14+
returns '../index.gmi'
15+
"""
16+
from_dir = os.path.dirname(from_path)
17+
if not from_dir:
18+
return to_path
19+
20+
# Simple relative path calculation for the current use case
21+
levels = from_dir.count("/") + 1
22+
return "../" * levels + to_path
23+
24+
25+
def convert_to_gemini(url, target_filename, pages_map):
1126
response = requests.get(url)
1227
response.raise_for_status()
1328
soup = BeautifulSoup(response.text, "html.parser")
@@ -50,9 +65,34 @@ def convert_to_gemini(url):
5065
text = img.get("alt") or os.path.basename(img.get("src", ""))
5166

5267
if href and text:
53-
if href.startswith("/"):
54-
href = "https://www.coredump.ch" + href
55-
gmi_lines.append(f"=> {href} {text}")
68+
# Link rewriting
69+
# Normalize href for matching
70+
normalized_href = href
71+
if normalized_href.startswith("/"):
72+
normalized_href = "https://www.coredump.ch" + normalized_href
73+
if not normalized_href.endswith("/"):
74+
normalized_href += "/"
75+
76+
link_rewritten = False
77+
for page_url, page_filename in pages_map.items():
78+
# Normalize page_url for matching
79+
norm_page_url = page_url
80+
if not norm_page_url.endswith("/"):
81+
norm_page_url += "/"
82+
83+
if normalized_href == norm_page_url:
84+
# Calculate relative path
85+
relative_href = os.path.relpath(
86+
page_filename, os.path.dirname(target_filename)
87+
)
88+
gmi_lines.append(f"=> {relative_href} {text}")
89+
link_rewritten = True
90+
break
91+
92+
if not link_rewritten:
93+
if href.startswith("/"):
94+
href = "https://www.coredump.ch" + href
95+
gmi_lines.append(f"=> {href} {text}")
5696

5797
# Fallback if no specific content found
5898
if len(gmi_lines) <= 2:
@@ -65,18 +105,28 @@ def convert_to_gemini(url):
65105

66106

67107
def main():
68-
url = "https://www.coredump.ch/"
69-
print(f"Fetching and converting {url}...")
70-
try:
71-
gmi_content = convert_to_gemini(url)
72-
73-
os.makedirs("content", exist_ok=True)
74-
with open("content/index.gmi", "w") as f:
75-
f.write(gmi_content)
76-
77-
print("Successfully generated content/index.gmi")
78-
except Exception as e:
79-
print(f"Error: {e}")
108+
pages = {
109+
"https://www.coredump.ch/": "index.gmi",
110+
"https://www.coredump.ch/kontakt/": "kontakt.gmi",
111+
"https://www.coredump.ch/der-verein/mitgliedschaft/": "der-verein/mitgliedschaft.gmi",
112+
"https://www.coredump.ch/der-verein/gonner-und-sponsoren/": "der-verein/gonner-und-sponsoren.gmi",
113+
}
114+
115+
os.makedirs("content", exist_ok=True)
116+
117+
for url, filename in pages.items():
118+
print(f"Fetching and converting {url} to {filename}...")
119+
try:
120+
gmi_content = convert_to_gemini(url, filename, pages)
121+
122+
target_path = os.path.join("content", filename)
123+
os.makedirs(os.path.dirname(target_path), exist_ok=True)
124+
with open(target_path, "w") as f:
125+
f.write(gmi_content)
126+
127+
print(f"Successfully generated {target_path}")
128+
except Exception as e:
129+
print(f"Error converting {url}: {e}")
80130

81131

82132
if __name__ == "__main__":

0 commit comments

Comments
 (0)