bash 用于扫描重复剧集编号、追加剧集修饰符的脚本

bash script to scan for repeated episode numbers, append episode modifier

我使用 youtube-dl 来存档特定的博客。我使用自定义 bash 脚本(称为 tvify)来帮助我将我的内容组织成 Plex 就绪的文件名,以便稍后通过我的家庭 Plex 服务器重播。

存档内容工作正常,除非博主在同一日期发布了多个视频 - 如果发生这种情况,我的脚本会为给定 month/date 创建多个文件并且 plex 会看到重复的一集。在 plex 应用程序中,它将它们作为同一集的不同 'versions' 塞在一起。结果是视频的描述不再与其内容相符,只有一个 'version' 出现,除非我访问一个额外的子菜单。

视频由您从 cron-job 启动的 tube-dl 下载,下载器脚本运行以下命令以帮助格式化它们的文件名并将它们放入适当的文件夹中 'seasons'。

The season is the year when the video was released, and the episode is the combination of the month and date in MMDD format.

下面是我的 'tvify' 脚本,它有助于执行文件名操作并将文件填充到适合季节的适当文件夹中。

#!/bin/bash
mySuff=""
echo mySuff="$mySuff"

if [ -z "" ]; then
        mySuff="*.mp4"
fi

for i in $mySuff
do
        prb=`ffprobe -- "$i" 2>&1`
        myDate=`echo "$prb" | grep -E 'date\s+:' | cut -d ':' -f 2`
        myartist=`echo "$prb" | grep -E 'artist\s+:' | cut -d ':' -f 2`
        myTitle=`echo "$prb" | grep -E 'title\s+:' | 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

我如何修改该脚本以确定是否存在冲突的 year/MMDD 文件,如果存在,请在剧集编号后附加适当的后缀,以便 plex 将它们解释为不同的剧集?

我最终实现了一个数组,计算数组中元素的数量,并用它来追加整数:

#!/bin/bash
mySuff=""
echo mySuff="$mySuff"

if [ -z "" ]; then
        mySuff="*.mp4"
fi

for i in $mySuff
do
        prb=`ffprobe -- "$i" 2>&1`
        myDate=`echo "$prb" | grep -E 'date\s+:' | cut -d ':' -f 2`
        myartist=`echo "$prb" | grep -E 'artist\s+:' | cut -d ':' -f 2`
        myTitle=`echo "$prb" | grep -E 'title\s+:' | 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 '%P\n')
        [ ${#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