В этой статье речь пойдёт об одной программе для ведения архива медиафайлов в экспедициях. Если вам интересно почему для фольклорных экспедиций нам потребовалось писать программы, прошу в раздел история:

История

С 2009 года я участвую в комплексных исследовательских экспедициях, которые проводит фонд “Электронная энциклопедия истории и культуры русских сёл и деревень” в сотрудничестве со школой №1553 имени В.И. Вернадского.

За многие годы поездок у нас сформировался такой порядок работы:
Весной мы исследуем сёла и подбираем одно в которое поедем летом. Какого-то определённого алгоритма выбора у нас нет - либо нас приглашают уже знакомые с нашей работой, либо мы ищем по друзьям и друзьям друзей место для поездки - небольшое село с историей, в котором остались коренные жители (а не только дачники).
Летом выезжаем в экспедицию с группой волонтёров и в течение 10-14 дней занимаемся исследованиями: 

  • записываем интервью с местными жителями, 

  • оцифровываем фотографии и документы, 

  • снимаем фильмы 

и одновеременно на основе собранных материалов создаём несколько медиапродуктов:

  • сайт, 

  • фильмы, 

  • выставку и 

  • родовые древа. 

Кроме того, мы обучаем работе с сайтом. Примеры наших работ можно посмотреть на сайте derevni-sela.ru

В нашей команде работают взрослые и школьники старших классов до 30-ти человек. За всё время экспедиции мы собираем около 300 часов интервью, а фотографий и оцифрованных документов получается около 2000. Все эти материалы должны стать основой для статьи на сайте или кусочком фильма или помочь в следующих интервью, поэтому описание всех материалов - это необходимый этап работы в экспедиции. Более того, волонтёры-школьники, участвующие в экспедиции после поездки уже не так активно участвуют в описании архива, поэтому мы стремимся к полному описанию всех материалов именно за этот короткий период поездки. 

Так стало понятно, что все материалы должны были быть описаны подробно и сложены в архив.

Решение 1. Локальное сетевое хранилище

Первое решение, которое мы предприняли, это создали локальную сеть, в которую добавили все ноутбуки и на одном из компьютеров расшарили общую папку, в которой лежал архив. Описание медиафайлов было разделено на 2 части: у фотографий меняли название. Для аудио и видео создавался отдельный файлик, в котором поминутно было описано, что происходит (тематическая разметка, но не дословная расшифровка). 

Процесс разметки аудио и видео был достаточно трудоёмким, особенно из-за того, что приходилось переключаться между окнами разных программ. Поэтому возникла идея создать программу, ускоряющую этот процесс.

Решение 2. Программа для описи интервью

Сразу оговорюсь, почему мы не взяли программы для создания субтитров, например. Или программы типо Audacity. Дело в том, что во всех этих программах функции были заточены слишком узко. Кроме того помимо описания самого содержимого файла уже давно хотелось хранить какую-то метаинформацию: участников интервью, обстоятельства, место, время и множество других подробностей.

Благодаря неустанному энтузиазму Сергея Махотина была создана первая версия программы описи. В ней использовался для основы MS Excel и Visual Basic for Applications. 

Интерфейс росписи интервью в Excel.
Интерфейс росписи интервью в Excel.

Программа была протестирована и доработана автором данной статьи в экспедициях 2019, 2021 годов и получила название exelOpis (да-да, с опечаткой в слове Excel).

Однако структура описания и хранения не изменилась. Для каждого аудиофайла было необходимо создавать отдельный экселевский файл, чтобы описать его содержимое. А фотографии описывались по-старому. Но описание фотографий по-старому приводило к ужасно длинным названиям (как бы вы описали фото, где 10 человек и всех нужно подписать с датами рождения и полным ФИО).

Кроме того, после экспедиции архив нужно было переносить на другие жесткие диски и тогда возникали проблемы с этими длинными подписями. Таким образом стало понятно, что нужен какой-то общий способ, объединяющий все способы описания и хранения медиафайлов.

Альтернативы

Нам бы подошли программы CAQDAS (Computer-assisted qualitative data analysis software). Но в QualCoder и Aquad был сложнейший интерфейс, и при том описание аудио и видео невозможно было делать одновременно с воспроизведением.

Atlas.ti использовали наши коллеги-реставраторы. Но нас не устраивала, во-первых, стоимость продукта, во-вторых сложность интерфейса и требование к ресурсам компьютера (экспедиционные ноутбуки не очень сильны). По той же причине мы не использовали Adobe Bridge или Davinci Resolve, хотя в них есть достаточно много полезных функций для ведения архива медиа.

Мой выбор пал на конструкторы баз данных, с тем, чтобы “прикрутить” к ним инструменты описи интервью и загрузку медиафайлов. Для такой цели, кстати, неплохо подошёл бы Directus, но я недостаточно хорошо знаю NodeJS, чтобы исправить некоторые функции в нём так, как мне нравится. Например, загрузка медиафайлов в Directus делается исключительно с переименованием файла в формат uuid. И после этого эти файлы невозможно найти, не используя базу данных (а иногда бывает удобно всё-таки поискать файл глазами). 

Разработка

В качестве платформы был выбран Excel и созданы скрипты для соединения с СУБД MariaDB. Исходные коды можно посмотреть на github.com/IlyaPetrovM/exelOpis 

Общая структура работы с таблицами была следующая:

  1. Загрузка содержимого таблицы при открытии вкладки (либо по кнопке Поиск)

  2. Обработка изменений в ячейках

Для оптимизации работы я удалял все пустые строки из таблиц и отключал обновление экрана настройки. Спасибо unkinddragon за статью по оптимизации VBA.

