Контакты, прайс и портфолио - это то, из чего состоит 99% сайтов фотографов. И не удивительно, что многие коллеги фотографы за последние лет 5 отказались от своих персональных сайтов и их роль стали играть страницы в социальных сетях. Я же наоборот, стал развивать свой персональный сайт и делать так, чтоб мои клиенты туда почаще заходили. Да что там можно такого придумать?
Что под капотом
Я фотограф, но очень люблю программирование. Но так как я очень ленивый, ничего кроме python я толком не знаю, и даже программа для esp8266 чтоб делать такие снимки со светодиодной лентой, была написана на python.
Текущая версия сайта написана на django и крутится на не очень мощном VDS. django позволяет быстро внедрять новые фичи в виде приложений, не затрагивая старый код, который как то там написан, ну и ладно. VDS же дает свободу и внедрять некоторые фичи, на которые тратишь много времени, но потом ими никто не пользуется. Например, нейронная сеть, которая подбирает похожие по стилю фотографии из моего портфолио.
Иногда, приходится выходить из зоны комфорта и писать что то на JavaScript, но об этом я рассказывать не буду, чтобы не пугать читателей хабра своим говнокодом.
Свое "облако"
Раньше, чтобы отдать фотографии клиенту, приходилось писать файлы на cd/dvd и встречаться с клиентом еще раз. Сейчас, все пользуются облаками - закинул папопчку, отправил ссылочку и свободен. И все было прекрасно, пока я как то не заглянул в статистику просмотров расшаренной папки. С небольшого мероприятия, там было почти тысяча просмотров. И мне стало обидно, что весь этот трафик льется мимо меня и моего сайта. А ведь людям, наверняка хочется узнать, кто этот замечательный фотограф и где его найти. Решено было сделать свое "облако" для отдачи фотографий клиентам.
Много фотографий, очень много. Нужно хранить и отдавать: zip архив с оригиналами (на лету 2-8 гигабайт не очень хочется собирать), уменьшенные копии для загрузки здесь и сейчас и миниатюры для того чтобы просмотративать фотографии "списком". За год выходит около 400 гигабайт файлов в количестве 350 тысяч штук. Для VDS с 60 гб SSD диском, это как то многовато. Пришлось познать все прелести работы с s3 хранилищем от стороннего провайдера.
В django, вопрос кастомного хранения решается очень просто, благодаря django-storages и boto3. Плюс замечательная библиотека django-imagekit, которая берет на себя всю возню с миниатюрами в разных размерах и форматах, а так же всякие мелочи, типа кропа под заданные пропорции.
Единственное что - нельзя забывать про кэширование. Подключить его очень просто (например redis), а без него отдача страницы с 500-600 фотографиями, может занять до 30 секунд, так как как например в кэш должны попадать флаги наличия миниатюры на диске и imagekit не будет каждый раз проверять на диске нужный файл, что особенно дорого, если хранилище удаленное.
И когда у тебя свое "облако" - можно поэкспеременитровать и внедрить дополнительные фичи, которые возможно будут интересны пользователям. Например у меня к следующему релизу готовятся такие странности:
"Найти себя". Человек делает селфи прямо в браузере (или загружает свою фотографию), и сайт показывает только те фотографии, где он есть. Реализовано с помощью библиотеки face_recognition. Есть конечно один минус - люди меньше проводят времени на странице (что не нравится поисковикам), но зато как то все это современно.
Кнопки "самые счастливые", "самые печальные" и прочие. Сортируют фотографии по эмоциям. Для развлечения конечно, но иногда просматриваю глобальную статистику по всем фотосессиям что бывает полезно в работе над ошибками.
"Напоминаю"
Работа фотографа, это не только сама съемка и последующая возня с фотографями. Это еще и много рутины, такой как организации съемки. К тебе обращается клиент, вы договаривается и эти договоренности нужно как то зафиксировать в удобной форме для себя и для клиента. Есть конечно история переписки в мессенджерах, но среди хочется собрать все вместе:
Дата и место (адрес) съемки
Чеклист для себя и для клиента - что не забывать с собой взять или что нужно подготовить.
"Референсы". Примеры фотографий, в какой стилистике желательно снять или вот именно такие фотографии нужно сделать (особенно актуально для коммерческих съемок).
Напоминалки и уведомления: "Вы записаны на фотосессию", "У вас завтра фотосессия", "Фотосессия уже через час". Клиентам, как оказалось, это понравилось и помогает для забывчивых успеть подготовиться к съемке.
Реализовал я это максимально ленивым способом:
В календаре смартфона создается запись с датой, временем, местом, контактным телефоном клиента (клиентов) и чеклистов в поле "заметка". Далее, скрипт по крону через google api, ищет эти записи, и если в записи все это есть, добавляет в базу данных эту съемку. Далее, клиенту прилетает первое СМС(!) со ссылкой на страницу с подробностями, где можно в одном месте получить всю информацию о съемке, поработать с чеклистом, загрузить референсы. Кстати, эта же информация используется для генерации календаря занятости меня, то есть клиенты могут всегда зайти и посмотреть, в какие дни я свободен.
Отдельно хочется сказать про СМС. Это архаичный способ доставки сообщений, но он самый надежный, ведь не угадаешь каким мессенджерем пользуется тот или иной клиент.
Самой интересной задачей тут было найти способ бесплатной отправки СМС именно со своего номера. После долгих поисков, был найдет прекрасный вариант - сервис pushbullet. С ним оказалось все до неприличия просто:
Ставим приложение на смартфон, получаем ключ API, и сайт по API теперь может отправлять пуши на смартфон, а приложение уже отправляет СМС с твоего смартфона. Кроме СМС, мне понравилось просто слать пуши о каких либо событиях - новая заявка на съемку, новый отзыв, новый спам комментарий и прочее.
Еще больше трафика!
Когда я ощутил прирост трафика, я стал еще более жадным. Мне захотелось вообще отказаться от сторонних сервисов и весь трафик лить на свой сайт.
Свой "Taplink". Некоторые соцсети (не будем позазывать пальцем), не позволяют нормально заполнить профить "о себе" и не позволяют давать ссылки на какой то сторонний контент. Одна ссылка в профиле и точка входа на своем сайте снимают эти проблемы.
Медиа контент. Кроме фотосъемки, я еще занимаюсь съемками с квадрокоптера. Интерактивные панорамы в 360 градусов тоже стал размещать у себя на сайте (пример). Бывает, что такую ссылку публикуют какие то новостные паблики и к тебе на сайт попадают десятки тысяч людей. То же самое и с 3D моделями или с видеороликами.
Для скромных. В портфолио реализована возможность создания подборки фотографий и отправка ее фотографу с контактными данными. С лозунгом "хочу такие фотографии". Особенно актуально, когда речь идет о некоторых деликатных съемках, и есть страх написать фотографу и попросить такую фотосессию.
В итоге
Через год после начала внедрения дополнительных фишек, посеящаемость сайта выросла на несколько порядков. И если раньше туда попадали редкие люди, которым я давал на него ссылку или редкие попадения из поисковиков, то теперь сотни заходов в день, неплохая конверсия посетителей (правда по старинке - переходят в соц сети и пишут уже там). Поисковики так же стали любить мой сайт, и это без всякой SEO оптимизации и пр. Просто потому что они видят, что люди стали посещать сайт, и самое главное - проводить на нем время.
P.S. Кроме сайта, я упрощаю себе работу еще и на десктопе, об этом будет следующая статья.