Перейти к содержанию

Загрузки

Загрузки отправляют завершённые Sessions со многих телефонов в одну папку проекта. Руководитель проекта один раз настраивает папку и раздаёт ссылку или QR-код; каждый участник вставляет или сканирует её, и с этого момента любую Session можно отправить в эту папку двумя нажатиями из диалога «Поделиться». Развёртывания ARU могут отправлять каждую завершённую Session самостоятельно.

Загрузки идут только в одну сторону. Приложение записывает файлы в папку проекта и никогда ничего там не читает, не просматривает и не удаляет. Удаление Session на телефоне не затрагивает загруженную копию, и ничего никогда не загружается, если вы не отметили назначение или не включили автоматические загрузки ARU.

Как это работает

Назначение — это папка WebDAV, в которую приложение может записывать. Три вида работают без дополнительной настройки:

  • общий ресурс Nextcloud File Drop — рекомендуемый выбор для большинства проектов;
  • любой адрес WebDAV с именем пользователя и паролем, например папка в вашей собственной облачной учётной записи или на сервере организации;
  • эталонный drop-сервер, поставляемый вместе с BirdNET Live, для руководителей, которым нужны токены для каждого участника и готовый экспорт CSV (см. Developer Guide).

Каждая загрузка — это один файл ZIP на Session, названный как экспорт функции «Поделиться», например BirdNET_Live_2026-05-14_06-30-00_#13.zip. Он всегда содержит запись JSON Session и, в зависимости от того, что вы отметили, аудио, таблицы обнаружений, HTML-отчёт и файл метаданных приложения. ZIP попадает в папку, названную вашим ID загрузок — восьмисимвольным кодом, который приложение выводит из случайного идентификатора, хранимого для этой установки. Поэтому папка руководителя проекта выглядит так:

4ee91c8f/BirdNET_Live_2026-05-14_06-30-00_#13.zip
4ee91c8f/BirdNET_Live_2026-05-14_07-02-10_#14.zip
b27c0e51/BirdNET_Live_2026-05-14_06-45-00_#3.zip
.birdnet-live/4ee91c8f.json
.birdnet-live/b27c0e51.json

Папка .birdnet-live содержит по одному небольшому файлу регистрации на устройство, записанному при проверке соединения. Nextcloud скрывает её, если не включён параметр «Показывать скрытые файлы». Файл содержит ID загрузок, версию приложения, платформу и необязательный идентификатор участника (имя, эл. почту или номер участника), который ввёл участник, чтобы руководитель мог понять, кто стоит за каждым кодом, при этом ни одно имя никогда не становится именем папки. Тот же идентификатор записывается в запись JSON каждой загруженной Session.

Для руководителей проектов

Вариант A: Nextcloud File Drop

  1. В Nextcloud создайте папку для проекта, например Spring Survey 2027.
  2. Откройте её панель общего доступа, создайте ссылку общего доступа и установите для неё права File drop (только загрузка). После этого участники смогут добавлять файлы, но никогда не увидят, что отправили другие.
  3. Установите на ссылку пароль. Без него загружать в папку сможет любой, кто найдёт ссылку. File Drop даже в этом случае нельзя прочитать, поэтому отсутствие пароля — выбор, который приложение принимает без возражений.
  4. При желании задайте срок действия до конца проекта.
  5. Скопируйте ссылку общего доступа. Она выглядит как https://cloud.example.org/s/AbCdEf123456.

Приложение само превращает эту ссылку в конечную точку WebDAV общего ресурса; участники никогда не видят адрес WebDAV. File Drop никогда не перезаписывает: когда участник снова загружает ту же Session, Nextcloud сохраняет старую копию под нумерованным именем, поэтому новейший файл — тот, что без номера.

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

Вариант B: ваша собственная папка WebDAV