Код удаления строк
Sub deleteRowsToStart()
    Dim lastRowIndex
    Dim RowIndex
    Dim UsedRng
    Set UsedRng = ActiveSheet.UsedRange
  
    lastRowIndex = UsedRng.row - 1 + UsedRng.Rows.Count
    Application.ScreenUpdating = False
    For RowIndex = lastRowIndex To START_ROW + 1 Step -1
            Rows(RowIndex).ClearContents
    Next RowIndex
    Application.ScreenUpdating = True
End Sub

Для того чтобы связать таблицу exсel и таблицы в БД я прописал обработчики событий: меняются ячейки только по одной и только в том случае, если эти изменения делает пользователь (а не скрипт).

Обработка изменений ячейки
Public Sub processUpdate(ByVal Target As Range, table As String, oldValue As Variant, Optional timeFormat As String = "")
    If Not Sheets("Ôàéëû").connectToBataBaseCheckBox.Value Then Exit Sub
    If Not sqlConnector.isUserTyping Then Exit Sub                              ' Это пользователь делает?
    If Target.Cells.Count > 1 Then Exit Sub                                     'Редактируется только одна ячейка?
    If Not (Target.row > START_ROW And Target.Column > START_COL) Then Exit Sub ' Редактируются только разрешённые ячейки?
    If oldValue = Target.Value Then Exit Sub                                    ' Значение вообще менялось?
    prevColor = Target.Font.Color
    Target.Font.Color = RGB(200, 150, 0)
    
On Error GoTo Catch
    'Target.Format
    tableTitle = Target.Worksheet.Cells(START_ROW, Target.Column)
    idColumn = START_COL + 1
    ID = Target.Worksheet.Cells(Target.row, idColumn)
    If ID <> "" Then
        sqlConnect
        If timeFormat = "" Then
            sqlQuery ("UPDATE " + table + " SET `" & tableTitle & "`='" & Target.Value & "' WHERE id=" & ID & ";")
            Call storeHistory(table, tableTitle, oldValue, Target.Value, getAuthor(), ID)
        Else
            sqlQuery ("UPDATE " + table + " SET `" & tableTitle & "`='" & Format(Target.Value, timeFormat) & "' WHERE id=" & ID & ";")
            Call storeHistory(table, tableTitle, Format(oldValue, timeFormat), Format(Target.Value, timeFormat), getAuthor(), ID)
        End If
        Target.Font.Color = prevColor
    End If
Catch:
End Sub

Дла обработки ошибок использовался аналог try и catch - GoTo, отправляющий в конец кода после ошибки.

Интерфейс программы разделён на 5 вкладок: Файлы, Поиск, Информанты, Опись, Словарь. 

Загрузка файлов

На вкладке Файлы добавляются файлы в архив. При добавлении файла он копируется и переименовывается. Причём, старое название файла сохраняется в базе.

Как работает загрузка файлов

Для выбора файлов использовался стандартный диалог Windows.

Private Sub Скругленныйпрямоугольник1_Щелчок()
    Set FILE_CHOOSER = Application.FileDialog(msoFileDialogFilePicker)
        With FILE_CHOOSER
        .Title = "Выберите файл для сохранения в базу"
        .AllowMultiSelect = True
        
        ProgressForm.Show
        
         If .Show = True Then
            ProgressForm.StartCopyMediaFiles
         End If
         
    End With
End Sub

ProgressForm - это окно, которое показывало процесс копирования файлов в архив.

Окно загрузки
Окно загрузки

Здесь самая главная процедура это StartCopyMediaFiles. В ней переименовываются файлы, запускается процедура их копирования, а также после удачного исполнения вся информация заносится в таблицу базы данных.

Public Sub StartCopyMediaFiles()
    
    Dim sOldFilePath As String, sOldFileName As String, sNewFileName  As String, sExt As String
    
    
    Dim objFSO As Object, objFile As Object
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    
    ProgressForm.Show
    Dim i As Integer
     For i = 1 To FILE_CHOOSER.SelectedItems.Count
        sOldFilePath = FILE_CHOOSER.SelectedItems(i)                       'полное имя исходного файла
        oldPathListBox.AddItem sOldFilePath
    Next
    Dim f
    For i = 1 To FILE_CHOOSER.SelectedItems.Count
        sOldFilePath = FILE_CHOOSER.SelectedItems(i)                       'полное имя исходного файла
        sExt = objFSO.GetExtensionName(sOldFilePath)                        ' Расширение файла
        sOldFileName = objFSO.GetFileName(FILE_CHOOSER.SelectedItems(i))   'короткое имя файла
        Set f = objFSO.getfile(sOldFilePath)
        Dim dc
        If f.DateLastModified < f.DateCreated Then
            dc = f.DateLastModified
        Else
             dc = f.DateCreated
        End If
        dcStr = Format(dc, "yyyy-mm-dd hh:mm:ss")
        
        sNewFileName = Format(dc, "yyyyMMdd_hhmmss") + "_" + Left(getAuthor, 3) + CStr(i) + "_" + CStr(Second(Now())) + "." + sExt
        sNewFilePath = MEDIA_STORAGE_PATH + sNewFileName 'полный новый путь файла
        
        DoEvents ' эта штука позволяет не фризить окно копирования
        newPathListBox.AddItem sNewFilePath
        
        Set objFile = objFSO.getfile(sOldFilePath)
        objFile.Copy sNewFilePath
        Call insertFileToBase(sOldFileName, sNewFilePath, dcStr)
        LabelProg.Caption = CStr(CInt(100 * i / FILE_CHOOSER.SelectedItems.Count)) + "%"  'Отображение количества скопированных файлов
    Next
    Sheets("Файлы").updateTable
    okButton.Enabled = True
End Sub

Интерфейс добавления и поиска файлов
Интерфейс добавления и поиска файлов

После загрузки файл может быть просмотрен при помощи MediaPlayer’a, встроенного в приложение. Описание содержимого файла происходит на 3 колонках: тэги, поминутное описание и колонка "информанты". На вкладке "тэги" можно написать какой угодно текст, и таким образом дать быстро описание любому файлу. Так описывается 80% всех файлов.

