Предисловие


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

Основная часть


Тогда, в 2017 году я начинал свой путь разработчика с интересного сервиса для созданий простеньких приложений MIT App Inventor (своего рода конструктор приложений от Google).

image

(Это дизайн который я сделал в 2017 году, будучи новичком. Не правда ли ужасно? На дизайне я так и остановился)

Однажды на одном из местных хакатонов в своём городе я хорошенечко так прокачал навык серверных технологий, как оно там все работает, что такое POST/GET запросы, как сервер на них реагирует и все такое. Дома за недельку поднял локальный сервер и сделал несколько скриптов: небольшой чатик и регистрацию. API писалось на PHP.

image

И вот я вспоминаю про то приложение и начинаю гуглить API у Steam. Посидев на форумах минут 10-15, я понял, что найти API Steam не так-то просто. Но оно есть.

image

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

За два подхода, за два вечера я написал основной скрипт, который по точному названию предмета из Steam на английском добавляет его в список и отображает цену. На третий день я запускаю приложение и оно не работает. Первым о чем я подумал: «Может я на столько счастливчик, что именно в то время, когда я решил сделать такое приложение, Steam решил поменять api?» . Все потому что на те самые запросы мне в ответ приходил null. Пришлось опять идти на форумы.

image

Немного почитав, я понял, что такая проблема не у меня одного. Меня это успокоило. В общем, дело было в кэшировании. Я на тот момент не знал, что это такое. Точнее знал, но ни разу не применял и забыл про этот момент. В итоге такая ситуация: я каждый раз когда делаю рефракторинг (логики приложения, дизайна) и компилирую приложение, отправляются запросы к Steam серверам. За последний вечер Steam просто подумал, что я бот, который каждые 10 секунд неугомонно долбится к ценам определенных предметов, и забанил мой ip. Так же я находил разную информацию о том, что есть определенное количество запросов в день, которое можно совершать, чтобы не быть забаненным.

image

И что вы думаете? Весь задизмораленный я скачал VPN (ха-ха). Остановил поток отправления запросов и сделал задержку, которая обновляла бы цены раз в 300 секунд ~ 5 минут. Пришлось переписать систему, так как настоящие цены уже будут храниться в локальном хранилище и попросту раз в 5 минут обновляться, а не каждый раз доставаться с серверов Steam.

Вот система работает, и я принялся за дизайн приложения и оформления его на странице в Google Play. В название воткнул слово «Steam». Иконка должна была быть приблизительно такой:

image

По запросу в Google Play “Steam” есть несколько неофициальных приложений, которые как-то работают с самой популярной игровой площадкой. Но ни одно из них не имеет в себе точный ее логотип. Я списался с одним разработчиком и задал ему вопросы по-типу: «А нет ли у тебя проблем с Valve с использованием их API, почему иконка такая и вообще можно ли в название пихать слово “Steam”?» Ответ был таким:

image

(Не ну по факту то «Steam» с английского «Пар». Что мне слово «Пар» нельзя употреблять? Иконку я переделал)

Заключение


Большинство наверное и не поймут того факта, что в каких-то играх могу пиксели чего-то стоить…

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

P.S. пару скриншотов из приложения:

image

Комментарии (2)


  1. Zoolander
    21.08.2019 08:26

    Это старая тема — за любое подозрение, что приложение пытается имитировать чужой бренд, может прилететь страйк, даже без логотипа, даже если просто используешь публичное API чужой игры — надо стараться максимально не копировать никаких узнаваемых образов, а в описании открыто писать — это не официальное приложение, оно использует публичное API согласно правилам


  1. Jogger
    21.08.2019 14:53

    А о чём статья-то? О том, что в стиме есть ограничение частоты запросов к web api? Так это не новость, все разработчики приложений для стима об этом в курсе, и в общем-то даже в правилах использования api есть об этом пару слов (хотя, должен отметить, очень туманных и неконкретных). Или статья о том, что когда посылаете web-запросы надо не только тело ответа анализировать но и полученный статус? А может о том, что статус 429 означает «Too many requests»?