bash - 用于扫描重复剧集编号的 bash 脚本,附加剧集修饰符
问题描述
我使用 youtube-dl 来归档特定的博客。我使用自定义 bash 脚本(称为 tvify)来帮助我将我的内容组织成 Plex 就绪的文件名,以便以后通过我的家庭 Plex 服务器重播。
存档内容工作正常,除非博主在同一日期发布多个视频 - 如果发生这种情况,我的脚本会为给定的月份/日期创建多个文件,并且 plex 会看到重复的剧集。在 plex 应用程序中,它将它们作为同一集的不同“版本”填充在一起。结果是视频的描述不再与其内容匹配,除非我访问额外的子菜单,否则只会出现一个“版本”。
视频由你从 cron-job 开始的 tube-dl 下载,下载器脚本运行以下命令来帮助格式化它们的文件名并将它们填充到“季节”的适当文件夹中。
季节是视频发布的年份,剧集是 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 '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
如何修改该脚本以识别是否存在冲突的年份/MMDD 文件,如果存在,请在剧集编号后附加适当的后缀,以便 plex 将它们解释为不同的剧集?
解决方案
我最终实现了一个数组,计算数组中元素的数量,并使用它来追加整数:
#!/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 '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
推荐阅读
- python - Python Faker 电话号码格式
- python - 是否有一种 NumPy 方法可以一次对数组中的多个元素进行采样?
- web-applications - 使用 PATCH 方法为状态更改请求创建 CSRF html 文件
- javascript - 从 api 响应正文中保存 pdf 文件 - pdf 保存为空白文件
- linux - 复制文件 - 对于每个日期从源到目标目录具有相同的日期
- node.js - 如何使用 Sequelize 查询 WHERE “NOT NULL” AND “NOT EQUAL TO [STRING]”?
- python - 在一段时间内,读取 RPi GPIO 的 True 循环需要开关关闭的时间,然后状态变为打开的时间
- typescript - typescript-eslint/no-unused-vars 错误地显示分配了一个值但从未使用过
- postgresql - 在 postgres 的求和查询中返回一行,即使没有数据
- python - python Pusher 缺少信息