stats.py

Author: Anonymous w5vohl

Expire: Never

import json import os import re from collections import defaultdict log_pattern = re.compile( r"\[(?P[^\]]+)\] Queue upload requested by (?P.+?) for file (?P.+)" ) # Function to parse the log file and update statistics def parse_log_file(file_path, folder_count, user_count, unique_logs): with open(file_path, 'r') as file: for line in file: if "Queue upload requested by" not in line: continue match = log_pattern.match(line.strip()) if not match: print(line) if match: date_str = match.group('date') username = match.group('username') filepath = match.group('filepath') # Combine date and file path to create a unique identifier unique_id = f"{date_str}_{filepath}" # Check if the log entry is unique if unique_id in unique_logs: continue # Skip duplicate logs # Add unique ID to unique logs unique_logs.add(unique_id) # Extract the directory path by stripping off the file name folder = '\\'.join(filepath.split('\\')[:-1]) # Increment folder and user counts folder_count[folder] += 1 user_count[username] += 1 # Function to print statistics def print_statistics(folder_count, user_count): # Print folder statistics sorted_folders = sorted(folder_count.items(), key=lambda x: x[1], reverse=True) print("\nMost Common Folders:") for folder, count in sorted_folders: print(f"{folder}: {count} requests") # Print user statistics sorted_users = sorted(user_count.items(), key=lambda x: x[1], reverse=True) print("\nUsers with Most Requests:") for user, count in sorted_users: print(f"{user}: {count} requests") # Function to save statistics and unique logs to files def save_data(folder_count, user_count, unique_logs, folder_file, user_file, log_file): with open(folder_file, 'w') as f: json.dump(folder_count, f) with open(user_file, 'w') as f: json.dump(user_count, f) with open(log_file, 'w') as f: json.dump(list(unique_logs), f) # Function to load existing statistics and unique logs from files def load_data(folder_file, user_file, log_file): if os.path.exists(folder_file): with open(folder_file, 'r') as f: folder_count = defaultdict(int, json.load(f)) else: folder_count = defaultdict(int) if os.path.exists(user_file): with open(user_file, 'r') as f: user_count = defaultdict(int, json.load(f)) else: user_count = defaultdict(int) if os.path.exists(log_file): with open(log_file, 'r') as f: unique_logs = set(json.load(f)) else: unique_logs = set() return folder_count, user_count, unique_logs # File paths for storing statistics and unique logs folder_stats_file = 'soulseek_logs/folder_stats.json' user_stats_file = 'soulseek_logs/user_stats.json' unique_logs_file = 'soulseek_logs/unique_logs.json' # Load existing data folder_count, user_count, unique_logs = load_data(folder_stats_file, user_stats_file, unique_logs_file) # File path to your new log file log_file_path = 'soulseek_log.txt' # Parse the log file and update statistics parse_log_file(log_file_path, folder_count, user_count, unique_logs) # Print updated statistics print_statistics(folder_count, user_count) # Save updated data save_data(folder_count, user_count, unique_logs, folder_stats_file, user_stats_file, unique_logs_file)

Attached Files

9/8/2024

JavaScript is not enabled in your browser. Most features and paste content is missing . Switch to full experience by editing url from /nojs/[link] to /share/[link]