Интерфейс предпросмотра файлов в архиве
Интерфейс предпросмотра файлов в архиве

Надо сказать, что MediaPlayer встроенный в VBA - очень гибкий инструмент. Он может открывать файлы по сети, может смотреть даже картинки. Не может разве что pdf-ы смотреть. Ну и не надо. Для этого я сделал кнопку "найти файл на диске".

Код поиска файла на диске
Private Sub FindFileButton_Click()
    Shell "explorer.exe /select," + Me.Cells(selectedRow, SEARCH_PATH_COL), vbNormalFocus
End Sub

Предполагается, что все файлы доступны пользователю по SMB.

Описание аудио и видео

Файлы аудио и видео интервью описываются при помощи вкладки Опись. На этой вкладке использовалась доработанная версия программы из предыдущей главы, но все описания заносились прямо в базу данных.

Прямо во время воспроизведения аудио можно делать пометки, а затем сочетанием клавиш Alt+M добавить новую отметку времени. По горячим клавишам Alt+(1-9) Вставляются тэги из словаря.

Во время редактирования описания метки работает автосохранение введённого текста. На VBA асинхронного режима работы не существует, поэтому пришлось делать при помощи таймера, который запускался сразу после первой нажатой клавиши.

Код

Нажатие клавиш активирует таймер:

Private Sub tbWords_Change()
    'Запускаем таймер на WaitTimeValue
    Dim alertTime As Date
    LastKeyEvent = Now 'remember when the last key event was
    alertTime = LastKeyEvent + TimeValue(WaitTimeValue)
    Application.OnTime alertTime, "updateDescriptionTimer"
End Sub

После срабатывания таймера происходит запись в базу данных того, что в данный момент введено в TextBox при помощи метода updateDescription.

Public Sub updateDescriptionTimer()
    'test if last key event is at least 3 seconds ago.
    'If so: run your search or message box
    'If not: do nothing
    On Error GoTo Catch
    If LastKeyEvent <> 0 And LastKeyEvent + TimeValue(WaitTimeValue) <= Now Then
        LastKeyEvent = 0 'Ensure this is only triggered once:
                         'If we don't do this and multiple keys are pressed within 1 second
                         'then it would run multiple times.
        Call UserForm1.updateDescription
    End If
Catch:
End Sub

Источник

Интерфейс росписи медиафайла
Интерфейс росписи медиафайла

Поиск

На вкладке Поиск по заданным ключевым словам программа ищет файлы с тэгами и/или фрагменты поминутной описи, где есть поисковое слово. В результате вываливается табличка, соединённая из двух табличек: файлы и описи. Это сделано при помощи конструкции UNION

Код поиска

Запускаем поиск при нажатии клавиши Enter (код 13):

Private Sub SearchBox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then
        startSearch
    End If
End Sub

Процедура поиска делает запрос в базу данных:

Sub startSearch()
 If SearchBox.Value = "" Then
        deleteRowsToStart
        MsgBox "Напишите, что вы ищете!"
        Exit Sub
    End If
    search_str = SearchBox.Value
    quer = "(SELECT f.id AS id` , 'files' AS `Таблица`, f.path,  CAST(`f`.`date_created` AS CHAR(255) CHARSET utf8mb4) AS `Время начала`, f.tags As `Описание файла`, ' ' AS `Описание` , f.`кто загрузил` " + _
                        " FROM `files_ext` as `f` " + _
                        " WHERE `f`.`tags` LIKE '%" + search_str + "%' OR `f`.`Информанты` LIKE '%" + search_str + "%') " + _
                    " UNION ALL " + _
                    " (SELECT `fs`.`id` AS `id`, 'marks' AS `Таблица`, fs.path, `m`.`start_time` AS `start_time`, fs.tags,`m`.`describtion` AS `describtion`, fs.`кто загрузил` " + _
                        " FROM `marks` as `m` " + _
                        " LEFT JOIN files as fs ON  (fs.id = m.file_id) WHERE `m`.`describtion` LIKE '%" + search_str + "%' OR `m`.`tags` LIKE '%" + search_str + "%') "
    sqlConnect
    sqlQuery (quer)
    deleteRowsToStart
    Call printTable(SQL_RECORDS, START_ROW, START_COL)
    Me.Cells(START_ROW + 1, START_COL + 1).Activate
End Sub

При помощи 'files' AS Таблица, я подписываю из какой таблицы была сформирована данная строчка и затем при клике мышью на данной строчке нетрудно запустить аудио с нужного места (если это фрагмент описи) или с начала (если это строчка соответствующая целому файлу):

Private Sub OpenButton_Click()
On Error GoTo Catch:
    table_name = Me.Cells(selectedRow, SEARCH_TABLE_COL).Value ' Определяем строчка из какой таблицы была выделена пользователем
  
    time_s = "00:00:00"
    If table_name = "marks" Then
         time_s = Me.Cells(selectedRow, SEARCH_TIME_COL).Value
    End If
    
    t = TimeValue(time_s)
    time_fmt = Second(t) + Minute(t) * 60 + Hour(t) * 3600
    Call showPreview(Me.Cells(selectedRow, SEARCH_PATH_COL), time_fmt) ' Отображаем плеер
Catch:
End Sub

Интерфейс вкладки “Поиск”
Интерфейс вкладки “Поиск”

Прокси-файлы

Отдельно хотелось бы отметить функцию использования прокси-файлов. В программе можно создать своё собственное хранилище на локальном диске и туда скачивать файлы из архива. 

Структура хранения файлов и базы данных для работы с exelOpis
Структура хранения файлов и базы данных для работы с exelOpis

В этом функции нашего архива похожи на способ работы в монтажных программах (особенно в Davinci). Описи хранятся в отдельной базе данных, а сами исходники файлов хранятся либо на сервере, либо на локальном диске в том виде, в котором пользователю удобно. 

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

