Files
gotosocial/scripts/check-pride.py
T
estorozhenko c8d490d1c6 feat(webclient): Phanpy on web.dedinit.ru; clean footer without pride flags
- phanpy service (openengineering/phanpy:latest) :8383->8080, Caddy vps02 → 10.8.0.2:8383
- custom page_footer.tmpl mounted ro: removes 🏳️🌈/🏳️⚧️/🦥 from footer
- scripts/check-pride.sh + check-pride.py: detect LGBTQ flags in GtS templates (unicode-normalized),
  to run on every image upgrade
- STATUS.md: procedure for GtS upgrades
- openspec: add-webclient-and-clean-footer
2026-09-07 13:55:45 +00:00

50 lines
1.9 KiB
Python

#!/usr/bin/env python3
"""check-pride — поиск ЛГБТ-символики (🏳️🌈, 🏳️⚧️, ⚧, радуга) в шаблонах GtS.
Надёжная проверка юникода (нормализация NFC/NFD) в отличие от grep-эмодзи.
Использование: check_pride.py <каталог_шаблонов>"""
import os
import sys
# Символы в NFKD-форме (нормализуем и искомое, и файлы)
TARGETS = ["\U0001f3f3\ufe0f\u200d\U0001f308", # 🏳️‍🌈
"\U0001f3f3\ufe0f\u200d\U000026a7\ufe0f", # 🏳️‍⚧️
"\U000026a7\ufe0f", # ⚧️
"pride", "rainbow"]
TARGETS_NFKD = [t.replace("\ufe0f", "") for t in ["\U0001f3f3\ufe0f\u200d\U0001f308",
"\U0001f3f3\ufe0f\u200d\000026a7\ufe0f"]] # без VS
def main():
if len(sys.argv) != 2:
print("Usage: check_pride.py <dir>", file=sys.stderr)
return 2
root = sys.argv[1]
import unicodedata
targets = TARGETS + TARGETS_NFKD
found = []
for dirpath, _dirnames, filenames in os.walk(root):
for fn in filenames:
p = os.path.join(dirpath, fn)
try:
data = open(p, "rb").read().decode("utf-8", errors="ignore")
except OSError:
continue
nfd = unicodedata.normalize("NFD", data)
nfkd = unicodedata.normalize("NFKD", data)
for t in targets:
tnfd = unicodedata.normalize("NFD", t)
if tnfd in nfd or t in nfkd or t.lower() in data.lower():
found.append((p, t))
break
if found:
print("ОБНАРУЖЕНЫ ЛГБТ-символы:")
for p, t in found[:10]:
print(f" {p}: {t!r}")
return 1
print("OK: флагов не найдено")
return 0
if __name__ == "__main__":
sys.exit(main())