Подойдёт любой сервер WebDAV: папка в личной облачной учётной записи, файловый сервер организации, ownCloud или Nextcloud с обычной учётной записью. При подключении участники вводят адрес, а также имя пользователя и пароль в разделе Дополнительно. Для учётной записи Nextcloud или ownCloud используйте пароль приложения из настроек безопасности учётной записи, а не пароль входа; если указано только имя хоста, приложение также пробует обычные расположения Nextcloud и ownCloud на этом хосте.

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

Вариант C: эталонный drop-сервер

tools/webdav_drop_server в репозитории с исходным кодом — это небольшой сервер на Python с токенами для каждого участника, которые можно отозвать, командой collect, объединяющей каждую загруженную запись JSON в sessions.csv, detections.csv и species_summary.csv, и командой invite, которая выводит ссылку для подключения и QR-код. Установка и развёртывание описаны в Developer Guide.

Создание ссылки для подключения и QR-кода

Ссылка для подключения содержит всё, что нужно участнику, в одном целом: назначение, учётные данные, название проекта и предложенные вами значения по умолчанию. Откройте страницу подключения на этом сайте и заполните:

  • Share link or WebDAV address: ссылка на общий ресурс Nextcloud из шагов выше или адрес папки WebDAV.
  • User name: оставьте пустым для ссылки на общий ресурс Nextcloud.
  • Share password or token: пароль общего ресурса либо секрет учётной записи или токена.
  • Project name shown in the app: то, что участники увидят как название назначения. Они могут переименовать его, но это значение по умолчанию.
  • Suggest including audio и Suggest Wi-Fi only: значения по умолчанию для переключателей назначения.

Нажмите Build link and QR code. Всё происходит в вашем браузере; никуда ничего не отправляется. Секрет находится в части ссылки после #, которую браузеры никогда не передают веб-серверу, размещающему страницу.

Либо сначала подключите назначение на своём телефоне (см. ниже), затем откройте назначение в Настройки → Экспорт и синхронизация → Назначения для загрузки и нажмите Показать код подключения. Приложение покажет такой же QR-код с кнопкой Копировать ссылку.

Раздача

Распечатайте QR-код на полевом бланке, покажите его на экране во время инструктажа или отправьте ссылку сообщением. Обращайтесь со ссылкой и кодом как с паролем: любой, у кого они есть, может загружать в ваш проект. Если они утекли, смените пароль общего ресурса или отзовите токен и раздайте новый код.

Когда участник сканирует код камерой телефона, браузер открывает небольшую целевую страницу с кнопкой Open in BirdNET Live, которая ведёт на экран приложения «Добавить назначение» с уже заполненной ссылкой. Вставить ссылку прямо на этом экране работает точно так же.

Что вы увидите

По одной папке на устройство, по одному ZIP на Session и скрытые регистрации .birdnet-live. Откройте ZIP, чтобы найти запись JSON (присутствует всегда), а также таблицы, отчёт и аудио, которые участник решил включить. Чтобы узнать, какой человек стоит за ID загрузок, прочитайте файл регистрации для этого кода или поле meta.participant в любой из его записей JSON. С эталонным drop-сервером это делает за вас collect, записывая столбец participant.

Для участников

Подключение назначения

  1. Откройте Настройки → Экспорт и синхронизация → Назначения для загрузки и нажмите Добавить назначение. Сканирование QR-кода проекта камерой или нажатие полученной ссылки для подключения приводит на тот же экран с уже заполненной ссылкой.
  2. Вставьте ссылку для подключения, ссылку на общий ресурс Nextcloud или адрес WebDAV в поле Ссылка для подключения или адрес сервера. Кнопка Вставить берёт её из буфера обмена.
  3. При желании введите ID участника, имя или эл. почта (необязательно). Он сохраняется с каждой загрузкой, чтобы руководитель проекта знал, кто её отправил, и никогда не появляется в именах папок. Под полем приложение показывает Ваш ID загрузок — папку, в которую попадут ваши загрузки.
  4. Для обычного адреса WebDAV откройте Дополнительно и введите Имя пользователя и Пароль или токен. Ссылке на общий ресурс Nextcloud не нужно ни то, ни другое; если у ресурса есть пароль, введите его как пароль.
  5. Нажмите Проверить соединение. Приложение связывается с сервером, создаёт скрытую папку регистрации, проверяет, позволяют ли учётные данные просматривать содержимое папки, и записывает ваш файл регистрации. Результат — одно предложение: Соединение работает, предупреждение, которое стоит прочитать, или ошибка с вероятным способом её исправить.
  6. Укажите Название назначения (предзаполнено из ссылки для подключения), решите, Загружать только по Wi-Fi и Загружать ARU Sessions автоматически или нет, и нажмите Сохранить назначение. После сканирования кода или нажатия на ссылку приложение переходит к экрану Назначения для загрузки.