Интеграция с Davinci Resolve

Использование базы данных позволило структурировать все описания файлов и, например, использовать эти описания в других программах. Например, Davinci Resolve позволяет импортировать описания файлов проекта при помощи CSV-файлика. В видео ниже я описываю, каким образом можно импортировать эти описания. Таким образом я получаю полностью описанный архив у меня в монтажном проекте и время на поиск материалов сокращается в разы. Жалко только, что временные метки не удаётся импортировать в проект (очень странно, что такой функции в Давинчи нет).

Планы на будущее

Использовать Excel в качестве основной программы конечно здорово - там есть много уже отлаженных функций, но хотелось бы уйти от Майкрософта и сделать полностью своё приложение. 

После экспедиции я сделал простенькую веб-версию архива на PHP и js-библиотеки Tabulator. Она позволяет смотреть содержимое архива и искать нужные файлы. 

Думаю надо перенести всё на NodeJS и сделать Electron-приложение, чтобы можно было создавать архив и без интернета и с общей базой, когда потребуется.

Веб-версия архива. Интерфейс поиска файлов
Веб-версия архива. Интерфейс поиска файлов
Веб-версия архива. Интерфейс просмотра росписи интервью. 1 - клик по таймкоду позволяет перейти к нужному времени в аудио (2 и 3)
Веб-версия архива. Интерфейс просмотра росписи интервью. 1 - клик по таймкоду позволяет перейти к нужному времени в аудио (2 и 3)

