new file: .gitignore

new file:   Dockerfile
	new file:   README.md
	new file:   app.py
	new file:   chat-logs/chat-index.json
	new file:   chat-logs/crea-1-10.08.2020-merged.txt
	new file:   chat-logs/crea-1-11.08.2020-merged.txt
	new file:   chat-logs/crea-1-12.08.2020-merged.txt
	new file:   chat-logs/crea-1-13.08.2020-merged.txt
	new file:   chat-logs/crea-1-14.08.2020-merged.txt
	new file:   chat-logs/crea-1-15.08.2020-merged.txt
	new file:   chat-logs/crea-1-18.08.2020-merged.txt
	new file:   chat-logs/crea-1-20.08.2020-merged.txt
	new file:   chat-logs/crea-1-2020-07-27-1-filtered.txt
	new file:   chat-logs/crea-1-2020-07-28-1-filtered.txt
	new file:   chat-logs/crea-1-2020-07-29-1-filtered.txt
	new file:   chat-logs/crea-1-2020-07-30-1-filtered.txt
	new file:   chat-logs/crea-1-2020-08-03-1-filtered.txt
	new file:   chat-logs/crea-1-2020-08-04-1-filtered.txt
	new file:   chat-logs/crea-1-2020-08-08-1-filtered.txt
	new file:   chat-logs/crea-1-2020-08-09-1-filtered.txt
	new file:   chat-logs/crea-1-2020-08-10-1-filtered.txt
	new file:   chat-logs/crea-1-2020-08-11-1-filtered.txt
	new file:   chat-logs/crea-1-2020-08-13-1-filtered.txt
	new file:   chat-logs/crea-1-2020-08-16-1-filtered.txt
	new file:   chat-logs/crea-1-2020-08-17-1-filtered.txt
	new file:   chat-logs/crea-1-2020-08-18-1-filtered.txt
	new file:   chat-logs/crea-1-2020-08-20-1-filtered.txt
	new file:   chat-logs/crea-1-2020-08-24-1-filtered.txt
	new file:   chat-logs/crea-1-2020-08-29-1-filtered.txt
	new file:   chat-logs/crea-1-2020-08-30-1-filtered.txt
	new file:   chat-logs/crea-1-21.08.2020-merged.txt
	new file:   chat-logs/crea-1-22.08.2020-merged.txt
	new file:   chat-logs/crea-1-23.08.2020-merged.txt
	new file:   chat-logs/crea-1-24.07.2020-merged.txt
	new file:   chat-logs/crea-1-25.07.2020-merged.txt
	new file:   chat-logs/crea-1-25.08.2020-merged.txt
	new file:   chat-logs/crea-1-26.07.2020-merged.txt
	new file:   chat-logs/crea-1-26.08.2020-merged.txt
	new file:   chat-logs/crea-1-27.08.2020-merged.txt
	new file:   chat-logs/crea-1-28.08.2020-merged.txt
	new file:   chat-logs/crea-1-crea-1-10.08.2020-merged-filtered.txt
	new file:   chat-logs/crea-1-crea-1-11.08.2020-merged-filtered.txt
	new file:   chat-logs/crea-1-crea-1-12.08.2020-merged-filtered.txt
	new file:   chat-logs/crea-1-crea-1-14.08.2020-merged-filtered.txt
	new file:   chat-logs/crea-1-crea-1-15.08.2020-merged-filtered.txt
	new file:   chat-logs/crea-1-crea-1-18.08.2020-merged-filtered.txt
	new file:   chat-logs/crea-1-crea-1-20.08.2020-merged-filtered.txt
	new file:   chat-logs/crea-1-crea-1-21.08.2020-merged-filtered.txt
	new file:   chat-logs/crea-1-crea-1-22.08.2020-merged-filtered.txt
	new file:   chat-logs/crea-1-crea-1-23.08.2020-merged-filtered.txt
	new file:   chat-logs/crea-1-crea-1-24.07.2020-merged-filtered.txt
	new file:   chat-logs/crea-1-crea-1-25.07.2020-merged-filtered.txt
	new file:   chat-logs/crea-1-crea-1-25.08.2020-merged-filtered.txt
	new file:   chat-logs/crea-1-crea-1-26.07.2020-merged-filtered.txt
	new file:   chat-logs/crea-1-crea-1-26.08.2020-merged-filtered.txt
	new file:   chat-logs/crea-1-crea-1-27.08.2020-merged-filtered.txt
	new file:   chat-logs/crea-1-crea-1-28.08.2020-merged-filtered.txt
	new file:   chat-logs/survival-1-15.08.2020-merged.txt
	new file:   chat-logs/survival-1-2020-07-27-1-filtered.txt
	new file:   chat-logs/survival-1-2020-07-28-1-filtered.txt
	new file:   chat-logs/survival-1-2020-08-07-1-filtered.txt
	new file:   chat-logs/survival-1-2020-08-08-1-filtered.txt
	new file:   chat-logs/survival-1-2020-08-11-1-filtered.txt
	new file:   chat-logs/survival-1-2020-08-13-1-filtered.txt
	new file:   chat-logs/survival-1-2020-08-14-1-filtered.txt
	new file:   chat-logs/survival-1-2020-08-17-1-filtered.txt
	new file:   chat-logs/survival-1-2020-08-18-1-filtered.txt
	new file:   chat-logs/survival-1-2020-08-19-1-filtered.txt
	new file:   chat-logs/survival-1-25.07.2020-merged.txt
	new file:   chat-logs/survival-1-survival-1-15.08.2020-merged-filtered.txt
	new file:   chat-logs/survival-1-survival-1-25.07.2020-merged-filtered.txt
	new file:   chat-logs/thesur-1-2020-08-17-1-filtered.txt
	new file:   chat-logs/thesur-1-2020-08-31-1-filtered.txt
	new file:   count_all_sessions.py
	new file:   count_sessions.py
	new file:   index.html
	new file:   local-chat-analyzer.js
	new file:   merge_daily_logs.py
	new file:   process_thesur_logs.py
	new file:   quick_add.py
	new file:   requirements.txt
	new file:   script.js
	new file:   server.py
	new file:   statistics-integration.js
	new file:   statistics.css
	new file:   statistics.js
	new file:   style.css