Ничего не сохраняется, пока проверка не пройдена. Учётные данные попадают в связку ключей устройства и никогда — в экспортированные данные.

Предупреждения, которые стоит понимать:

  • Эти учётные данные позволяют просматривать содержимое назначения означает, что общий ресурс или учётная запись могут читать данные других участников. Загрузки работают, но попросите руководителя о File Drop или токене только для записи, если в проекте участвуют люди за пределами вашей команды.
  • У этого общего ресурса нет пароля, и его содержимое можно просматривать объединяет оба риска: любой, у кого есть ссылка, может читать всё. Попросите руководителя установить пароль или использовать File Drop.
  • Этот сервер не разрешает создавать папки носит информационный характер: загрузки используют плоские имена файлов, например 4ee91c8f__BirdNET_Live_….zip, вместо папки.

Экран назначения

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

  • Переименовать (карандаш в панели приложения) меняет название, показываемое в приложении.
  • Загружать только по Wi-Fi задерживает загрузки, пока телефон в сотовой сети.
  • Загружать все Sessions автоматически без запроса ставит каждую завершённую Session в любом режиме в очередь для этого назначения, используя значения по умолчанию из раздела экспорта и синхронизации для аудио и метаданных. Пока этот параметр включён, Загружать ARU Sessions автоматически тоже остаётся включённым. Если затем удалить Session в Session Review, ещё не начатая загрузка отменяется, но уже отправленные данные остаются на сервере.
  • Загружать ARU Sessions автоматически без запроса ставит каждую завершённую ARU Session в очередь для этого назначения (см. ниже).
  • Проверить соединение повторяет проверку соединения, например после того как руководитель сменил пароль.
  • Показать код подключения показывает QR-код и Копировать ссылку, чтобы второй телефон мог подключиться к тому же назначению.
  • Удалить назначение забывает назначение и его учётные данные и отбрасывает ожидающие загрузки в него. Уже загруженные Sessions остаются на сервере.

Первая запись списка назначений — Ваш ID загрузок с идентификатором участника под ним; нажмите её, чтобы изменить идентификатор. Изменение ничего не перемещает на сервере, поскольку папки названы по ID.

Загрузка Session

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

  • меню с тремя точками ( ) карточки Session в Библиотеке Sessions;
  • кнопка Поделиться после выбора нескольких Sessions в Библиотеке Sessions;
  • значок Поделиться ( ) на панели инструментов Просмотра Session.

Как только существует хотя бы одно назначение, у диалога «Поделиться» две вкладки:

  • Содержимое выбирает, что содержит экспорт: Аудио (полная запись или фрагменты обнаружений, если сохранялись только фрагменты) и Метаданные (таблицы, отчёт и файл метаданных приложения, включённые в разделе «Экспорт и синхронизация»). Флажки изначально соответствуют вашим настройкам и действуют только для этой отправки.
  • Отправить в перечисляет Окно «Поделиться» (другие приложения, файлы, сообщения) и по одному флажку на назначение. Значок на вкладке считает отмеченные назначения. Назначения, отмеченные в прошлый раз, отмечены заранее, кроме тех, куда эта Session уже отправлялась: они начинаются неотмеченными и показывают Загружено с датой и Отметьте, чтобы загрузить снова. При открытии диалога приложение незаметно проверяет каждое назначение; если сервер сообщает, что отклонил бы загрузку, например потому что сменился пароль или общий ресурс удалён, строка становится красной с указанием причины.

