Извлекаем информацию из Яндекс Диска
Чтобы показывать фотографии на карте, я решил сделать веб приложение. Для фронтенда я нашёл open-source библиотеку
Leaflet и расшерение для него:
markercluster. Вместе эти две библиотеки дали мне возможность отображать карту, ставить на ней маркеры и красиво группировать. На первом этапе я решил ограничиться отображением координат, без самих фотографий.
Роль бэкенда – это выдавать координаты фотографий, которые хранятся на Яндекс Диске. Для этого я воспользовался официальным API Яндекса. На первый взгляд всё было довольно просто:
➢ Получаем список файлов на Диске
➢ Отфильтровываем всё, что не является картинкой
➢ Запрашиваем у Диска метаданные файлов и достаём из них координаты
Проходить через все эти этапы при каждом открытии страницы не хочется, поэтому делаем шаг "синронизации", когда метадата выгружается из Диска в локальную базу данных. На фронтенд будем отдавать то, что лежит в локальной базе.
Но была проблемаКогда я это всё реализовал и стал тестировать, стало заметно, что я так получал очень мало фотографий. Оказалось, что это связано с тем, как Диск хранит загруженные картинки. Есть концепция "безлимитного" хранилища, куда по умолчанию попадают фотографии, загруженные с телефона. Проблема в том, что с картинками из этого хранилища невозможно работать через API. Пришлось вручную скачивать фотографии из безлимитного хранилища и загружать их в обычное. Каждую такую операцию можно выполнить только для 500 фотографий за раз. Эти ограничения могут испортить весь user experience, если я захочу открыть этот проект для публичного пользования.
Но даже после переноса картинок из безлимитного хранилища в обычное, я всё ещё не видел значительной части своих фотографий. Было такое чувство, что я видел только координаты старых снимков. Во всём оказался виноват iPhone...