Это был декабрь 2019 года. Мрачная погода и холодные температуры в Торонто заставили меня жаждать теплого отдыха. Когда я проходил перемещение через результаты поиска, я понял, что у меня были открытые десятки вкладок, чтобы ответить на довольно простой вопрос: «В какие теплые места можно путешествовать в декабре с дешевыми рейсами?»
Будучи инженером -программистом, я понял, что все, что я делал, это пытался применить фильтр для широкого набора результатов путешествий. Что если у меня было много данных о местах в мире? Могу ли я построить какой -то тип фильтрации, чтобы найти прохладные места?
Я нырнул в течение следующей недели, чтобы увидеть, сколько данных я смогу найти в Интернете, чтобы создать веб -сайт путешествий, который поможет мне найти интересные направления.
60 дней спустя, Visabug родился и мягко забит на Reddit, где он пошел в #1 на SideProject и Reactjs субреддиты. 🎉
Мои цели для Visabug были:
- Создайте что -то, что действительно полезно: Я не хотел просто что -то строить, потому что это было технически интересно.
- Сделайте данные свободно доступными, чтобы помочь людям принимать лучшие решения: Путешествие открывает наши глаза на другие культуры и делает нас более терпимыми. Я не хотел скрывать данные за Paywalls.
Получение информации о стране
Первой частью данных, которые меня интересовали, была информация о стране. Я хотел ответить на вопрос, «В какие страны я могу легко путешествовать, и сколько будет стоить в среднем, чтобы там летать?»
Начать, Я получил список из всех стран мира. Тогда я использовал Данные из Всемирного банка Наряду с API Google Geoocoding для получения общих данных, таких как местоположение, популяция, столицы, языки и многое другое.
Это была моя отправная точка. Я создал файл JSON для каждой страны, поэтому у меня было 238 файлов JSON под названием Канада , India.json , так далее.
С небольшим количеством дополнительной работы, я также смог найти данные о:
- Связанные страны и близлежащие страны
- Регионы и континенты
- Население
- Погодные условия (температура и количество осадков)
Получение информации о визе и путешествиях
Далее я хотел получить данные о туристической визе. Если бы я был гражданином страны и хотел поехать в другую страну, какую визу мне понадобится? Я пытался искать API, но не было никакого, что было легко доступно.
Я повернулся к поиску Google. Оказывается, когда вы ищете это в Google, вы получаете хорошую карту с некоторой полезной информацией:
Я написал сценарий, который создал множество запросов поиска Google с перестановкой каждой страны. Это выглядело примерно так:
const visaSearchSet = [ "usa visa requirement for canada citizens", "brazil visa requirement for algeria citizens" ... ]
Затем я написал Кукольник Скрипт, который запросил Google и соскребил набор результатов с карты. Это было превращено в другую функцию JavaScript, которая проанализировала строку в структуру данных. Результатом было что -то вроде этого:
"united-kingdom": {
"nepal": {
visaCategory: "required",
validity: "three to six months from date of issue",
embassy: "12A, Kensington Palace Gardens, London, 48 4KU"
},
...
}
Это был мой первоначальный прототип. С тех пор я улучшил алгоритм, чтобы дважды проверить требования визы на некоторые другие сайты, поэтому один неправильный результат не дает мне неправильных данных.
После получения информации о визе я также хотел получить рекомендации по путешествиям. С стране может быть легко добраться, но вы, возможно, не захотите туда ходить, потому что это опасно!
К счастью, есть сайт под названием SmartTraveller Это действительно позволяет легко получить рекомендации по путешествиям, таможенную информацию, иммунизацию и многое другое.
В настоящее время Visabug может отслеживать:
- Требования к визам между любыми двумя странами мира
- Классифицирует визы как «требуется», «Не требуется», «e-visas», и «Повреждены визы»
- Поддержка виз в районе Шенгена
- Места посольства
- Советы по путешествиям
- Таможенная информация (скоро)
- Иммунизации (скоро)
- Многострановые визы (скоро появится)
Получение городских данных
Далее я хотел получить данные города. Для этого мне пришлось сначала выяснить самые популярные города в мире. Я не мог просто использовать население, потому что многие популярные города относительно небольшие. Я использовал Этот бесплатный набор данных Для моего первоначального набора городов. В качестве бонуса этот набор данных позволил мне отобразить города по своей родительской стране.
Затем я хотел собрать несколько полезных показателей об этих городах.
- Чем известен город? Чтобы решить это, я использовал TripAdvisor, чтобы получить самые популярные вещи, и классифицировал их.
- Какова стоимость жизни? Индекс стоимости жизни от Numbeo помогла обеспечить относительные затраты на город.
- Uber доступен? На веб -сайте Uber есть список всех городов, в которых они работают.
- Насколько это безопасно? У Numbeo также есть индекс безопасных городов!
Я собираю гораздо больше данных, чем в списке выше, но это должно дать вам представление о том, как это работает. Собирая данные из разных поставщиков, я смог понять уникальные характеристики всех городов.
В настоящее время я также собираю:
- Средние цены на рейсы между двумя странами
- Стоимость еды
- Интернет скорости
- Популярные поставщики SIM -карты
- Безопасна ли вода для питья
- Качество воздуха (скоро 🤫)
- Популярные туристические достопримечательности (скоро 🤫)
Создание фильтров
В Visabug вы можете использовать фильтры, чтобы найти уникальные направления. Вот скриншот фильтрации.
Помимо фильтров требований визы, фильтрация фактически работает на уровне города, а не на уровне страны. Поэтому, когда вы применяете фильтр, такой как «песок и пляжи», Visabug находит все города, которые, по его мнению, близки к пляжам, и пузырят результат до уровня страны.
Существует некоторое усреднение, которое выполняется для того, чтобы страны не были отмечены как ложные позиции. Например, вы бы не сказали, что Канада близко к песку и пляжам, но Торонто есть. Я написал какой -то код, чтобы убедиться, что один город не влияет на классификацию всей страны.
Причина, по которой я пришел с этим подходом, заключается в том, что мне нравится, что информация будет жить на более детальном уровне. Это позволило бы мне выполнить поиск на уровне города в будущем. Мне нравится, что информация будет жить на более детальном уровне. Это позволило бы мне выполнить поиск на уровне города в будущем.
Вот почему вы можете увидеть информацию на уровне города в Visabug. Города-это то, что на самом деле поддерживает большинство данных без VISA, и это одна из областей сайта, которую я хочу улучшить.
Получение изображений
Я действительно доволен тем, как выглядит пользовательский интерфейс Visabug, и большая часть этого связана с изображениями. Это просто заставляет меня хотеть путешествовать!
Изображения были очень легко получить. Я подписался на Аккаунт разработчика Unsplash Это дало мне доступ к 50 запросам/час через UNSPLASH API. 5 часов спустя у меня были изображения для всех 238 стран мира. Чтобы определить, какой изображение показать для страны, я заказал изображения Unsplash Loys и выбрал самый любимый.
Недавно я был утвержден Чтобы получить учетную запись партнера Unsplash, которая теперь получает мне 5000 запросов/час. Я намерен использовать это, чтобы иметь лучшие изображения для городов в ближайшем будущем.
Все данные изображения хранятся как файлы JSON, поэтому мне не нужно делать какие-либо запросы API в режиме реального времени.
Хранение данных
Самое смешное, что я хотел построить Visabug очень быстро, чтобы увидеть, есть ли интерес к продукту. Чтобы ускорить ситуацию, я фактически запустил сайт без базы данных. 😅
В настоящее время Visabug Имеет 2 файла JSON: один со всеми данными страны, а другой со всеми городскими данными. Вместе они около 300 МБ. Когда приложение запускается, эти данные загружаются в память. Это не идеально, но до сих пор работало.
Конечно, я не могу отправлять 300 МБ данных клиенту, поэтому у Visabug есть сервер Nodejs, который выполняет обработку на этих данных и отправляет только то, что хочет клиент. Все транслируется на сервере, и у меня еще нет публичного API.
Что произошло дальше?
Я приобрел все эти данные к янвату и провел в следующем месяце, фактически создавая продукт. Это то, на что выглядел Visabug в январе.
Вот как Visabug выглядел 60 дней назад. С тех пор я проводил около 1 часа каждый день, и это прошло долгий путь! Постоянство и последовательность недооценены. https://t.co/Lsy8sbqc2e
Я собираюсь написать о том, как я разработал веб -сайт в следующем посте. Я получил помощь от Натана Барри, который щедро помог мне сформировать обмен сообщениями на домашней странице, и Крис Мессина дал мне много полезных советов по продукту.
Следуй за мной в Твиттере Или здесь, на dev.to, если вы хотите, чтобы вас уведомляли, когда выйдет этот пост. Конечно, пожалуйста, сделай Проверьте Visabug И дайте мне знать, что вы думаете!
Оригинал: “https://dev.to/tilomitra/how-i-aggregated-a-million-datapoints-and-built-a-travel-website-4726”