This commit is contained in:
SimolZimol
2025-12-09 15:31:20 +01:00
commit 8ac625a64d
88 changed files with 169343 additions and 0 deletions

102
count_all_sessions.py Normal file
View File

@@ -0,0 +1,102 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
import sys
import json
import codecs
from datetime import datetime
# UTF-8 encoding for Windows console
if sys.platform == "win32":
sys.stdout = codecs.getwriter('utf-8')(sys.stdout.buffer, 'strict')
sys.stderr = codecs.getwriter('utf-8')(sys.stderr.buffer, 'strict')
def count_all_sessions():
"""Zählt alle Sessions getrennt nach Kategorien"""
chat_index_path = "chat-logs/chat-index.json"
if not os.path.exists(chat_index_path):
print("❌ chat-index.json nicht gefunden!")
return
with open(chat_index_path, 'r', encoding='utf-8') as f:
data = json.load(f)
chats = data.get('chats', [])
# Kategorisiere Sessions
categories = {}
total_sessions = len(chats)
total_messages = 0
for chat in chats:
category = chat.get('category', 'unknown')
messages = chat.get('messages', 0)
date = chat.get('date', '')
if category not in categories:
categories[category] = {
'sessions': [],
'total_messages': 0,
'count': 0
}
categories[category]['sessions'].append({
'date': date,
'messages': messages,
'title': chat.get('title', ''),
'participants': len(chat.get('participants', []))
})
categories[category]['total_messages'] += messages
categories[category]['count'] += 1
total_messages += messages
print("=== MINECRAFT CHAT WEBSITE - VOLLSTÄNDIGE ÜBERSICHT ===")
print(f"Total Sessions: {total_sessions}")
print(f"Total Messages: {total_messages:,}")
print("=" * 60)
# Kategorie-Details
for category, info in sorted(categories.items()):
if category == 'crea-1':
print(f"\n🏰 CREATIVE MODE ({info['count']} Sessions)")
print(f" 📊 Total Messages: {info['total_messages']:,}")
elif category == 'survival-1':
print(f"\n⛏️ SURVIVAL MODE ({info['count']} Sessions)")
print(f" 📊 Total Messages: {info['total_messages']:,}")
elif category == 'event':
print(f"\n🎉 THESUR EVENT ({info['count']} Sessions)")
print(f" 📊 Total Messages: {info['total_messages']:,}")
elif category == 'test':
print(f"\n🔧 TESTING ({info['count']} Sessions)")
print(f" 📊 Total Messages: {info['total_messages']:,}")
else:
print(f"\n{category.upper()} ({info['count']} Sessions)")
print(f" 📊 Total Messages: {info['total_messages']:,}")
# Sortiere Sessions nach Datum
sessions = sorted(info['sessions'], key=lambda x: x['date'])
# Zeige Sessions
for session in sessions:
date_obj = datetime.strptime(session['date'], '%Y-%m-%d')
date_formatted = date_obj.strftime('%B %d, %Y')
print(f" 📅 {session['date']}: {session['messages']:,} messages, {session['participants']} players")
if category == 'event':
# Spezielle THESUR Statistiken
dates = [s['date'] for s in sessions]
if dates:
print(f" 📊 Date range: {min(dates)} to {max(dates)}")
print(f" 📊 Timespan: {len(set(dates))} different days")
print("\n" + "=" * 60)
print("🎯 ZUSAMMENFASSUNG:")
for category, info in sorted(categories.items()):
icon = {'crea-1': '🏰', 'survival-1': '⛏️', 'event': '🎉', 'test': '🔧'}.get(category, '')
print(f" {icon} {category}: {info['count']} sessions, {info['total_messages']:,} messages")
if __name__ == "__main__":
count_all_sessions()