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
103 lines
3.7 KiB
Python
103 lines
3.7 KiB
Python
#!/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()
|