scripts/nix/find-dup-episodes.sh

28 lines
963 B
Bash

#! /usr/bin/env nix-shell
#! nix-shell -i bash -p bash fd ripgrep
root=/srv/pool/multimedia/media/Series
while IFS= read -r directory; do
while IFS= read -r season; do
season_episodes=()
while IFS= read -r episode; do
number="$(basename "$episode" |
rg --pcre2 -o "S\d+E\d+" |
rg --pcre2 -o "\d+$" |
awk '$0*=1')"
season_episodes+=($((number)))
done < <(fd . "$season" -tf -d1 \
-E '*.srt' \
-E '*.jpg' \
-E '*.nfo' \
-E '*.json')
dupe=$(printf '%s\n' "${season_episodes[@]}" | awk '!($0 in seen){seen[$0];next} 1')
if [[ -z $dupe ]]; then
continue
fi
echo "The episode $dupe is duplicated on $(basename "$season") of $(basename "$directory")"
echo "$season"
echo "_______________"
done < <(fd . "$directory" -td -d1)
done < <(fd . "$root" -td -d 1)