Загрузка только новых субтитров в RaspberyPi - PullRequest
0 голосов
/ 04 февраля 2019

У меня проблемы с записью загрузки субтитров на Raspberry Pi с помощью bash-скрипта.

Проблема в том, что я хотел бы, чтобы 1 скрипт выполнялся с cron каждый час или около того, чтобы загружать субтитры для новых видеофайлов в какой-либо каталог.

Существует программа под названием qnapi, которая автоматически загружаетсубтитры в правильном формате в каталоге, но он работает для 1 папки и всегда повторно загружает файлы субтитров.

использование:

qnapi /path/to/folder

Итак, я нашел

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

в основном дает мне список всех файлов фильмов.Теперь я хотел бы как-то сравнить, существует ли файл субтитров * .srt с тем же базовым именем, и если нет, каким-то образом перебрать все найденные файлы с помощью команды qnapi.Напишите это в скрипте bash и запишите его.

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

спасибо за помощь:)

Я все заработал

#!/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

Работает нормально.Все субтитры загружаются и, если они есть, пропускаются

0 голосов
/ 04 февраля 2019

Возможно, что-то в этом роде будет работать (не проверено, могут иметь опечатки).

Я предполагаю синтаксис qnapi из поиска в Google.

По сути,Видео с символическими ссылками, в которых нет субтитров во временную папку, загрузите туда субтитры и переместите их обратно в основную папку.

#!/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"
...