Updates for packages
This commit is contained in:
74
roles/Yggdrasil/package/yggdrasil-sort-shows
Executable file
74
roles/Yggdrasil/package/yggdrasil-sort-shows
Executable file
@@ -0,0 +1,74 @@
|
||||
#!/bin/bash
|
||||
|
||||
baseDir="/srv/yggdrasil/Videos/Shows"
|
||||
|
||||
# Helptext
|
||||
function usage() {
|
||||
echo Sort files from /srv/yggdrasil/new_acquisition into appropriate show directories.
|
||||
echo
|
||||
echo Usage: $0 '[ -h ] [ -f fileToUse ] [ -c ] [ -n ] [ -q ] [ -v ]'
|
||||
echo ' -c: Create sample sort file'
|
||||
echo ' -f: Use this sort file'
|
||||
echo ' -h: print this helptext.'
|
||||
echo ' -n: Do not lock the libary -- this is useful for sorting other things after execution.'
|
||||
echo ' -q: Mute output'
|
||||
echo ' -v: Increase verbosity'
|
||||
}
|
||||
|
||||
# Handle a file
|
||||
# param file: the file to parse
|
||||
function HandleFile() {
|
||||
file="$1"
|
||||
# Sort out file metadata
|
||||
dirtyshowname="$(echo "$file" | sed 's/.[Ss][0-9].[Ee][0-9].*$//')"
|
||||
showname="$(ls -1 "$baseDir" | grep -iE "$dirtyshowname")"
|
||||
epinfo="$(echo "$file" | sed "s/^${dirtyshowname}.//" | head -c 6)"
|
||||
season="$(echo "$epinfo" | head -c 3 | tail -c 2)"
|
||||
episode="$(echo -n "$epinfo" | tail -c 2)"
|
||||
target="$baseDir"/"$showname"/Season\ "$season"
|
||||
# Ensure metadata sorting didn't return nulls
|
||||
for i in dirtyshowname showname epinfo season episode target; do
|
||||
if [ -z "${!i}" ]; then
|
||||
echo ERROR: Could not handle "$file" because we could not find $i
|
||||
return
|
||||
fi
|
||||
done
|
||||
# Make sure target exists
|
||||
# Move file to target
|
||||
if [ ! -d "$(dirname "$target")" ]; then
|
||||
echo WARN -- could not find the right show to sort "$file"
|
||||
fi
|
||||
# Make sure the show folder exists
|
||||
mkdir -p "$target"
|
||||
mv "$file" "$target"
|
||||
}
|
||||
|
||||
|
||||
# Parse arguments.
|
||||
while getopts 'b:cf:hnqv' OPTION; do
|
||||
case "$OPTION" in
|
||||
b) baseDir="${OPTARG}" ;;
|
||||
h) usage; exit 0 ;;
|
||||
l) exec $0 $(echo $@ | sed "s/-s\s+${OPTARG}(.|$)//") | tee -a "${OPTARG}" ;;
|
||||
n) nolock="1" ;;
|
||||
q) exec $0 $(echo $@ | sed 's/-q//') &>/dev/null ;;
|
||||
v) set -x ;;
|
||||
*) usage; exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
cd /srv/yggdrasil/new_acquisition
|
||||
|
||||
echo INFO Unlocking filestore
|
||||
if [ `whoami` != "root" ]; then yggdrasil-unlock; fi
|
||||
|
||||
echo INFO Sorting....
|
||||
# Find all files matching *S??E??* syntax
|
||||
ls -1d *[S,s]??[E,e]??* 2>/dev/null | while read file; do
|
||||
HandleFile "${file}"
|
||||
done
|
||||
|
||||
if [ -z "$nolock" ] && [ `whoami` != "root" ]; then
|
||||
echo INFO Locking filestore
|
||||
yggdrasil-lock &>/dev/null
|
||||
fi
|
Reference in New Issue
Block a user