仅在RaspberyPi

时间:2019-02-04 17:10:08

标签: bash raspberry-pi raspbian

我在使用bash脚本在Raspberry Pi上编写下载字幕时遇到问题。

问题是我希望每小时有1个脚本与cron一起运行,以便可以在某些目录中下载新视频文件的字幕。

有一个名为qnapi的程序会自动以正确的格式下载目录中的字幕,但它仅适用于1个文件夹,并且始终会重新下载字幕文件。

用法是:

qnapi /path/to/folder

所以我发现的是

find /media/pi/RaspStorage -iname "*.mkv"

基本上给了我所有电影文件的列表。现在,我想以某种方式比较是否存在具有相同基本名称的* .srt字幕文件,如果不存在,则使用qnapi命令以某种方式循环遍历所有找到的文件。用bash脚本编写它并进行cron。

2 个答案:

答案 0 :(得分:0)

也许与此类似的东西会起作用(未经测试,可能有错别字)。

我正在从Google搜索中猜测qnapi的语法。

基本上,将没有字幕的视频符号链接到一个临时文件夹中,在此处下载字幕,然后将其移回主文件夹。

#!/bin/bash

MEDIA=/media/pi/RaspStorage
WORK=/tmp/workingfolder
mkdir -p "$WORK"
pushd "$WORK" || { echo "ERROR: no working directory"; exit 1; }
# assuming subtitle name is video name except with ".srt" extension
find "$MEDIA" -iname "*.mkv" | while read video; do
    vidnoext="${video%????}"
    viddir="${vidnoext%/*}"
    subtitle="${vidnoext}.srt"
    if [ ! -f "$subtitle" ]; then
        # this assumes bare filenames (without directory) are distinct
        ln -s "$video" "${vidnoext}.mkv"
    fi
done
qnapi -c .
find . -iname '*.srt' | while IFS= read -r subtitle; do
    video="$(realpath "$(subtitle%????}.mkv")"
    mv -i "$subtitle" "$(dirname "$video")/"
done
rm *
popd
rmdir "$WORK"

答案 1 :(得分:0)

感谢帮助:)

我开始工作

#!/bin/bash
echo "Updated DLNA folder"

sudo minidlnad -R

for file in $(find /media/pi/RaspStorage -name '*.mkv' -or -name '*.avi'); do
 name=${file:: -4}
 ext=".srt"
 name=$name$ext

 if [ -f $name ]; then
  echo "Napisy już ściągnięte dla:" "$(basename "$file")"
 else
 qnapi "$(dirname "$file")"/"$(basename "$file")"
 fi
done

工作正常。所有字幕正在下载,如果已经有一些字幕正在跳过