Снимите отметку с Окно «Поделиться» — и кнопка будет называться Загрузить; когда отмечено и то и другое — Поделиться и загрузить. SnackBar подтверждает, сколько Sessions поставлено в очередь. Session всегда сначала попадает в очередь и загружается в фоне, поэтому вы можете продолжать работу.

Отслеживание загрузки

Карточка Session в Библиотеке Sessions показывает состояние первой строкой под названием Session: В очереди, Ожидание Wi-Fi, Ожидание сети, Загружается…, Загружено с датой или ошибку. Нажмите строку, чтобы открыть список по назначениям с Повторить сейчас и Убрать из очереди. Просмотр Session показывает то же состояние значком облака в панели приложения; нажатие на него открывает тот же список.

Неудавшиеся загрузки повторяются сами с растущими интервалами, до шести часов между попытками, не более тридцати попыток. Ошибка, будет повторено означает, что приложение попробует ещё раз. Загрузка не удалась. Проверьте настройки места назначения. означает, что сервер отказал и повтор не поможет: сменился пароль, загрузки отключены или назначение удалено. Откройте назначение, выполните Проверить соединение и, если учётные данные изменились, удалите назначение и добавьте его снова.

Строка и значок появляются, только пока хотя бы одно назначение, в которое отправлялась Session, ещё существует в Настройках. Удалите назначение — и они исчезнут, потому что «загружено» больше не является фактом ни об одном из имеющихся у вас назначений.

Что выполняется в фоне

Загрузки из очереди выполняются, пока приложение открыто, и всякий раз, когда оно возвращается на передний план. На Android они выполняются и при закрытом приложении: система запускает их, как только доступна подходящая сеть — Wi-Fi, если этого требует назначение, — и повторяет попытки, пока очередь не опустеет. На iOS загрузки подготавливаются, пока приложение открыто, а затем передаются системе, которая завершает их в фоне или при закрытом приложении и сама повторяет попытки. Назначения, доступные по незашифрованному http, остаются за приложением и загружают, пока оно открыто.

Повторная загрузка Session

Повторная загрузка той же Session, например после исправления обнаружений в Просмотре Session, записывает то же имя файла в ту же папку. Серверы, которые это допускают, заменяют файл; Nextcloud File Drop вместо этого сохраняет старую копию под нумерованным именем. В любом случае руководитель проекта получает новейшую версию, и ничего не удаляется.

Режим ARU

Полевые развёртывания создают много Sessions, часто пока у телефона никого нет. Включите Загружать ARU Sessions автоматически у назначения — и каждая завершённая ARU Session будет ставиться в очередь для него без диалога, с настройками по умолчанию раздела «Экспорт и синхронизация» для аудио и метаданных. Развёртывание, сохраняющее каждый цикл как отдельную Session, загружается цикл за циклом; объединённая Session развёртывания не загружается дважды.

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

Два примера из практики

Учёт на выходных с Nextcloud File Drop

Руководитель создаёт папку Birdathon 2027 в университетском Nextcloud, делится ею как File Drop с паролем, вставляет ссылку общего доступа и пароль на страницу подключения, называет проект и печатает QR-код на бланке инструктажа. Двадцать волонтёров сканируют его в субботу утром, вводят своё имя как идентификатор участника, проходят проверку соединения и сохраняют.

В воскресенье вечером каждый волонтёр открывает Библиотеку Sessions, выбирает Sessions выходных, нажимает «Поделиться», оставляет проект отмеченным на вкладке «Отправить в» и нажимает Загрузить. Загрузки ждут домашнего Wi-Fi и завершаются за ночь. В понедельник руководитель находит двадцать папок, названных по ID загрузок, в каждой — несколько ZIP, и читает имена волонтёров из скрытых файлов регистрации или поля meta.participant в записях JSON.

Исправления в Просмотре Session, затем станция ARU

