我使用youtube dl来归档特定的博客。我使用一个自定义的bash脚本(称为tvify(来帮助我将内容组织成Plex文件名,以便稍后通过我的家庭Plex服务器重播。
存档内容很好,除非博主在同一天发布多个视频——如果发生这种情况,我的脚本会在给定的月份/日期创建多个文件,并且plex会看到重复的一集。在plex应用程序中,它将它们作为同一集的不同"版本"组合在一起。结果是,视频的描述不再与其内容匹配,只有一个"版本"出现,除非我访问额外的子菜单。
视频是由你下载的,dl是从一个cron作业开始的,下载程序脚本运行以下内容来帮助格式化它们的文件名,并将它们放入"季节"的适当文件夹中。
该季是视频发布的年份,该集是MMDD格式的月份和日期的组合。
下面是我的"tvify"脚本,它有助于执行文件名操作,并将文件填充到本季的正确文件夹中。
#!/bin/bash
mySuff="$1"
echo mySuff="$mySuff"
if [ -z "$1" ]; then
mySuff="*.mp4"
fi
for i in $mySuff
do
prb=`ffprobe -- "$i" 2>&1`
myDate=`echo "$prb" | grep -E 'dates+:' | cut -d ':' -f 2`
myartist=`echo "$prb" | grep -E 'artists+:' | cut -d ':' -f 2`
myTitle=`echo "$prb" | grep -E 'titles+:' | cut -d ':' -f 2 | sed 's///_/g'`
cwd_stub=`pwd | awk -F'/' '{print $NF}'`
if [ -d "s${myDate:1:4}" ]; then echo "Directory found" > /dev/null; else mkdir "s${myDate:1:4}"; fi
[ -d "s${myDate:1:4}" ] && mv -- "$i" "s${myDate:1:4}/${myartist[@]:1} - s${myDate:1:4}e${myDate:5:8} - ${myTitle[@]:1:40} _$i" || mv -- "$i" "${myartist[@]:1} - s${myDate:1:4}e${myDate:5:8} - ${myTitle[@]:1:40} _$i"
done
我如何修改该脚本以确定是否存在冲突的年份/MMDD文件,如果存在,请在剧集编号后添加适当的后缀,以便丛将它们解释为不同的剧集?
我最终实现了一个数组,计算数组中元素的数量,并用它来附加整数:
#!/bin/bash
mySuff="$1"
echo mySuff="$mySuff"
if [ -z "$1" ]; then
mySuff="*.mp4"
fi
for i in $mySuff
do
prb=`ffprobe -- "$i" 2>&1`
myDate=`echo "$prb" | grep -E 'dates+:' | cut -d ':' -f 2`
myartist=`echo "$prb" | grep -E 'artists+:' | cut -d ':' -f 2`
myTitle=`echo "$prb" | grep -E 'titles+:' | cut -d ':' -f 2 | sed 's///_/g'`
cwd_stub=`pwd | awk -F'/' '{print $NF}'`
readarray -t conflicts < <(find . -maxdepth 2 -iname "*s${myDate:1:4}e${myDate:5:8}*" -type f -printf '%Pn')
[ ${#conflicts[@]} -gt 0 ] && _inc=${#conflicts[@]} || _inc=
if [ -d "s${myDate:1:4}" ]; then echo "Directory found" > /dev/null; else mkdir "s${myDate:1:4}"; fi
[ -d "s${myDate:1:4}" ]
&& mv -- "$i" "s${myDate:1:4}/${myartist[@]:1} - s${myDate:1:4}e${myDate:5:8}$_inc - ${myTitle[@]:1:40} _$i"
|| mv -- "$i" "${myartist[@]:1} - s${myDate:1:4}e${myDate:5:8}$_inc - ${myTitle[@]:1:40} _$i"
done