This repository has been archived on 2025-03-20. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
discord-chat-parser/main.py
2021-08-04 14:31:47 +10:00

74 lines
2.1 KiB
Python

import argparse as argp
import csv
import os
from pandas import read_csv
unique_ids = []
unique_old = []
def main(in_args):
if not os.path.isfile(in_args.csv_input):
for filename in os.listdir(in_args.csv_input):
file_path = os.path.join(in_args.csv_input, filename)
process(in_args, str(file_path))
else:
# reading CSV file
csv_path = in_args.csv_input
process(in_args, csv_path)
print("Done.")
def process(in_args, csv_path: str):
user_data = read_csv(csv_path)
discord_ids = user_data['AuthorID'].tolist()
# check if the output exists to add new IDs too
if os.path.isfile(in_args.csv_output) is False:
write_csv(["User ID"], in_args.csv_output)
else:
old_data = read_csv(in_args.csv_output)
for x in old_data['User ID'].tolist():
unique_old.append(int(x))
# check for new IDs
for user_id in discord_ids:
int_id = int(user_id)
print("User: ", str(int_id), end="\r", flush=True)
if user_id not in unique_ids and user_id not in unique_old:
unique_ids.append(user_id)
# add users to the CSV
for user_id in unique_ids:
print("User: ", str(user_id), end="\r", flush=True)
update_csv(user_id, in_args.csv_output)
unique_ids.clear()
def write_csv(fields, csv_path):
"""Create initial csv file"""
with open(csv_path, 'w', newline='') as csv_file:
writer = csv.DictWriter(csv_file, fieldnames=fields)
writer.writeheader()
def update_csv(uids, csv_path):
"""Add ids into CSV"""
with open(csv_path, 'a', newline='') as csv_file:
writer = csv.writer(csv_file)
writer.writerow([uids])
# setup argparse
parser = argp.ArgumentParser(description='Make a list of all unique user IDs from a discord chat exporter CSV',
allow_abbrev=False)
# add arguments
parser.add_argument('csv_input', metavar='csv_input', type=str, help='The path of your exported CSV file')
parser.add_argument('csv_output', metavar='csv_output', type=str, help='The path your new CSV with unique IDs')
args = parser.parse_args()
main(args)