# -*- coding: utf-8 -*-
"""Part B + C: /alkalmazasok (HU) and /en/apps (EN) from one card list. Starts from HEAD each run."""
import html, os, re, sys
sys.path.insert(0, __file__.rsplit("/", 1)[0])
from common import *
from cards_data import *
src = head_text("alkalmazasok.html")
cats = re.findall(r'(
\s*\n\n', src, re.S)
icons = {cid: icon for _, cid, icon in cats}
cards = [] # dicts in page order
for m in re.finditer(r'
(.*?)\n
\n\n', src, re.S):
cid, body = m.group(1), m.group(2)
for cm, c in re.findall(r'\n\s*
(.*?)\n
\n(?=\s*(?:" % c["comment"],
'
',
' ',
'
',
'
%s
' % desc,
'
%s
' % "".join('
%s' % f for f in feats)]
if c["shot"]:
out.append('

' % (c["shot"], name))
out += ['
', ' ', '
']
return "\n".join(out)
def sections(lang):
out = []
for n, (cid, icon_name, hu_t, en_id, en_t) in enumerate(CATEGORIES, 1):
cc = [c for c in cards if c["cat"] == cid]
builtin = sum(1 for c in cc if c["badge"] == "builtin")
k = len(cc) - builtin
if lang == "hu":
count = "%d alkalmazás" % k + (" + %d beépített" % builtin if builtin else "")
sec_id, title = cid, hu_t
else:
count = ("%d app" % k if k == 1 else "%d apps" % k) + (" + %d built in" % builtin if builtin else "")
sec_id, title = en_id, en_t
out.append("""
""" % (n, html.unescape(title).upper() if lang == "en" else title.upper(), sec_id, icons[cid], title, count,
"\n".join(card_html(c, lang) for c in cc)))
return "\n".join(out)
total = sum(1 for c in cards if c["badge"] != "builtin")
oss = sum(1 for c in cards if c["badge"] == "oss")
assert total == 56, total
print("apps:", total, "| OSI open source:", oss)
# ---------------------------------------------------------------- the Hungarian page
start = src.index(" \n ")
hu = src[:start] + sections("hu") + "\n" + src[end:]
hu = sub1(hu, "
Telepíthető alkalmazások — 53 nyílt forráskódú app otthoni szerverre | Felhom.eu",
"
Telepíthető alkalmazások — %d app otthoni szerverre | Felhom.eu" % total)
hu = sub1(hu, "Nextcloud, Immich, Jellyfin, Vaultwarden és 53 további nyílt forráskódú alkalmazás otthoni szerveredre.",
"Nextcloud, Immich, Jellyfin, Vaultwarden — összesen %d alkalmazás otthoni szerveredre, szinte mind nyílt forráskódú." % total)
hu = sub1(hu, '
',
'
' % total)
hu = sub1(hu, '
',
'
' % total)
hu = sub1(hu, '"numberOfItems": 45,', '"numberOfItems": %d,' % total)
hu = sub1(hu, '"description": "Nyílt forráskódú, önhostolt alkalmazások otthoni szerverre",',
'"description": "Önhostolt alkalmazások otthoni szerverre, szinte mind nyílt forráskódú",')
hu = sub1(hu, "
Válassz a nyílt forráskódú alkalmazások széles kínálatából. Mindegyik ingyenes, közösség által fejlesztett szoftver, amit a saját szervereden futtathatsz.
",
"
Válassz %d alkalmazás közül. Szinte mind ingyenes, nyílt forráskódú szoftver, és mind a saját szervereden fut.
" % total)
hu = sub1(hu, "
Az alkalmazások nyílt forráskódúak – bárki ellenőrizheti a működésüket, nincs rejtett funkció",
"
Az alkalmazások szinte mind nyílt forráskódúak – bárki ellenőrizheti a működésüket. A kivételeket a kártyán jelöljük: Zárt forráskód (Plex, Emby), Korlátozott licenc (a forrás olvasható, de a licenc korlátoz), Felhom saját (a mi fejlesztésünk)")
hu = sub1(hu, "
Egyedi igények esetén további alkalmazások is telepíthetők – kérdezz bátran!",
"
Ha egy alkalmazás hiányzik, megnézzük, felvehető-e a katalógusba – kérdezz bátran!")
hu = sub1(hu, """
49
Elérhető alkalmazás
""", """
%d
Elérhető alkalmazás
""" % total)
hu = sub1(hu, """
100%
Nyílt forráskódú
""", """
%d
Nyílt forráskódú
""" % oss)
hu = sub1(hu, "
Ez csak egy részlet a telepíthető alkalmazásokból. Ha van egy konkrét igényed, keress minket és megtaláljuk a megfelelő megoldást!
",
"
Ez a teljes katalógus. Ha van egy konkrét igényed, keress minket — megnézzük, felvehető-e a megfelelő alkalmazás.
")
hu = set_alternates(hu, "/alkalmazasok", "/en/apps")
hu = set_nav(hu, "hu", "/alkalmazasok", "/en/apps")
write("alkalmazasok.html", hu)
# ---------------------------------------------------------------- the English page
en = src[:start] + sections("en") + "\n" + src[end:]
en = en.replace('', '', 1)
head_old = en[: en.index("