Комментарии (37)


  1. daggert
    30.10.2022 01:32

    Думаю надо перенести всё на NodeJS и сделать Electron-приложение, чтобы можно было создавать архив и без интернета и с общей базой, когда потребуется.

    Мы ушли в сторону nw.js. По сути сделали кусок нашей СУБД архива для оффлайн-использования, а при наличии интернета DB отправляется в основную базу. Файлы конечно синкаются уже по приезду в институт т.к. объемы огромные сейчас (пишем в wav звук, а видео 4к).

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


    1. Robgnokfar Автор
      30.10.2022 01:36

      Здорово! А можно узнать поподробнее про вашу программу? Её где-то можно скачать?


      1. daggert
        30.10.2022 01:57
        +2

        Надо было в 12м году сделать что-то для полевых работ, т.к. эксель порядком надоел + было слишком много ошибок ввода. Наворотил что-то похожее на node-webkit и пошло-поехало... загрузка файлов через драгндроп, парсинг excel документов-описей, упаковка в zip, пережатие файлов ffmpeg'ом, работа с метаданными в файлах, синхронизация туда-сюда...
        Скачать и посмотреть, к сожалению, врядли получится. Там конечно патент на ПО и сделана она по грантам РГНФ, РФФИ и РНФ, но дело даже в другом: а) она вам будет абсолютно бесполезна в отрыве от БД архива и нашей специфики, а это уже бакэнд и он закрыт и б) Там такой дикий говнокод на своем "js фреймворке" что просто плакать хочется каждый раз когда я открываю исходники для добавления нужной функции и я потом не смогу спать спокойно, зная что это все кто-то еще видел.

        Сейчас работаю над тем чтоб полевик мог записывать аудио напрямую на сервер через API браузерный. Точней там запись идет сначала в буффер, потом уже отправляется на сервер. У нас специфика - беседа + иллюстрации.

        Кстати насчет Atlas.ti - у меня уже поставлен в план работы на второе полугодие 23го разработка функций схожих, тоже из-за лицензии и тяжеловесности... Надо-бы глянуть что это такое вообще.


        1. PereslavlFoto
          30.10.2022 02:15

          Если это сделано по научным грантам, почему вы решили не публиковать результаты работы, то есть саму программу, и решили не лицензировать её использование, то есть никому не разрешили повторять вашу работу?


          Что помешало сделать результат гранта доступным для других исследователей?


          Вы пережимаете файлы через ffmpeg. Как правило, при этом качество изображения портится. Что привело к такому решению?


          Вы собираете звукозаписи и изображения. Будете ли вы публиковать эти коллекции, и если да, то по какой из свободных лицензий (чтобы другие научные организации могли свободно использовать ваш материал для своих задач)?


          Спасибо.


          1. daggert
            30.10.2022 14:55

            Если это сделано по научным грантам, почему вы решили не публиковать результаты работы, то есть саму программу, и решили не лицензировать её использование, то есть никому не разрешили повторять вашу работу? Что помешало сделать результат гранта доступным для других исследователей?

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

            Вы пережимаете файлы через ffmpeg. Как правило, при этом качество изображения портится. Что привело к такому решению?

            Суровая необходимость. Хранить 40+ гигабайт на одного информанта не целесообразно, в особенности если все интервью он просто рассказывает о разном. Не пережимаются только куски которые могут составить ценность именно в виде картинки - пейзажи, интерьеры, утварь. Вы сами прекрасно понимаете каково это - выбить даже простенькую дисковую полку для данных. У меня сейчас 2 сервера QNAP по 24ТБ каждый, но по сути это 2 года материала, если не пережимать.

            Вы собираете звукозаписи и изображения. Будете ли вы публиковать эти коллекции, и если да, то по какой из свободных лицензий (чтобы другие научные организации могли свободно использовать ваш материал для своих задач)?

            Никакой свободной лицензии не предусмотрено. Это дурацкое "право первой брачной ночи" или "собака на сене" с которыми я борюсь всеми силами. Опубликованные материалы поступают в открытую базу данных, но любая ре-публикация или использование должно предваряться запросом к нам.

            Думаю что в феврале я эту тему пробью впервые, правда лицензия будет своя, опубликовав огромную подборку по Саамским материалам Кольского полуострова, во вторник ученый совет по этому поводу.


            1. PereslavlFoto
              30.10.2022 15:01

              Хранить 40+ гигабайт на одного информанта не целесообразно, в особенности если все интервью он просто рассказывает о разном.

              В таких условиях я оставлял бы только звукозапись, без видеоряда.


              Откуда, по какой причине возникает запрет на использование ваших материалов? Вы, положим, бьётесь; но кто же установил этот порядок? Неужели директор института?


              Если "лицензия будет своя", тогда использовать этот материал будет никак нельзя, потому что лицензия окажется несовместимой с лицензиями на другой контент. Главная проблема "своих лицензий" именно в том, что они не позволяют переработку.


              И ещё один вопрос. Вот вы записываете интервью с человеком. Вы задаёте ему вопросы, он отвечает. Как вы оформляете получение авторских прав на его ответы? Какой договор вы заключаете с информантом и на каких условиях вы получаете права на произнесённый им текст? (Закон установил, что без разрешения автора нельзя комментировать авторский текст, нельзя снабжать его предисловием и послесловием, нельзя иллюстрировать; смотрите в 1266 статье Гражданского кодекса.)


              Спасибо.


              1. daggert
                30.10.2022 15:38

                В таких условиях я оставлял бы только звукозапись, без видеоряда.

                Тогда возникает две проблемы: а) исследователю или родственнику, который запрашивает материалы конкретного информанта, будет доступен только голос, хотя я могу дать ему видео. б) теряется возможность какого-либо видеомонтажа. Сжатый h265 в ffmpeg в 1080p/60fps вполне достаточен для научных целей, а весит в 4-5 раз меньше.

                Откуда, по какой причине возникает запрет на использование ваших материалов? Вы, положим, бьётесь; но кто же установил этот порядок? Неужели директор института?

                Не смогу вам на этот вопрос ответить. Это было когда я пришел 15 лет назад, это продолжается сейчас. Весь собираемый материал идет в архив и любое его использование - только через институт. Насколько я знаю, общаясь с коллегами с других институтов - там ситуация 1в1 и до уровня свободных лицензий в первичке мало кто может дойти.

                Главная проблема "своих лицензий" именно в том, что они не позволяют переработку.

                Я не особый сторонник СПО, честно говоря, меня это более чем устраивает. Взяли материал - отсмотрели - запросили возможность переработки/публикации. На моей памяти еще никому не отказали, а для нас это графа в отчете.

                Какой договор вы заключаете с информантом и на каких условиях вы получаете права на произнесённый им текст?

                Все просто и по-советски замечательно - никаких бумаг нет. Как только ты достаешь бумагу договор - информант потерян. Буквально в среду на конференции эта проблема в который раз поднималась. Контингент 70+ не подпишет никаких бумаг, даже для ученых. Есть только запись на диктофон о том что информант согласен на запись разговора и использование этого разговора в научных целях. После чего произведение - а это запись, условно принадлежит институту и собирателю, а не информанту. В общем полевые работы это серая зона.

                Если у вас с этим лучше - расскажите как вы это делаете, мне действительно хочется привести все к нормальному виду.


                1. PereslavlFoto
                  30.10.2022 17:18
                  +1

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

                  Ни в коем случае нельзя рассчитывать на решение этого вопроса сверху. Руководитель движим двумя причинами. С одной стороны, ему глубоко безразличен весь вопрос. С другой стороны, он очень боится потерять рублик, которого никогда не получал, однако ежедневно надеется получить.


                  Поэтому решать вопрос надо снизу вверх. Сначала, опрашивая информантов, вы заключаете с ними договор, по которому они передают вам свою интеллектуальную собственность (устный рассказ) на условиях свободной лицензии Creative Commons BY-SA. Затем, передавая этот материал в архив института, вы предупреждаете начальство, что присвоение прав на этот материал будет незаконным. В своих работах, написанных по собранному материалу, вы каждый раз пишете, что материал информантов использован по лицензии Creative Commons BY-SA.


                  Через несколько лет ваше начальство привыкнет и перестанет на это реагировать.


                  На моей памяти еще никому не отказали, а для нас это графа в отчете.

                  Действительно, здесь вы правы. Я уже видел случаи, когда начальство тревожится за графу в отчёте. Значит, вам действительно нужна лицензия-обёртка, которая будет явно проговаривать два условия.


                  1) Клиент должен подать заявление.
                  2) В ответ на заявление, и только в ответ на заявление, институт принимает на себя обязательство передавать контент и обеспечить лицензию.


                  Правда, здесь будет две проблемы.


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


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


                  Если разложить вторую проблему на устный рассказ и видеозапись, то права на видеозапись (без звука) полностью у института, здесь вы правы.


                  Все просто и по-советски замечательно — никаких бумаг нет.

                  Это означает, что у вас нет права на какое-либо использование этих устных рассказов. Даже их письменная запись уже нарушает права информанта. Можно только слушать, причём не на работе, а дома.


                  Контингент 70+ не подпишет никаких бумаг, даже для ученых.

                  Значит, бумага составлена неправильно. Составьте её правильно, делов-то.


                  Есть только запись на диктофон о том что информант согласен на запись разговора и использование этого разговора в научных целях. После чего произведение — а это запись, условно принадлежит институту и собирателю, а не информанту.

                  Закон утверждает обратное. В силу 1229 статьи ГК РФ права на устный рассказ принадлежат информанту. В силу 1235 статьи ГК РФ информант может передавать права и давать разрешения только письменно.


                  Что такое научные цели, нигде не определено, поэтому когда дети и внуки информанта притянут вас к суду, ваш институт будет обречён платить им отступные.


                  Если у вас с этим лучше — расскажите как вы это делаете, мне действительно хочется привести все к нормальному виду.

                  Мы работаем с фотографами или их организациями. Начинаем с того, чтобы подписать типовой текст лицензии. В этом тексте фотограф или предприятие признаёт себя автором фотографий и разрешает их использование по CC-BY-SA.


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


                  — Неужели это означает, что кто угодно сможет делать коммерцию на моих снимках?


                  Да, ответили мы, именно так. После этого фотограф подписал разрешение.


                  1. daggert
                    30.10.2022 20:06

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

                    Это никак не связанно с деньгами.

                    Сначала, опрашивая информантов, вы заключаете с ними договор, по которому они передают вам свою интеллектуальную собственность (устный рассказ) на условиях свободной лицензии Creative Commons BY-SA.

                    Никак не прокатит. Это в данном случае будет профанация т.к. информант должен понимать что это за договор и зачем он нужен, а не "должен быть" для галочки.

                    Через несколько лет ваше начальство привыкнет и перестанет на это реагировать.

                    Оно мне не даст такого сделать, вот и все. И не начальство на месте, с этим начальством я договорюсь, а начальство выше, куда мы отчитываемся.

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

                    По этому такая лицензия и не жизнеспособна в условиях науки. Отчетность никто не упоминал.

                    Значит, бумага составлена неправильно. Составьте её правильно, делов-то.

                    Если вы сможете составить бумагу которую можно давать человеку на подпись, при условии что а) человек никогда не согласится писать свои личные данные т.к. боится мошенников и б) человек в принципе уже может плохо писать - я вас расцелую. Пока все эти попытки проваливались и у нас и в Екб и в Питере и даже у Финнов. Собираем сугубо устно на диктофон.

                    Что такое научные цели, нигде не определено, поэтому когда дети и внуки информанта притянут вас к суду, ваш институт будет обречён платить им отступные.

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

                    Мы работаем с фотографами или их организациями. Начинаем с того, чтобы подписать типовой текст лицензии. В этом тексте фотограф или предприятие признаёт себя автором фотографий и разрешает их использование по CC-BY-SA.

                    Значит у вас нет таких проблем и вы не сталкивались с ними. Тогда-бы понимали о чем я говорю. У нас за экспедицию 20-30 информантов, суммарно 5-7 экспедиций в год. Работаем только с "бабушками", причем в значительной части на "языке". Любая бумага данная бабушке на подпись - будет послана либо на три буквы, либо к внучке чтоб та разбиралась и записи не будет вовсе. Мы пытались, но это просто не работает, не то поколение.


                    1. PereslavlFoto
                      30.10.2022 22:00
                      +1

                      Это в данном случае будет профанация т.к. информант должен понимать что это за договор и зачем он нужен, а не «должен быть» для галочки.

                      Конечно, информант понимает, ведь он прочитывает бумагу, прежде чем подписывать.


                      Оно мне не даст такого сделать, вот и все. И не начальство на месте, с этим начальством я договорюсь, а начальство выше, куда мы отчитываемся.

                      Как именно не даст сделать?


                      Поэтому такая лицензия и не жизнеспособна в условиях науки.

                      Практика показывает, что именно такая лицензия и лежит в основе открытой науки (open science).


                      Если вы сможете составить бумагу которую можно давать человеку на подпись, при условии что а) человек никогда не согласится писать свои личные данные,

                      То есть вы при разговоре не фиксируете имя, отчество и фамилию, и место проживания не фиксируете?


                      Любая бумага, данная бабушке на подпись — будет послана

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


                      1. daggert
                        31.10.2022 12:41

                        Как именно не даст сделать?

                        Легко и просто - меня не отправят в экспедицию, если я поеду с какими-то бумагами не согласованными с "золотыми мозгами", и конкретно с отделением.

                        Практика показывает, что именно такая лицензия и лежит в основе открытой науки (open science).

                        И она никак не совместима с кучей тем которые мы исследуем. Например публикация на условиях анонимности. Уже нельзя все интервью опубликовать под свободными лицензиями. Вы уж простите но на открытую науку мне ||, я не фанатик CC.

                        То есть вы при разговоре не фиксируете имя, отчество и фамилию, и место проживания не фиксируете?

                        Иногда нет.

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

                        По этому я и говорю - выхода другого, кроме как быть в серой зоне - нет. Открытая лицензия не подходит ни ученым моего института, ни филиалу, ни вышестоящему отделению. После сбора материал может быть закрыт в архиве до смерти автора, а конкретно на 75 лет, и учитываться только в статистике и не выдаваться на руки. Он может быть закрыт, но быть использован только ученым записавшим информанта, на условиях анонимности. Он может быть закрыт частично - закрыты места, даты, имена. Он может быть открыт... Или например заговоры которые сдавались в архив - они передавались только одному ученому, на них он сделал ссылку но... работать с ними можно только глазами, никаких копий делать нельзя, так захотели многие знахари.

                        Да, в идеальном мире все что собирается на государственные деньги - должно быть открыто, но нет, так не выходит по десяткам причин. Только сейчас в дирекции насчет этого обсуждал и любые мои попытки на открытие материалов вызывают бурю негодования у социологов и историков, из-за контекста и вопросов которые они задают информантам.


                      1. PereslavlFoto
                        31.10.2022 13:30

                        Например, публикация на условиях анонимности.

                        Публикация на условиях анонимности возможна, только если автор подписал вам разрешение публиковать на условиях анонимности, либо если вы сами сделали другой документ, который позволяет это делать. В том и другом случаях вы можете выпустить анонимный текст как свободный.


                        Уже нельзя все интервью опубликовать под свободными лицензиями.

                        Можно, потому что анонимность не мешает этому.


                        После сбора материал может быть закрыт в архиве до смерти автора, а конкретно на 75 лет, и учитываться только в статистике и не выдаваться на руки.

                        После смерти автора придётся ждать ещё 70 лет до окончания авторского права. То есть вы закрываете материал на 145 лет. Неужели такая цензура и является вашей целью?


                        использован только ученым, записавшим информанта, на условиях анонимности.

                        Только если есть письменное разрешение анонима на публикацию, переработку, комментирование.


                        любые мои попытки на открытие материалов вызывают бурю негодования у социологов и историков из-за контекста и вопросов, которые они задают информантам.

                        Правильно ли я понял, что социологи и историки не хотят публиковать эти вопросы и не хотят публиковать ответы на них? И цитировать эти вопросы и ответы они тоже не хотят?


                        Представьте, что перед вами лежит рукопись. Вы хотите выписать из неё абзац и включить в свою статью, ссылаясь на архивный адрес? Нет, закон не позволяет цитировать неопубликованные тексты. Следовательно, здесь вы ничего сделать не можете.


                      1. daggert
                        31.10.2022 21:17

                        В том и другом случаях вы можете выпустить анонимный текст как свободный.

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

                        Неужели такая цензура и является вашей целью?

                        Не понимаю вашего вопроса. Если ваш информант не хочет чтоб он был опубликован до своей смерти, но готов материалы сдать в архив - вы не будете брать такие материалы?

                        Правильно ли я понял, что социологи и историки не хотят публиковать эти вопросы и не хотят публиковать ответы на них?

                        Острые и за которые автора или его потомков могут преследовать или публикация отразится на их жизнь? Да, конечно. У меня в архиве около 100 интервью за последние 15 лет закрытые целиком, кроме как для собирателя, тем не менее на них есть ссылка в публикациях.

                        И цитировать эти вопросы и ответы они тоже не хотят?

                        Только на условиях полной анонимности. Буквально: "Женщина, родилась в 60-е".

                        Представьте, что перед вами лежит рукопись. Вы хотите выписать из неё абзац и включить в свою статью, ссылаясь на архивный адрес? Нет, закон не позволяет цитировать неопубликованные тексты. Следовательно, здесь вы ничего сделать не можете.

                        Если рукопись в фондах архива и я получил до нее доступ - я вполне могу на нее сделать ссылку и опубликовать цитату. Есть архивные материалы с которыми я не могу ознакомиться. Только недавно на них сталкивался в питере.


                      1. PereslavlFoto
                        31.10.2022 21:26

                        Если рукопись в фондах архива и я получил до нее доступ — я вполне могу на нее сделать ссылку и опубликовать цитату.

                        Гражданский кодекс РФ, статья 1274, посмотрим в неё:


                        Допускается без согласия автора или иного правообладателя и без выплаты вознаграждения, но с обязательным указанием имени автора, произведение которого используется, и источника заимствования:

                        1) цитирование… правомерно обнародованных произведений в объеме, оправданном целью цитирования.

                        Вот так написано в законе. То есть цитировать неопубликованную работу закон запрещает. Цитировать без указания имени автора закон запрещает.


                        Вы спросите, а что же с анонимными информантами делать? Закон считает, что нужно получать от них разрешение на использование их текстов без указания имени автора. Такое разрешение называется лицензионным договором, и закон считает, что оно должно быть письменным (статья 1235).


                        Если же вы обнародовали устный рассказ информанта неправомерно (без его разрешения), тогда у вас получился контрафактный текст, нарушение авторских прав.


                      1. PereslavlFoto
                        31.10.2022 21:32

                        Если ваш информант не хочет, чтоб он был опубликован до своей смерти, но готов материалы сдать в архив — вы не будете брать такие материалы?

                        Названные вами условия и есть условия разрешения (лицензии). В этом случае информант подписывает разрешение (лицензию), где указано вот такое условие.


                        Только на условиях полной анонимности. Буквально: «Женщина, родилась в 60-е».

                        Это условие никак не противоречит свободному лицензированию текстов.


                        Но ведь вы рассказываете о другом случае. Вы рассказываете о случае, когда:


                        1) женщина готова передать вам свой рассказ,
                        2) при этом не разрешает указывать её имя,
                        3) при этом не разрешает публиковать рассказ,
                        4) при этом не разрешает использовать его фрагменты,
                        5) при этом не разрешает комментировать его фрагменты,


                        то есть информант, сообщая вам известие, полностью запрещает вам (и всем остальным) пользоваться этим известием. И здесь возникает вопрос, зачем вы собираете текст, который никто и никогда не сможет использовать?


                        Ведь срок охраны авторских прав заканчивается через 70 лет после смерти автора либо после анонимной публикации. Анонимная публикация запрещена, потому что нет лицензии. Узнать смерть автора нельзя, потому что неизвестно имя автора. Следовательно, срок охраны авторских прав не закончится никогда, и использовать этот текст не сможет ни один исследователь.


                        Вот в чём ловушка!


                1. Robgnokfar Автор
                  30.10.2022 23:30
                  +1

                  Как только ты достаешь бумагу договор - информант потерян

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

                  Контингент 70+ как правило расписываются вместе с дочками/сыновьями.

                  Ну и если кто-то отказывается, то разумеется, мы ничего из этого не публикуем.

                  До интервью спрашиваем разрешения на запись.


                  1. PereslavlFoto
                    31.10.2022 00:03

                    У вас очень грамотно построена работа. Конечно, информант сначала должен понимать, зачем он это делает, а уже потом, понимая, даст нужное разрешение.


                    Видимый результат в виде вашего сайта доступен по свободной лицензии?


                    1. Robgnokfar Автор
                      01.11.2022 09:50

                      Честно говоря, я в этом вопросе полный дилетант. Можете расшифровать, как можно "сделать результат доступным по свободной лицензии"? Нужно где-то регистрировать материалы? Если речь идёт про согласие от информантов и иконку на сайте, то согласия есть, а иконки на сайте нет.


                      1. PereslavlFoto
                        01.11.2022 13:17

                        Всё это оговорено в 1286.1 статье ГК РФ.


                        Чтобы опубликовать тексты информантов по свободной лицензии, надо написать на сайте, что тексты информантов опубликованы по свободной лицензии. При этом надо написать название лицензии. При желании можно дать ссылку на её текст.


                        Для примера посмотрите, пожалуйста, как это сделано на сайте Министерства финансов. Лицензия указана в подвале сайта.


                  1. daggert
                    31.10.2022 12:44

                    Мы приносим бумаги в конце экспедиции.

                    1 день на населенный пункт. 5 человек в разных домах. Вечером автобус и переезд к другому населенному пункту. Никаких заходов в дом к информанту после экспедиции быть не может.

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

                    Не тот контингент. У нас основной это бабушки, они про сайты и интернет знать не знали. В деревне и свет не всегда есть.

                    Контингент 70+ как правило расписываются вместе с дочками/сыновьями.

                    Тоже проблема - прошлый год например. Из 12 населенных пунктов и более 40 информантов - половина живет одна. Совершенно одна. Дочки/зятья приезжают раз в месяц навестить.


                    1. PereslavlFoto
                      31.10.2022 13:32

                      В описанном вами случае надо подписывать бумагу после разговора, объяснив информанту, что без подписания этого разрешения:


                      — вы не сможете записать на бумагу устный рассказ,
                      — вы не сможете воспроизвести звуковую запись при других людях,
                      — вы не сможете опубликовать в виде звуковой записи или текста даже один абзац,
                      — вы не сможете вообще ничего делать со звуковой записью и устным рассказом.


                      Да, вот такой порядок прописан в Гражданском кодексе. Поэтому надо рассказывать бабушкам про книги и статьи.


                      1. daggert
                        31.10.2022 21:19

                        Поэтому надо рассказывать бабушкам про книги и статьи.

                        Расскажите пожалуйста про свой опыт экспедиций, где вы успешно берете от сельского контингента 70+ бумаги разрешающие публикацию? А я вам расскажу про свой негативный опыт в данном направлении.


                      1. PereslavlFoto
                        31.10.2022 21:33

                        Мы, как правило, приходим вместе с друзьями и знакомыми сельского контингента. Причём этот приём наши работники использовали ещё в 1965-м году. И это позволяет заключать с сельским контингентом 70+ лицензионные договора на свободное использование контента, созданного их отцами, дедами и мужьями.


        1. Robgnokfar Автор
          30.10.2022 11:43

          Как знакомо! Как здорово! А если не секрет, то что за гранты? Я бы вот отдал разработку фрилансерам или какой-то серьёзнойнконторе, а само приложение показывал как ТЗ, типо "хочу такое же, только лучше и красивше".


          1. daggert
            30.10.2022 14:58

            Сначала были гранты РГНФ, который потом влился в РФФИ, который теперь РЦНИ. Еще были РНФ гранты и гранты различных минкультов, миннацов и т.п., но там весь грант до 200к рублей до налогов.

            По поводу ТЗ и фриланса... Мы вот с 98го года, еще до меня, пытались делать с госунивером по ТЗ, но оказалось что проще на зарплате держать программиста "внутри".


  1. svboobnov
    30.10.2022 09:40
    +2

    Electron очень много ресурсов потребляет, а Вы пишете:

    Но нас не устраивала, во-первых, стоимость продукта, во-вторых сложность
    интерфейса и требование к ресурсам компьютера (экспедиционные ноутбуки
    не очень сильны)

    Посмотрите на Libre Office Base, жрёт ресурсов меньше, чем Электрон, есть куча функций для анализа данных; из минусов LOBase могу отметить:

    • Старомодный бейсик внутри, но его можно заменить Java'ой или Python'ом;

    • Приложение получается не web, сайт придётся делать отдельно;


    1. Robgnokfar Автор
      30.10.2022 11:45

      Ну Electron по-сути просто ещё один Chrome. И самописное приложение всё-таки своё, там лишнего не добавишь...

      Libre office и сайт отдельно - не устраивает. А вот nw.js - как по ресурсам?


      1. daggert
        30.10.2022 15:00

        А вот nw.js - как по ресурсам?

        Он конечно как электрон. Вы не сможете уменьшить потребление ресурсов, если у вас в приложении будет браузер + БД + нода. У меня это около 2 гигабайт оперативки при работе и почти полная загрузка пентиума.


  1. zabanen2
    30.10.2022 11:46

    а может кто подсказать пути решения такой задачи:

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


    1. Robgnokfar Автор
      30.10.2022 11:49

      Что-то вроде Гигапикселей Гугла?

      Если это картинка в jpeg, то белый фон сожмётся практически в ноль по идее...

      Или можно сделать проект в Inkscape или Gimp и там открывать.


      1. zabanen2
        31.10.2022 07:14

        есть набор картинок на разных увеличениях. при этом большая часть образца - пустая. да дело даже не в этом. есть увеличения х500, х5000, х50000 поэтому 1 большая картинка не нужна. это больше похоже на гугл мапс. где есть целая страна, а отснято всего пару городов сверху (х100) и несколько домов в них (х50000). не нужно держать целую картинку, нужно каждый раз собирать карту и уже ее увеличивать, смотреть взаимное расположение. я думаю должны быть такие библиотеки, к примеру html+js, у которых уже есть много всего. сейчас я могу собрать картинку на python+matplotlib но это не очень переносимое решение + неудобно + долгий пересчет.


  1. glader
    30.10.2022 12:08
    -1

    Так вот зачем AWS Snowball придумали :)


    1. Robgnokfar Автор
      30.10.2022 12:12

      Зачем? Подскажите в чём там особенность. Не понимаю, как эта технология поможет.


      1. glader
        30.10.2022 18:50

        Чтобы иметь 300 часов интервью под рукой, не на сервере.


        1. Robgnokfar Автор
          30.10.2022 23:40

          Не понимаю. Snowball это же технология перевозки данных в контейнере. При чём тут интервью?


          1. glader
            31.10.2022 19:06

            Там еще можно запускать вычисления прямо на нем.


    1. ks51
      30.10.2022 23:32

      Снежки прикольные. Был проект с ними - интересная штуковина