Skip to content
This repository has been archived by the owner on May 14, 2022. It is now read-only.

fpmi-lectorium/lectorium-pipeline

Repository files navigation

lectorium-pipeline

В этом репозитории два рабочих инструмента: модифицированный concat_ng и конвейер.

Установка

$ # Clone
$ git clone https://github.com/bcskda/lectorium-pipeline
$ cd lectorium-pipeline
$ # Secrets
$ mkdir __secret
$ # mv ~/credentials.json __secret
$ # Env
$ python3 -m venv .venv
$ source .venv/bin/activate
(.venv) $ pip install -r requirements.txt

На данный момент неизвестно, в какой момент Google API потребует залогиниться. TODO: скрипт, чтобы делать это при установке. При дальнейшем использовании API логиниться не придётся.

pipeline

Конвейер, от поиска видео до загрузки в облако. После старта достаточно подключать к машине карты памяти с записями.

Типичный запуск (в трёх шеллах, поскольку не форкаются):

(shell 1) python -m daemons.transcoder --importer 127.0.0.1:1338 --bind 127.0.0.1:1337
(shell 2) python -m daemons.importer --transcoder 127.0.0.1:1337 --devwatch 127.0.0.1:1339 --bind 127.0.0.1:1338
(shell 3) python -m daemons.devwatch --importer 127.0.0.1:1338 --bind 127.0.0.1:1339

При запуске daemons.importer в логе будут мусорные INFO-записи от google-api-python-client, к сожалению, это нормально.

Также см. скриншоты

Типичное завершение: Ctrl+C вызовет обработчик. Если в это время происходил импорт - undefined behavior.

Состоит из трёх компонентов.

  1. devwatch
  • Через udev обнаруживает подключаемые блочные устройства
  • Монтирует их в /mnt/lectorium-devwatch-...
  • Пытается обнаружить характерные папки (вроде PRIVATE/AVCHD/...)
  • Посылает обнаруженные директории на импорт
  • По завершении обработки устройства штатно отмонтирует его
  • (!) Работает от рута
  1. importer
  • Принимает от предыдущей стадии примонтированные корни карт памяти
  • Код из concat_ng разбивает записи на группы
  • Группы отправляются на предобработку
  • Сохраняет в папки вида /дата/#номер_время
  • По завершении предобработки загружает в облако
  • После обработки карты памяти сообщает предыдущей стадии
  1. transcoder
  • Принимает таски на предобработку
  • Сообщает импорту по завершении
  • При минимальной доработке масштабируется на соседние хосты в достаточно быстрой сети

Что плохого

  • Запускаются в трёх разных шеллах, не уходят в фон (решается tmux'ом)

  • Неудобные логи - немало лишней информации, но не хватает отметок времени

  • Нет ручного контроля процесса: если импортировать, то всё сразу

Что хорошего

  • Умеет в настраиваемые профили, см. profiles.md

  • Если подключить несколько карт одновременно, последовательно отработает все

  • Перекодирование может масштабироваться

main.py

Это concat_ng c модификациями:

  • Загрузка в облако по завершении предобработки
  • Профили предобработки

Типичный вызов:

(.venv) $ python main.py -i /mnt/media/sdd -o /mnt/media/lectorium-ssd/Lectorium -p concat_compress -u --folder-id=XXYYZZ
  • -p / --profile - профиль, общий для всех импортируемых записей
  • -u / --upload - загружать результаты в облако (по умолчанию: нет)
  • --folder-id - ID папки в google drive, куда будут загружены результаты

Можно посмотреть вывод python main.py --help и подкрутить конфиг

Профили хранятся в ff_presets/v2/PROFILE_NAME.json

  • Входные файлы:

    • Принимаются списком логических групп
    • К группам можно применять протоколы (на данный момент только concat)
  • Выходные файлы:

    • Может быть много
    • Входы задаются отдельно для каждого
    • Имена задаются как общий basename из CLI + суффикс
  • Разное:

    • Поддержка filter_complex и объявленных фильтрами pad-ов в качестве входов

Сейчас профиля два: склейка со сжатием и без

Для примера см. concat_compess

Что плохого

  • Нужно запускать для каждой карты, как concat_ng

  • Не создаёт в облаке подпапки по датам (исправимо, TODO)

Что хорошего

  • Сам загружает в облако

  • Проще, чем конвейер

  • До сих пор не сбоил

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages