Аукция — сервис уведомлений о новых лотах. От идеи до реализации

в 18:14, , рубрики: Без рубрики
Аукция — сервис уведомлений о появлении товара на интернет аукционах

Приветствую Всех!
Хотел-бы рассказать Вам о новом сервисе Аукция.NET — сервисе уведомлений о появлении интересующего товара/лота на интернет-аукционах.

У каждого бывают моменты когда возникает idee fixe: “Хочу это купить!”. Но вот беда: денег нет, или просто “душит жаба” покупать данный товар по бешеной стоимости.

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

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

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

Потому пошёл дальше и расписал себе более-менее стандартное ТЗ:

  • Каким должен быть основной функционал?
  • Какие нужны страницы? ( хотя бы для начала )
  • Какова должна быть структура БД? ( здесь я расписал всё чуть-ли не до всех полей и связей )
  • Как должен происходить парсинг данных, и какие данные необходимо собирать?
  • Как выводить списки найденного товара, и как пользователю взаимодействовать со списками найденного?
  • Как и когда уведомлять пользователя о появлении необходимого товара?

Главная страница

После чего понемногу начал “ваять”.
Писать я решил изначально на PHP ( кроме него я знаю хорошо только Delphi и JS, а для сервера это ну никак не годится :) ), и как ни странно, начал я с создания модульной системы парсеров интересующих аукционов. Модульная система делалась для возможности лёгкого наследования парсеров ( это актуально для аукционов AllegroGroup — Аукро, Молоток и т.д. — где для разных стран меняется только URL ), и быстрого добавления новых. После этого занялся написанием “правильной” оболочки для cCURL: реализовал удобную для себя работу с куками, прицепил генерацию UserAgent, правильную обработку редиректов и прочие радости жизни, которые и задолго до этого помогали мне.

Как только реализовал это, привёл в некоторый порядок БД, написал несколько парсеров, однако на некоторое время всё это затихло, потому как меня пригласили на работу в молодой стартап ( о нём планирую написать пост позже ).
Так проект пробыл в состоянии стагнации порядка полугода.

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

  • Один запрос проверяется не чаще, чем раз в 2-3 часа.
  • Крон запускается каждые 5-10 минут, не беря во внимание уже отработанные запросы и обрабатывая столько запросов за запуск, сколько позволяют лимиты в php.ini.
  • И другие вещи, которые должны способствовать наименьшей нагрузке, пока сервис не вырастет во что-то большее на собственном сервере.

Пока это всё делалось, я также решил обратиться к знакомому копирайтеру за подбором имени, слогана и прочего. Изначально я думал “обозвать” сервис “ЖдуТовар”, но здесь была проблема с лаконичностью названия, и читаемости домена ( gdutovar не очень читается и звучит ). Поэтому был найден более подходящий вариант “Аукция” с доменом: www.auctia.net (.net — потому что сервис не для пользователей одной страны, и вариант с .ua/.ru и т.д. был бы не очень).

Результат работы

Ну а после того как был готов дизайн: всё версталось, всё делалось красивым, также доводился до ума функционал, не связанный с парсингом аукционов, делались прочие неинтересные, но крайне необходимые вещи.
Сейчас сервис умеет уведомлять о появлении ожидаемого товара по e-mail, после чего запрос “ставится на паузу” до подтверждения: подошёл товар или нет. Затем запрос либо будет отправлен в архив ( на данный момент удалён ), либо продлён.

В планах на будущее:

  • Увеличить количество сервисов.
  • Добавить фильтры товаров при просмотре “подошедших”/”не подошедших”.
  • Добавить “архив” запросов.
  • Реализовать ограничение длительности запросов (дабы сервис не занимался постоянно “мертвыми запросами”, по которым длительное время нет никаких товаров).
  • Сделать регистрацию/авторизацию через социальные сети.

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

Прошу строго не судить как статью, так и сам сервис.
Понимаю что всё не так гладко как могло бы быть, но я стараюсь, честно :)

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

Автор: ange007

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js