Scans the Shakes & Fidget guild Hall of Fame for attackable guilds - Rust + Axum backend, Web UI, Docker.
  • Rust 56.7%
  • HTML 40.5%
  • Dockerfile 2.8%
Find a file
DasAoD 3e5ce32bc7
Some checks are pending
Docker Build & Push / build-and-push (push) Has started running
docker.yml: GHA-Cache entfernt
- cache-from/cache-to type=gha entfernt (nicht verfügbar auf Forgejo)
- Build und Push funktioniert bereits korrekt

Co-authored-by: Claude <claude@anthropic.com>
2026-06-14 16:50:00 +02:00
.github/workflows docker.yml: GHA-Cache entfernt 2026-06-14 16:50:00 +02:00
src revert: restore Top-N strict mode 2026-03-21 01:38:51 +01:00
static revert: restore Top-N strict mode 2026-03-21 01:38:51 +01:00
unraid fix: restore sticky header, guild card, scrollable members, checkboxes, TXT export. move icon.jpg > unraid 2026-03-21 02:26:08 +01:00
.dockerignore feat: initial commit 2026-03-18 18:53:25 +01:00
.gitignore feat: initial commit 2026-03-18 18:53:25 +01:00
Cargo.toml fix: static musl build to fix GLIBC version mismatch on older hosts 2026-05-23 00:19:29 +02:00
docker-compose.build.yml feat: initial commit 2026-03-18 18:53:25 +01:00
docker-compose.yml feat: initial commit 2026-03-18 18:53:25 +01:00
Dockerfile fix: static musl build to fix GLIBC version mismatch on older hosts 2026-05-23 00:19:29 +02:00
LICENSE chore: add MIT license 2026-03-18 18:54:58 +01:00
README.md README.md: Mitwirkenden-Block hinzugefügt 2026-06-14 14:12:43 +02:00

⚔️ SF Gilden-Scanner

Docker Hub GitHub

Findet angreifbare Gilden in Shakes & Fidget basierend auf Mitgliederanzahl und den einzelnen Leveln der Mitglieder.

Funktionsweise

Scan-Ablauf (vollautomatisch)

  1. Login per SSO → Charakter auswählen → Gildendaten laden
  2. Phase 1 HoF-Scan: Scannt die komplette Gilden-Ehrenhalle und ermittelt alle Gilden mit Rang, Ehre, Mitgliederzahl
  3. Automatische Filterung: Markiert alle angreifbaren Gilden nach der Spielregel:
    • Alle Gilden unter euch (höherer Rang) → angreifbar
    • Gilden über euch → angreifbar wenn max. 20 Ränge ODER max. 3000 Ehre darüber
  4. Phase 2 Detail-Scan: Für jede angreifbare Gilde wird ViewGuild aufgerufen → alle Mitglieder mit ihren individuellen Leveln
  5. Speicherung: Ergebnisse werden als JSON-Datei persistiert (beim nächsten Start wieder verfügbar)

Filter-Möglichkeiten

  • Max Mitglieder: Nur Gilden mit höchstens X Mitgliedern anzeigen
  • Max höchstes Level: Nur Gilden, deren stärkster Charakter höchstens Level X hat
  • Angegriffene ausblenden: Gilden die gerade angegriffen werden verstecken

Vergleich

Für jede Gilde siehst du:

  • Mitgliederanzahl vs. deine Gilde
  • Max/Min Level und Gesamt-Level-Summe
  • Im Detail-View: Alle Mitglieder mit Level + direkter Vergleich

Export

Der komplette Scan lässt sich als JSON exportieren (Button "📥 Export"), inklusive aller Mitglieder-Level.

Deployment

Docker Hub (empfohlen kein Bauen nötig)

mkdir -p /mnt/user/appdata/sfguild-scanner
cd /mnt/user/appdata/sfguild-scanner

# docker-compose.yml herunterladen
curl -O https://raw.githubusercontent.com/DasAoD/sf-guildscanner/main/docker-compose.yml

# Starten (Image wird automatisch von Docker Hub geladen)
docker compose up -d

# Öffnen: http://<HOST-IP>:8085

Die Scan-Daten werden persistent im ./data/ Ordner gespeichert.

Aus dem Quellcode bauen

git clone https://github.com/DasAoD/sf-guildscanner.git
cd sf-guildscanner
docker compose -f docker-compose.build.yml up -d --build

Manuell ohne docker-compose

docker run -d \
  --name sfguild-scanner \
  -p 8085:8080 \
  -v ./data:/app/data \
  -e RUST_LOG=info \
  --restart unless-stopped \
  dasaod/sf-guildscanner:latest

Scan-Dauer

  • Phase 1 (HoF): ~10-40 Sekunden (abhängig von der Servergröße)
  • Phase 2 (Details): ~0,5 Sek. pro Gilde → bei 100 angreifbaren Gilden ca. 1 Minute

Der Fortschritt wird live im Browser angezeigt.

Projektstruktur

sfguild-scanner/
├── Cargo.toml
├── Dockerfile              # Multi-Stage Build
├── docker-compose.yml
├── .dockerignore
├── src/
│   └── main.rs             # Rust Backend (Axum + sf-api)
├── static/
│   └── index.html          # Web-Frontend
└── data/                   # Persistente Scan-Daten (Volume)
    └── scan_*.json

Hinweise

  • Login-Daten werden nur im RAM gehalten, nie gespeichert
  • Der Container braucht Zugang zu sfgame.net und sso.playa-games.com
  • Erster Build dauert 3-5 Min. (Rust kompiliert alle Dependencies)
  • Zwischen API-Requests wird 400-500ms Pause gehalten (Rate-Limiting)

Credits


Mitwirkende

Dieses Projekt wurde in Zusammenarbeit mit Claude (Sonnet 4.6) von Anthropic entwickelt und iterativ ausgebaut.
Der überwiegende Teil des Codes, der Architektur und der Dokumentation wurde durch KI generiert und gemeinsam verfeinert.

Rolle Person / Tool
Projektidee, Anforderungen & Tests DasAoD
Code, Architektur, Dokumentation Claude (Anthropic)

License

MIT