Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- import shutil
- import re
- from zipfile import ZipFile
- class Person:
- def __init__(self, name):
- self.name = name
- self.messages = []
- self.numberOfCharacters = 0
- self.numberOfMessages = 0
- scriptLocation = os.path.dirname(os.path.realpath(__file__))
- for file in os.listdir(scriptLocation):
- if file.endswith(".zip"):
- archive = os.path.join(scriptLocation, file)
- with ZipFile(archive, 'r') as zipFiles:
- zipFiles.extractall('temp')
- unpackedArchiveLocation = f"{scriptLocation}\\temp"
- try:
- for fileName in os.listdir(unpackedArchiveLocation):
- with open(f"{unpackedArchiveLocation}\\{fileName}") as file:
- fileContent = file.read()
- numberOfPeople = fileName.count('-')
- regexPattern = '(.*).txt'
- for i in range(0, numberOfPeople):
- regexPattern = f"(.*)-{regexPattern}"
- names = re.search(regexPattern, fileName)
- people = {}
- for i in range(1, numberOfPeople + 2):
- people[names.group(i)] = Person(names.group(i))
- for line in fileContent.splitlines():
- if people.get(line) is not None:
- currentPerson = people.get(line)
- currentPerson.numberOfMessages += 1
- currentPerson.messages.append('')
- else:
- currentPerson.numberOfCharacters += len(line)
- currentPerson.messages[-1] += f"{line}\n"
- conversationFolderName = f"Messenger\\{'-'.join(people.keys())}"
- os.makedirs(conversationFolderName, exist_ok=True)
- for person in people.values():
- personFolderName = f"{conversationFolderName}\\{person.name}"
- os.makedirs(personFolderName, exist_ok=True)
- with open(f"{personFolderName}\\{person.name}-statistics.txt", "w+") as statisticsFile:
- statisticsFile.write(
- f"Name: {person.name}\n" +
- f"Messages: {len(person.messages)}\n" +
- f"Total characters: {person.numberOfCharacters}\n" +
- f"Average message length: {person.numberOfCharacters / person.numberOfMessages}\n")
- with open(f"{personFolderName}\\{person.name}-messages.txt", "w+") as messagesFile:
- for i, message in enumerate(person.messages):
- messagesFile.write(f"{i + 1}:\n{message}\n")
- except Exception as exception:
- print(f"Something went wrong\n\nException message: {str(exception)}")
- finally:
- shutil.rmtree(unpackedArchiveLocation)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement