LINUX.ORG.RU

запуск кодирования при обнаружении файла

 , , , ,


0

1

При копировании в автоматическом режиме (auto usb copy) в директории создается папка с датой (типа 01-01-2014), а в ней создается папка с видеофайлами (таких папок с видео может быть сколько угодно). Также в этой или этих папках (которые с видео) будет создан текстовый файл - отчет о завершении копирования. Так вот:
как начать перекодировку видеофайлов, когда текстовый файл будет создан?
Кодирую ffmpeg или ffmbc на Mac Os.

установить пакет inotify-tools, и потом допилить вот этот скрипт (мне лень, всё очевидно):

#! /bin/bash
DIRECTORY_TO_OBSERVE="js"      // might want to change this
function block_for_change {
  inotifywait -r \
    -e modify,move,create,delete \
    $DIRECTORY_TO_OBSERVE
}
BUILD_SCRIPT=build.sh          // might want to change this too
function build {
  bash $BUILD_SCRIPT
}
build
while block_for_change; do
  build
done
stevejobs ★★★★☆
()
Ответ на: комментарий от musicman_08

тогда есть нативные для osx способы, типа launchd и automator

http://superuser.com/questions/163985/run-script-on-file-change-on-mac-os-x

http://superuser.com/questions/308058/execute-a-command-when-files-change-in-...

если даже это никак - напишите простую прогу на питоне, вот заготовка слежения за каталогом:

import os, time
path_to_watch = "."
before = dict ([(f, None) for f in os.listdir (path_to_watch)])
while 1:
  time.sleep (100)
  after = dict ([(f, None) for f in os.listdir (path_to_watch)])
  added = [f for f in after if not f in before]
  removed = [f for f in before if not f in after]
  if added: print "Added: ", ", ".join (added)
  if removed: print "Removed: ", ", ".join (removed)
  before = after

да, неэффективно, тупой поллинг вместо обработки события файловой системы, зато ну уж точно сработает

и потом как разберетесь, в качестве реакции - system.exec на скрипт с запуском транскодирования

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

Может быть есть решение по проще... Всего лишь надо выполнить условие:
если файл определенного типа (например txt) присутствует в директории, то нужно создать скрипт определенного содержания в этой директории и выполнить его. Затем удалить файл txt. Поставить это в крон и все.
Вот не разберусь как передать путь из find дальше...

musicman_08
() автор топика
Ответ на: комментарий от musicman_08

Получаю пути каталогов с видеофайлами с помощью

find path/to/total/folder -name "*.txt" -exec dirname {} \;
Как дальше передать эти пути в переменную, для того, чтобы выполнять в этих каталогах скрипт транскодирования?

musicman_08
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.