{"id":49450311,"url":"https://github.com/cloudsucker/cs2crap","last_synced_at":"2026-04-30T01:41:45.412Z","repository":{"id":225698814,"uuid":"763762142","full_name":"cloudsucker/cs2crap","owner":"cloudsucker","description":"Парсинг, автоматизация поиска выгод, автоматизация торговли предметами Counter Strike 2","archived":false,"fork":false,"pushed_at":"2025-06-10T11:36:19.000Z","size":2271,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-10T12:36:46.404Z","etag":null,"topics":["counter-strike","counter-strike-2","cs2","csgo","csgomarket","parser","python","skins","steam","valve","web-scraper"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cloudsucker.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-02-26T21:50:24.000Z","updated_at":"2025-06-10T11:36:16.000Z","dependencies_parsed_at":"2024-03-03T19:48:24.549Z","dependency_job_id":"5fadc042-0cb9-41df-b310-4b9330fa829d","html_url":"https://github.com/cloudsucker/cs2crap","commit_stats":null,"previous_names":["maxfraid/cs2crap","cloudysock/cs2crap","cloudsucker/cs2crap"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cloudsucker/cs2crap","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudsucker%2Fcs2crap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudsucker%2Fcs2crap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudsucker%2Fcs2crap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudsucker%2Fcs2crap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudsucker","download_url":"https://codeload.github.com/cloudsucker/cs2crap/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudsucker%2Fcs2crap/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32451481,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T22:27:22.272Z","status":"ssl_error","status_checked_at":"2026-04-29T22:10:49.234Z","response_time":110,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["counter-strike","counter-strike-2","cs2","csgo","csgomarket","parser","python","skins","steam","valve","web-scraper"],"created_at":"2026-04-30T01:41:44.638Z","updated_at":"2026-04-30T01:41:45.404Z","avatar_url":"https://github.com/cloudsucker.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![cs.crap_logo](static/cs2crap.png)\n\n## \u003cp align=\"center\"\u003e**CS2CRAP - Инструментарий для парсинга, автоматизации поиска выгод и торговли предметами Counter Strike 2**\u003c/p\u003e\n\n\u003e [!WARNING]\n\u003e\n\u003e Данный инструмент, потерял свою актуальность и более не поддерживается как в связи изменений ресурсов, так и в связи изменений правил торговой площадки Steam.\n\u003e В зависимостях проекта имеются сторонние библиотеки, также потерявшие свою актуальность. **Будьте осторожны при их использовании.**\n\u003e \n\u003e Данный инструмент был разработан и опубликован исключительно в образовательных целях и предназначен для личного использования. Он не является официальным инструментом и не нарушает условия использования сторонних сервисов, с которыми взаимодействует.\n\u003e Автор не несёт ответственности за последствия его использования, включая, но не ограничиваясь, возможными блокировками, ограничениями доступа или юридическими последствиями.\n\u003e Ответственность за соблюдение условий использования сторонних сервисов, с которыми взаимодействует инструмент, полностью лежит на пользователе.\n\n## 📄 **Описание**\n\nCS2CRAP - Набор инструментов для сбора и анализа актуальных данных с рынков и автоматизации торговли предметами из игры Counter Strike 2. На момент создания проекта данные успешно собирались из двух источников: [Steam Market](https://steamcommunity.com/market/) и [CS:GO Market](https://market.csgo.com/ru/).\n\nЭтот инструментарий позволял получать всю необходимую информацию о предметах Counter Strike 2, включая их `ID`, `hash_name`, ссылки на торговой площадке Steam, цены, количество продаж за последние сутки и ссылки на изображения предметов.\n\nВ репозитории также есть функции, позволяющие сортировать предметы (к примеру не учитывая граффити, стикеры и сувенирные скины), автоматически сравнивать цены на маркетах и присылать выгодные предметы с помощью вашего бота в Telegram.\n\n### **Пользовательский путь (кратко)**\n\n-   Установили проект\n-   Подключили телеграм-бота или запустили скрипт\n-   Получили актуальную разницу цен\n-   Закрыли сделку и получили профит\n\n## 😎 **Отличие от схожих репозиториев**\n\n### **1. Реализация** 🔄\n\nВсе найденные мной репозитории на момент создания этого проекта использовали не самые выгодные методы сбора данных и не обладали таким разнообразным функционалом.\n\n### **2. Прямой доступ к данным** 🔗\n\nДанный репозиторий позволял получать самые актуальные данные предметов на тот момент. Он не зависел от сторонних сервисов и сайтов потому что данные брались напрямую из сервисов.\n\n### **3. Минимизация запросов** 📉\n\nВ этом репозитории используются методы вычисления для нахождения данных о продажах предмета [**volume**](#🕹️-steam), вместо отправки отдельного узкого запроса, ограничение на который составляет около 300-500 запросов в час.\n\n### **4. Уже собранная база данных** 💾\n\nВ папке /data вы можете найти уже рабочую базу со всеми предметами на торговой площадке (27.02.2024).\n\n## 🔍 **Собираемая информация:**\n\n### 🕹️ **Steam**:\n\n-   **id**: уникальный идентификатор предмета.\n-   **item_name**: оригинальное название предмета.\n-   **price_buy**: минимальный выставленный лот на продажу предмета.\n-   **price_sell**: максимальный выставленный лот на покупку предмета.\n-   **volume**: количество продаж предмета за последние 24 часа.\n-   **item_href**: ссылка на предмет на торговой площадке.\n-   **image_src**: ссылка на изображение предмета.\n\n### 🛒 **CS:GO Market**:\n\n-   **item_name**: название предмета.\n-   **item_price**: минимальный выставленный лот на продажу предмета.\n\n## 🚀 **Начало работы**\n\n### **Клонирование репозитория:**\n\n1. Переходим в нужную нам директорию и клонируем репозиторий:\n\n```bash\ngit clone https://github.com/cloudsucker/cs2crap.git\n```\n\n2. Для дальнейшей настройки переходим в корень клонированного нами репозитория:\n\n```bash\ncd cs2crap\n```\n\n### **Внимание!** Перед использованием инструментария необходимо установить фикс вспомогательной библиотеки Steam:\n\n1. Переходим в директорию **steam_bot** внутри проекта:\n\n\u003e [!WARNING]\n\u003e\n\u003e Этот пакет потерял свою актуальность и может работать некорректно.\n\u003e Также внутри него используется конкертный фикс сторонней библиотеки [**ValvePython/Steam**](https://github.com/ValvePython/steam) также потерявший свою актуальность.\n\u003e Будьте осторожны при их использовании.\n\n```bash\ncd cs2crap/steam_bot\n```\n\n2. Клонируем репозиторий библиотеки [**ValvePython/Steam**](https://github.com/ValvePython/steam):\n\n```bash\ngit clone https://github.com/ValvePython/steam.git\n```\n\n3. Переходим в клонированный репозиторий:\n\n```bash\ncd steam\n```\n\n4. Применяем изменения из [**pull request #454**](https://github.com/ValvePython/steam/pull/454) с фиксом библиотеки:\n\n```bash\ngit pull https://github.com/ValvePython/steam.git pull/454/head\n```\n\n5. Устанавливаем библиотеку в режиме редактирования:\n\n```bash\npip install -e .\n```\n\n6. Для дальнейших шагов возвращаемся в корень проекта:\n\n```bash\ncd ../../../\n```\n\n### **Установка проекта**\n\nИз корневой директории проекта выполните установку проекта в режиме редактирования:\n\n```bash\npip install -e .\n```\n\n### **Добавление своих прокси**\n\n**Для работы cs2crap требуются прокси. Необходимо создать файл proxies.txt в папке /data, и в него поместить список в следующем формате:**\n\n```c\n// без доступа по ip (рекомендуется):\nlogin:password@ip:port\n\n// с доступом по ip:\nip:port\n```\n\n## 📐 **Использование (телеграм-бот):**\n\n### **Настройка телеграм бота**\n\nДля использования функционала бота вы сначала должны [**создать его**](https://botcreators.ru/blog/kak-sozdat-svoego-bota-v-botfather/).\n\nПосле успешного создания бота получаем его [**токен**](https://botcreators.ru/blog/kak-sozdat-svoego-bota-v-botfather/#:~:text=%D0%B4%D0%BB%D1%8F%20%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B8%20%D0%B1%D0%BE%D1%82%D0%B0.-,/token,-%E2%80%94%20%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%B0%20%D0%B4%D0%BB%D1%8F%20%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8) и [**id вашего с ботом чата**](https://cms3.ru/kak-poluchit-chat-id-telegram/), в папке _cs2crap/telegram_bot_ создаём файл _\"config.json\"_ и закидываем в него полученные данные:\n\n```json\n{\n    \"BOT_TOKEN\": \"your_bot_token\",\n    \"CHAT_ID\": \"your_chat_id\"\n}\n```\n\n### **Команды и первый запуск**\n\nДля начала работы с cs2crap с помощью бота запустите main.py, находящийся в пакете telegram_bot из корневой папки. Это можно сделать c помощью вашей IDE либо выполнить следующую команду в терминале:\n\n```shell\npython cs2crap/telegram_bot/main.py\n```\n\nПосле старта бот отправляет сообщение об успешном запуске.\n\n#### **Команды телеграм-бота:**\n\n-   **/update:** **обновление базы данных предметов** (подгрузка всех предметов с торговой площадки Steam **на старте** или **обновление** к примеру после выхода нового кейса)\n-   **/cscrap:** запуск **главной функции** для **обновления цен**, их **сравнения** и **отправки сообщений в телеграм** при необходимости (эта команда потребует дальнейшего ввода **желаемого диапазона цен** для поиска в формате **'от-до'**)\n-   **/stop:** событие остановки главной функции **/cscrap**\n-   **/methods:** вывод включенных методов торговли\n-   **/stm2stm:** включение/выключение метода торговли **Steam -\u003e Steam**\n-   **/csm2stm:** включение/выключение метода торговли **CS:GO Market -\u003e Steam**\n-   **/stm2csm:** включение/выключение метода торговли **Steam -\u003e CS:GO Market**\n\n#### **Запуск /update и /cscrap**\n\nПеред запуском главных функций измените название .csv файла, находящегося в /data, с **\"items_database_backup (???).csv\"** на **\"items_database.csv\"** (*или копируйте его для сохранения backup файла*) или выполните команду /update для создания нового **\"items_database.csv\"** (имейте в виду, что этот процесс может занять много времени, так как для корректной работы необходимо получить все предметы Counter Strike 2 с торговой площадки Steam).\n\nПосле того как у вас есть готовая база данных предметов **items_database.csv** в корне проекта вы можете запускать главные функции: /update для обновления **items_database.csv** и /cscrap для поиска выгодных предметов.\n\n## 📐 **Использование (функции):**\n\n### **Проект предоставляет следующие функции:**\n\n-   Получение **базы данных всех предметов Counter Strike 2** на торговой площадке Steam [**item_name**](#🕹️-steam), [**item_href**](#🕹️-steam) и [**image_src**](#🕹️-steam).\n-   Получение **идентификатора** предмета по [**item_href**](#🕹️-steam).\n-   Получение **объема продаж** предмета [**volume**](#🕹️-steam) за последние **24 часа** используя [**item_href**](#🕹️-steam) предмета.\n-   Получение **цен предмета** [**price_buy**](#🕹️-steam), [**price_sell**](#🕹️-steam), по его [**id**](#🕹️-steam).\n\n### **1. Получение новой базы данных предметов**\n\n#### Функция для получения запросов принимает значения от и до, соответствующие порядку отображения предметов на торговой площадке:\n\n![Screenshot 1](static/screenshots/s1.png)\n\n-   **start_from** - 0, начинаем с **первой страницы**.\n-   **items_count** - указываем значение **21100**, **большее** чем на данный момент **показывает нам Steam**.\n-   **sort_column** - сортировка по **популярности** или **цене**\n-   **sort_dir** - сортировка по **возрастанию** или **убыванию**\n\n```python\nupdate_database(\n    start_from = 0,\n    items_count = 21100,\n    sort_column = \"popular\",    # \"popular\" or \"price\"\n    sort_dir = \"desc\",          # \"asc\" or \"desc\"\n) -\u003e None:\n```\n\n#### **По итогу работы получаем new_items.csv (шаблон базы данных предметов для дальнейшей работы):**\n\n![Screenshot 2](static/screenshots/s2.png)\n\n\u003e [!TIP]\n\u003e Во время работы этой функции частыми явлениями являются исключения запросов *\"429 Client Error: Too Many Requests for url\"*, если процесс получения данных продолжается схожие выводы в консоль можно игнорировать, однако в случае продолжения получения ошибок в течении долгого времени лучше остановить работу программы и пополнить запас прокси серверов для лучшей стабильности и меньшей затраты времени.\n\n### **2. Получение id, цен и популярности предмета.**\n\n-   **price_range**: желаемый **диапазон цен** для поиска\n-   **STM2STM**: флаг сравнения цен **для перепродажи** предмета внутри **Steam**\n-   **CSM2STM**: флаг сравнения цен **для перепродажи** предмета из **CS:GO Market** в **Steam**\n-   **STM2CSM**: флаг сравнения цен **для перепродажи** предмета из **Steam** в **CS:GO Market**\n-   **stop_cscrap_event**: событие для **остановки поиска** командой **/stop** в чате с ботом\n\n```python\ncscrap(\n    price_range=(-1, float(\"inf\")),\n    STM2STM=True,\n    CSM2STM=False,\n    STM2CSM=False,\n    stop_cscrap_event=asyncio.Event,\n):\n```\n\n### **По итогу работы получаем дополненную базу с уже заполненными всеми необходимыми данными:**\n\n![Screenshot 3](static/screenshots/s3.png)\n\n## 📚 **Используемые библиотеки**\n\n-   **pandas == 2.1.4**\n-   **beautifulsoup4 == 4.12.2**\n-   **requests == 2.31.0**\n-   **colorama == 0.4.6**\n-   **aiogram == 3.3.0**\n\n\u003e [!IMPORTANT]\n\u003e Также в новых ветках разработки **бота для Steam** была использована библиотека **steam 1.4.4**, однако она **перестала корректно работать** после обновления логики авторизации на стороне сервера Valve.\n\nВ этом проекте была использована **[починенная версия](https://github.com/ValvePython/steam/pull/454)**.\n\n## 📬 **Обратная связь**\n\nПо всем вопросам: **ferjenkill@gmail.com**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudsucker%2Fcs2crap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudsucker%2Fcs2crap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudsucker%2Fcs2crap/lists"}