Участник просматривает Session, удаляет два ложных обнаружения, добавляет вид вручную и сохраняет. Значок облака в панели приложения Просмотра Session показывает, что Session была загружена в субботу. Он нажимает значок «Поделиться» на панели инструментов, отмечает проект на вкладке «Отправить в», где тот начинается неотмеченным и показывает Загружено с датой, и нажимает Загрузить. Исправленный ZIP заменяет прежний или на File Drop ложится рядом с ним под нумерованным именем.

Тот же участник оставляет телефон как станцию ARU у тростниковых зарослей с точкой доступа Wi-Fi в хижине. На этом телефоне он подключает назначение проекта, включает Загружать ARU Sessions автоматически и оставляет Загружать только по Wi-Fi включённым. Каждое утро завершённые ночные циклы ставятся в очередь и загружаются, пока станция простаивает; руководитель видит, как под ID загрузок этого телефона появляются новые ZIP, хотя никто к нему не прикасался.

Конфиденциальность и ответственность

Назначениями для загрузки управляют организаторы проектов, а не BirdNET-Team. Папка, сервер, то, кто может их читать и как долго хранятся данные, определяются собственными правилами конфиденциальности и безопасности организатора; спросите у него подробности, прежде чем подключаться. BirdNET Live лишь записывает то, что вы решили отправить, и хранит учётные данные в связке ключей вашего устройства.

Загрузка содержит то же, что содержала бы отправка через «Поделиться»: запись JSON Session с обнаружениями, временем, координатами, именем наблюдателя и названием места, если они заданы, ID загрузок устройства, введённый вами идентификатор участника и версию приложения; а также аудио, таблицы и отчёт, которые вы отметили. Просмотрите вкладку «Содержимое» перед отправкой и исключите аудио, если запись может содержать голоса или что-либо ещё, что вы не передали бы проекту. Вы отвечаете за то, что загружаете. Не загружайте и не передавайте данные, которые считаете личными или конфиденциальными, и не загружайте записи, которые вам не разрешено передавать.

Устранение неполадок

Сообщение Что это значит Что делать
Это не похоже на ссылку или адрес сервера. Текст не является URL. Вставьте всю ссылку для подключения, ссылку на общий ресурс или адрес https://.
Сервер отклонил учётные данные. Неверный или отсутствующий пароль либо удалённый общий ресурс. Nextcloud так отвечает и для удалённых ресурсов. Используйте пароль общего ресурса или пароль приложения; спросите руководителя, существует ли ресурс до сих пор.
Этот адрес не является конечной точкой WebDAV. Вы вставили веб-страницу папки, а не ссылку на общий ресурс или адрес WebDAV. Вставьте ссылку на общий ресурс (…/s/…) или адрес WebDAV.
Загрузка сюда запрещена. Общий ресурс только для чтения. Попросите руководителя о File Drop или праве на загрузку.
Папка на сервере не существует. Адрес ни на что не указывает, или папка удалена. Сверьте адрес с руководителем.
Не удалось проверить сертификат сервера. Самоподписанный или неисправный TLS. Попросите у руководителя адрес с действительным сертификатом.
Этот адрес использует незашифрованный HTTP. Незашифрованное соединение вне вашей локальной сети. Используйте адрес https://.
Ожидание Wi-Fi Назначение настроено только на Wi-Fi, а телефон в сотовой сети. Подождите или выключите у назначения переключатель «только по Wi-Fi».
Ошибка, будет повторено Временная проблема, например обрыв соединения или ошибка сервера. Ничего; приложение повторит само. Повторить сейчас принудительно запускает попытку.
Загрузка не удалась. Проверьте настройки места назначения. Сервер отказал по причине, которую повтор не исправит. Откройте назначение, выполните Проверить соединение и, если учётные данные изменились, удалите назначение и добавьте его снова.
Учётные данные этого назначения отсутствуют в связке ключей устройства. Запись связки ключей потеряна, например после восстановления на новом телефоне. Удалите назначение и добавьте его снова.

См. также настройку Назначения для загрузки и руководства Библиотека Sessions и Просмотр Session.