Добываем турецкие (и любые) подарочные карты Steam по минимальной цене с помощью ChatGPT, Google таблиц и Apps Script

Да, заголовок звучит жутковато, но суть проста — я расскажу о способе найти недорогие карты оплаты для Steam. Нужно ли быть программистом для этого? Нет. Нужен ли доступ к ChatGPT? Ну если захотите сделать что-то своё — да, а так нет, я уже всё напрограмировывал. Просто берите и пользуйтесь.

А что случилось? После введения санкций российский Steam стал работать через попку и геймеры поползли в другие регионы: Турция, Казахстан, Аргентина и т.д. Услугами по переезду аккаунта заполнились Plati и Авито. Оставим за скобками этичность такого решения, люди хотят иметь доступ к сервису, выбора особо нет, изворачиваются как могут да и разных аргументов, «за» и «против», множество.

Вот только как оплачивать? На помощь приходят гифт-карты Steam — покупаешь код, вводишь его при пополнении. Всё.

Вводим код оплаты в аккаунте Steam
Вводим код оплаты в аккаунте Steam

Но! Продаёт эти коды десяток магазинов по самой разной цене и просто крыша съедет разбираться где дешевле.

Но! Я нашёл агрегатор скидок, который собирает сразу все предложения на одной страничке. Да ещё и коды скидок даёт. Ура? (Везде в примерах привожу Турцию, но вы можете поменять на любой регион.)

Но! Почти ура, но не ура, потому, что куча номиналов и не понятно где дешевле получается. Что мне взять Driffle 250 TRY за €13,03 или Eneba 200 TRY за €10,27? Вот да, на глаз не ясно.

Вот бы нам поделить цену гифт-карточки на номинал, тогда бы мы знали курс за лиру и сравнили бы. Но как это сделать?

Сразу перейду к результату:

Очень красивая таблица
Очень красивая таблица

Неплохо, да? Мы сразу видим самые выгодные предложения. Ниже пошагово распишу, как получить себе точно такое же. Займёт 5–10 минут.

Сразу отмечу, что я не программист и вообще программирования не знаю (и учить не планирую пока), скрипты пишу с помощью ChatGPT, поэтому в сложные дебри с распарсиванием страницы не полез, просто скопировал данные и обработал в таблице.

Пошаговая инструкция:

1. Идём на страницу https://www.allkeyshop.com/blog/buy-steam-gift-card-cd-key-compare-prices/, выставляем нужный регион, выбираем способ оплаты (тогда прибавит к цене сервисный сбор), нажимаем внизу «Show all offers», чтобы показало все предложения, выделяем таблицу и копируем (Ctrl+C). Ниже записал краткое видео, как оно делается:

Копировать так

2. Создаём таблицу в Google Таблицах, я назвал её «Цена на карточки Steam», выделяем ячейку A1 нажимаем Ctrl+Shift+V (вставить без форматирования).

3. Добавляем скрипт: Расширения → Apps Script, откроется новая вкладка. Можно как-то назвать проект, я назвал «Парсим allkeyshop.com».

Там уже будет пример скрипта, можно переименовать его в «Парсим цены». И просто вставляем вместо примера наш код:

function parseData() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var data = sheet.getRange('A:A').getValues(); // получаем все значения из столбца A var output = []; // массив для хранения результатов var name = data[0][0], quantity, price; for (var i = 1; i < data.length; i++) { var cell = data[i][0]; if (cell && typeof cell === 'string' && cell.includes('€')) { // если в ячейке есть знак евро if (data[i-1][0] && typeof data[i-1][0] === 'string' && !data[i-1][0].startsWith('TURKEY')) { // если предыдущая ячейка не начинается с "TURKEY" price = parseFloat(cell.replace('€', '').replace(',', '.')); // заменяем знак евро и меняем запятую на точку output.push([name, quantity, price, price/quantity]); // добавляем результат в массив if (data[i+1] && typeof data[i+1][0] === 'string') name = data[i+1][0]; // следующая ячейка после цены будет новым именем } } else if (cell && typeof cell === 'string' && cell.includes('TURKEY')) { // если в ячейке есть слово "TURKEY" var match = cell.match(/\d+/); // ищем число в ячейке if (match) quantity = parseInt(match[0]); // если нашли, это количество } } // сортируем данные по колонке F (индекс 4, так как индексация начинается с 0) output.sort(function(a, b) { return a[3] - b[3]; }); // записываем отсортированные данные в столбцы C, D, E и F for (var j = 0; j < output.length; j++) { sheet.getRange(j+1, 3, 1, 4).setValues([output[j]]); } }

Нажимаем кнопочку сохранить сверху.

Должно получиться вот так. У вас сразу, а я несколько часов ChatGPT насиловал.
Должно получиться вот так. У вас сразу, а я несколько часов ChatGPT насиловал.

Ну и на этом всё, можно нажимать «Выполнить», скрипт при первом запуске попросит доступ к Google Диску и будет ругаться, что всё ненадёжно и не сертифицировано, но это наш скрипт, проблемы нет, даём разрешения.

4. Вот результат работы скрипта:

Добываем турецкие (и любые) подарочные карты Steam по минимальной цене с помощью ChatGPT, Google таблиц и Apps Script

Мы видим гифт-карты отсортированные по самой низкой цене за лиру. Это уже с учётом сервисного сбора.

Важно! Не забывайте при покупке вводить код скидки, а то такая цена не получится.

На этом всё. Пользуйтесь!

Бонус

Я себе ещё сделал красиво — покрасил градиентом и приделал две кнопки для запуска и очистки значений. Кратко рассказываю как.

1. Выделяем столбец F и уменьшаем количество знаков после запятой.

2. Выделяем столбец F и добавляем градиент (Формат → Условное форматирование → Градиент). Я вот такие значения поставил:

Градиент — нечеловеческая красота
Градиент — нечеловеческая красота

3. Рисуем кнопку «Пуск»: Вставка → Рисунок. Рисуем и сохраняем. Выбираем у рисунка три точки → Назначить скрипт и вводим значение «parseData» (это имя функции нашего скрипта).

4. Добавляем скрипт для очистки. Расширения → Apps Script, нажимаем плюсик → Скрипт, вводим название, я ввёл «Очищаем данные». Теперь копируем код, он просто очищает колонки C, D, Е, F.

function clean() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var lastRow = sheet.getLastRow(); if (lastRow > 0) { sheet.getRange('C1:F' + lastRow).clearContent(); } }

5. Рисуем кнопку «Очистить»: Вставка → Рисунок. Рисуем и сохраняем. Выбираем у рисунка три точки → Назначить скрипт и вводим значение «clean» (это имя функции нашего скрипта).

Ну и всё, получится как у меня на первом скриншоте в посте.

P.S. И да, читатель, теперь ты стал программистом.

Знаю, что нельзя писать статьи и не указывать телеграм-канал, поэтому:

Блог: https://t.me/Evil_Pechenka
Печенькочат: https://t.me/pechenkochat

104104
53 комментария

если бы еще их можно было купить)

9

Я диаблу за крипту покупал, там вообще без переплат. Мб тут подобное есть.

3

Это да, но у меня европейская карта, я могу. Предполагаю, что за полтора года у многих тоже что-то появилось.

1

Интересно, российским юнион пеем ваще подобное можно оплачивать?

Российским юнион пеем можно оплачивать примерно ничего примерно нигде

10