snapchat-memories-downloader/calculate_stats.py

53 lines
1.1 KiB
Python

import subprocess
from tqdm.asyncio import tqdm
from pathlib import Path
import pandas as pd
file_directory = Path("./downloads")
files_to_check = [
p
for p in file_directory.iterdir()
if p.is_file() and p.suffix.lower() in [".jpg", ".mp4"]
]
progress_bar = tqdm(
total=len(files_to_check),
desc="Gathering",
unit="file",
disable=False,
)
file_df = pd.DataFrame(data=files_to_check, columns=["file"])
def get_metadata(row: pd.Series) -> pd.Series:
file_path = row["file"]
command = [
"exiftool",
"-T",
"-createdate",
"-gpslatitude",
"-gpslongitude",
str(file_path),
]
result = subprocess.run(
command, capture_output=True, text=True, check=False, timeout=30
)
metadata = result.stdout.strip().split("\n")[0].split("\t")
if len(metadata) < 3:
metadata = metadata + ["-"] * (3 - len(metadata))
row["createdate"] = metadata[0]
row["gpslatitude"] = metadata[1]
row["gpslongitude"] = metadata[2]
progress_bar.update(1)
return row
df = file_df.apply(get_metadata, axis=1)
df.to_csv("./temp/filemetadata.csv", index=False, sep="#")