Bio
Bio

Subscribe to soldi

Subscribe to soldi
Share Dialog
Share Dialog


<100 subscribers
<100 subscribers
Канал типа умного чела: https://t.me/soldidlos Чатик типа девелоперов: https://t.me/soldi_chat
В этой статье мы разберем откуда я беру большинство инфы для трекеров и пятиминуток. Также эти данные могут быть использованы в любых задачах, которые связаны с NFT статистикой.
Говорить мы сегодня будем про покупки/продажи/листинги NFT.
Для начала с помощью чего мы это будем делать.
import requests
import cloudscrapper
import pydantic
requests - тут все понятно cloudscrapper - тоже запросы, но которые умеют обходить Cloudflare. Т.к. сегодня мы будем учиться получать инфу, которую не должны получать из запроса, эта библиотека нам очень пригодится pydantic - просто бомбовая библиотека для парсинга и взаимодействия с джсон файлами. Для того чтобы лучше понять что это, сначала изучаем классы ВИДЕО, потом смотрим вот этот видос про саму библиотеку
Начнем с того, что вся информация есть на блокчейне, но это для очень умных людей, которые любят копаться в огромных json файлах, которые еще и выглядят вырвиглазно. Если вам не сильно важна скорость получения данных (разница в несколько секунд), то смело забиваем болт на прямое получение инфы из блокчейна до момента, пока не созреем до этого.
Мы же сегодня будем пользоваться API MagicEden/CoralCube/Solscan.
Что такое API? API - это протокол взаимодействия программ. Когда вы заходите на сайт, в большинстве случаев, от сервера нам приходит ответ в виде джсон файла, который открывается на фронтенде как нужно сайту. Именно этот запрос и ответ на него мы и будем использовать. Где-то легально, где-то не очень.
Кстати все запросы, очевидно, можно открывать в браузере как обычную ссылку и смотреть что там есть. Удобно, чтобы каждый раз не менять или не создавать что-то в питоне.
Легальное решение - https://api.magiceden.dev/ В МЕ решили дать возможность разработчикам получать информацию в удобной форме, вообще не взаимодействуя с блокчейном. То бишь мы взаимодействуем с их сайтом. Если какой-то инфы нет на сайте, мы ее не увидим. Например каких-то скам нфт и так далее. То же кстати касается и продаж на сторонних сайтах, хотя вроде как с какого-то момента они там есть, но я когда делал калькулятор профита, мне приходилось брать инфу и с корала и с ме, потому что какой-то инфы там нет.
Плюсы:
Отличные гайды. Все понятно, просто, с примерами кода для многих языков
В примерах есть уже готовый код + информация, которую вы получите, удобно чтобы самому не разбираться какой запрос за что отвечает
Легальность. Это открытая фича от МЕ, то есть проблем с тем, что у вас что-то не работает не будет. (В отличии от случаев, когда вы обходными путями получаете инфу, и вам надо ебаться с обходом проверок и прочего)
Минусы:
Рейт лимиты. Это самый главный минус, который не дает использовать все возможности API на полную. У вас есть ограничение по кол-ву запросов с одного IP. Да, это решается с помощью проксей, но опять-таки это лишняя трата времени + финансов.
Итог:
Хорошее решение, для того чтобы разобраться в том, как все работает. Плюс там есть информация, которой нет в других запросах и я сам использую этот API в таких ситуациях.
Вот тут уже начинается немного хакерства. Подрубаем Cloudscraper и начинаем шаманить.
Для начала мы инициализируем скрапер:
import cloudscraper
scraper = cloudscraper.create_scraper(browser={
'custom': 'customname/1.0'
})
browser ставите рандомный, просто чтобы он был уникальный, зачем это делается объяснять не буду, просто так меньше вероятность удариться в защиту
Используем его как обычный requests. Прям 1 в 1:
r = scraper.get(url="url")
Поддерживается также и .json() метод и .status_code. И конечно же POST, если вам это нужно. Короче говоря тот же реквест, ток с обходом защиты.
Теперь к самим запросам с корала, я собрал те, которые сам часто использую:
https://api.coralcube.io/v1/getUserActivities?pubkey={wallet}
Получаем всю активность с кошелька. Покупки, продажи, минты(!). Но тут могут быть пропуски, если продажа была на другой площадке + очень неудобно показывается продажа и покупка, одним словом execute_sale, где надо смотреть на покупателя и продавца, но думаю разберетесь.Простой пример как это сортировать:
#wallet = "our wallet"
type = value['type']
if value['type'] == 'execute_sale' and value['buyer'] == wallet:
type = 'buy'
elif value['type'] == 'execute_sale' and value['buyer'] != wallet:
type = 'sell'
https://api.coralcube.io/v1/getActivity?offset=0&page_size=50&activity_type=sales
Запрос на получение ласт активности почти по всем площадкам (думаю сами понимаете, где это используется) offset - смещение page_size - количество транзакций в одном запросе
https://api.coralcube.io/v1/getUserProfile?pubkey={wallet}
Получаем все NFT на кошельке в одном(!!!) запросе
Тут не все запросы, но описывать и искать все нет смысла. Если вам нужно что-то другое, дальше я опишу как искать такие запросы и смотреть что в них хранится.
Плюсы:
Многая информация получается одним запросом, что очень удобно
Есть огромное количество разных запросов на любой вкус
В активити есть минты
Отсутствие явных рейтлимитов
Минусы:
Не всегда очевидная информация, как в примере с продажами
Цены на фри минты ноль, хотя нам всем понятно, что есть еще и комиссия
Как и в случае МЕ, покупки на других площадках отображаются некорректно
Итог:
Обожаю этот сайт и его запросы. Есть все, если разобраться, то можно получить что угодно.
Давайте разберемся как искать запросы на примере сайта Solscan
Заходим на любую транзакцию или аккаунт или токен, не суть. Разберем на транзакции, но суть везде одинаковая.
Допустим мне нужно узнать сколько человек потратил на минт NFT.
Транзакция с минтом. Вся информация, которая есть на сайте, в том или ином образе есть в запросе.
Открываем network (f12 - network) и выбираем Fetch/XHR
Обновляем страницу, чтобы заново отправить запрос на сервер и получить ответ

И видим, что мы получили 4 запроса. Нас интересует 4 запрос, а именно transaction?tx…. он больше всего похож на нужный нам, кликаем по нему и переходим в Preview, чтобы посмотреть что он возвращает (иногда на поиск нужного запроса может уйти несколько десятков минут)

И видим нужную нам строку, наш аккаунт и post и pre balance. То есть мы получаем баланс до транзакции и после, что и равняется по сути цене минта.
Значения здесь указываются в lamports (1 lamports = 0.000000001 sol).
Легким подсчетом получаем, что
preBalance = 6113330525 * 0.000000001 = 6.113330525
postBalance = 100632445 * 0.000000001 = 0.100632445
Вычитаем и итого минт нам обошелся в 6.01269808 sol. Мы получили, то что хотели.
Если нам нужно использовать это в программе, то переходим в Headers и смотрим, какой запрос нам это дал

В нашем случае это https://api.solscan.io/transaction?tx=5j8wZhJrXMusXtC32SAhCNNSbNCTkqWDyNGnusERKdHso4Efv1GWQHtrHGH8pK6WdYfiUeT3fGYPyuEcEiuGD1JX&cluster=
Где мы отчетливо видим транзакцию и можем ее заменить на любую другую и получить точно такой же джсон с информацией, чтобы использовать в наших целях.
У солскана также есть паблик API, но он с рейтлимитами, а я его использую очень часто (например, чтобы определить стоимость минта при анализе кошелька, т.к. на коралкубе пишет 0, что очевидное вранье, и нужно смотреть по транзакции)
Вот ссылка, можете посмотреть, может под ваши задачи будет хватать паблик API.
Тут плюсы и минусы не буду расписывать, т.к. под определенные задачи - аналога я не нашел, да и не искал если честно. Единственный минус, в том, что нужно разбираться с инфой и правильно ее читать, но это придет с опытом.
В целом, зная то, как искать запрос, вы можете спокойно зайти на LMNFT, посмотреть какой запрос отвечает за появление новых коллекций и сделать себе моник на новые минты LMNFT. И так с любым сайтом.
Если бы у меня была эта информация, когда я только начинал кодить, я бы сэкономил себе десятки часов. По факту такой инфы на русском вы не найдете нигде. Уникальная инфа, которая облегчает работу и дает зеленый свет на многие задумки и хотелки. Надеюсь вы оцените это. Спасибо, что прочитали, как всегда подписку на канал, вопросы в чат, ну и маме позвоните, спросите как дела. Пишите крутые штуки и развивайтесь.
Канал типа умного чела: https://t.me/soldidlos Чатик типа девелоперов: https://t.me/soldi_chat
Канал типа умного чела: https://t.me/soldidlos Чатик типа девелоперов: https://t.me/soldi_chat
В этой статье мы разберем откуда я беру большинство инфы для трекеров и пятиминуток. Также эти данные могут быть использованы в любых задачах, которые связаны с NFT статистикой.
Говорить мы сегодня будем про покупки/продажи/листинги NFT.
Для начала с помощью чего мы это будем делать.
import requests
import cloudscrapper
import pydantic
requests - тут все понятно cloudscrapper - тоже запросы, но которые умеют обходить Cloudflare. Т.к. сегодня мы будем учиться получать инфу, которую не должны получать из запроса, эта библиотека нам очень пригодится pydantic - просто бомбовая библиотека для парсинга и взаимодействия с джсон файлами. Для того чтобы лучше понять что это, сначала изучаем классы ВИДЕО, потом смотрим вот этот видос про саму библиотеку
Начнем с того, что вся информация есть на блокчейне, но это для очень умных людей, которые любят копаться в огромных json файлах, которые еще и выглядят вырвиглазно. Если вам не сильно важна скорость получения данных (разница в несколько секунд), то смело забиваем болт на прямое получение инфы из блокчейна до момента, пока не созреем до этого.
Мы же сегодня будем пользоваться API MagicEden/CoralCube/Solscan.
Что такое API? API - это протокол взаимодействия программ. Когда вы заходите на сайт, в большинстве случаев, от сервера нам приходит ответ в виде джсон файла, который открывается на фронтенде как нужно сайту. Именно этот запрос и ответ на него мы и будем использовать. Где-то легально, где-то не очень.
Кстати все запросы, очевидно, можно открывать в браузере как обычную ссылку и смотреть что там есть. Удобно, чтобы каждый раз не менять или не создавать что-то в питоне.
Легальное решение - https://api.magiceden.dev/ В МЕ решили дать возможность разработчикам получать информацию в удобной форме, вообще не взаимодействуя с блокчейном. То бишь мы взаимодействуем с их сайтом. Если какой-то инфы нет на сайте, мы ее не увидим. Например каких-то скам нфт и так далее. То же кстати касается и продаж на сторонних сайтах, хотя вроде как с какого-то момента они там есть, но я когда делал калькулятор профита, мне приходилось брать инфу и с корала и с ме, потому что какой-то инфы там нет.
Плюсы:
Отличные гайды. Все понятно, просто, с примерами кода для многих языков
В примерах есть уже готовый код + информация, которую вы получите, удобно чтобы самому не разбираться какой запрос за что отвечает
Легальность. Это открытая фича от МЕ, то есть проблем с тем, что у вас что-то не работает не будет. (В отличии от случаев, когда вы обходными путями получаете инфу, и вам надо ебаться с обходом проверок и прочего)
Минусы:
Рейт лимиты. Это самый главный минус, который не дает использовать все возможности API на полную. У вас есть ограничение по кол-ву запросов с одного IP. Да, это решается с помощью проксей, но опять-таки это лишняя трата времени + финансов.
Итог:
Хорошее решение, для того чтобы разобраться в том, как все работает. Плюс там есть информация, которой нет в других запросах и я сам использую этот API в таких ситуациях.
Вот тут уже начинается немного хакерства. Подрубаем Cloudscraper и начинаем шаманить.
Для начала мы инициализируем скрапер:
import cloudscraper
scraper = cloudscraper.create_scraper(browser={
'custom': 'customname/1.0'
})
browser ставите рандомный, просто чтобы он был уникальный, зачем это делается объяснять не буду, просто так меньше вероятность удариться в защиту
Используем его как обычный requests. Прям 1 в 1:
r = scraper.get(url="url")
Поддерживается также и .json() метод и .status_code. И конечно же POST, если вам это нужно. Короче говоря тот же реквест, ток с обходом защиты.
Теперь к самим запросам с корала, я собрал те, которые сам часто использую:
https://api.coralcube.io/v1/getUserActivities?pubkey={wallet}
Получаем всю активность с кошелька. Покупки, продажи, минты(!). Но тут могут быть пропуски, если продажа была на другой площадке + очень неудобно показывается продажа и покупка, одним словом execute_sale, где надо смотреть на покупателя и продавца, но думаю разберетесь.Простой пример как это сортировать:
#wallet = "our wallet"
type = value['type']
if value['type'] == 'execute_sale' and value['buyer'] == wallet:
type = 'buy'
elif value['type'] == 'execute_sale' and value['buyer'] != wallet:
type = 'sell'
https://api.coralcube.io/v1/getActivity?offset=0&page_size=50&activity_type=sales
Запрос на получение ласт активности почти по всем площадкам (думаю сами понимаете, где это используется) offset - смещение page_size - количество транзакций в одном запросе
https://api.coralcube.io/v1/getUserProfile?pubkey={wallet}
Получаем все NFT на кошельке в одном(!!!) запросе
Тут не все запросы, но описывать и искать все нет смысла. Если вам нужно что-то другое, дальше я опишу как искать такие запросы и смотреть что в них хранится.
Плюсы:
Многая информация получается одним запросом, что очень удобно
Есть огромное количество разных запросов на любой вкус
В активити есть минты
Отсутствие явных рейтлимитов
Минусы:
Не всегда очевидная информация, как в примере с продажами
Цены на фри минты ноль, хотя нам всем понятно, что есть еще и комиссия
Как и в случае МЕ, покупки на других площадках отображаются некорректно
Итог:
Обожаю этот сайт и его запросы. Есть все, если разобраться, то можно получить что угодно.
Давайте разберемся как искать запросы на примере сайта Solscan
Заходим на любую транзакцию или аккаунт или токен, не суть. Разберем на транзакции, но суть везде одинаковая.
Допустим мне нужно узнать сколько человек потратил на минт NFT.
Транзакция с минтом. Вся информация, которая есть на сайте, в том или ином образе есть в запросе.
Открываем network (f12 - network) и выбираем Fetch/XHR
Обновляем страницу, чтобы заново отправить запрос на сервер и получить ответ

И видим, что мы получили 4 запроса. Нас интересует 4 запрос, а именно transaction?tx…. он больше всего похож на нужный нам, кликаем по нему и переходим в Preview, чтобы посмотреть что он возвращает (иногда на поиск нужного запроса может уйти несколько десятков минут)

И видим нужную нам строку, наш аккаунт и post и pre balance. То есть мы получаем баланс до транзакции и после, что и равняется по сути цене минта.
Значения здесь указываются в lamports (1 lamports = 0.000000001 sol).
Легким подсчетом получаем, что
preBalance = 6113330525 * 0.000000001 = 6.113330525
postBalance = 100632445 * 0.000000001 = 0.100632445
Вычитаем и итого минт нам обошелся в 6.01269808 sol. Мы получили, то что хотели.
Если нам нужно использовать это в программе, то переходим в Headers и смотрим, какой запрос нам это дал

В нашем случае это https://api.solscan.io/transaction?tx=5j8wZhJrXMusXtC32SAhCNNSbNCTkqWDyNGnusERKdHso4Efv1GWQHtrHGH8pK6WdYfiUeT3fGYPyuEcEiuGD1JX&cluster=
Где мы отчетливо видим транзакцию и можем ее заменить на любую другую и получить точно такой же джсон с информацией, чтобы использовать в наших целях.
У солскана также есть паблик API, но он с рейтлимитами, а я его использую очень часто (например, чтобы определить стоимость минта при анализе кошелька, т.к. на коралкубе пишет 0, что очевидное вранье, и нужно смотреть по транзакции)
Вот ссылка, можете посмотреть, может под ваши задачи будет хватать паблик API.
Тут плюсы и минусы не буду расписывать, т.к. под определенные задачи - аналога я не нашел, да и не искал если честно. Единственный минус, в том, что нужно разбираться с инфой и правильно ее читать, но это придет с опытом.
В целом, зная то, как искать запрос, вы можете спокойно зайти на LMNFT, посмотреть какой запрос отвечает за появление новых коллекций и сделать себе моник на новые минты LMNFT. И так с любым сайтом.
Если бы у меня была эта информация, когда я только начинал кодить, я бы сэкономил себе десятки часов. По факту такой инфы на русском вы не найдете нигде. Уникальная инфа, которая облегчает работу и дает зеленый свет на многие задумки и хотелки. Надеюсь вы оцените это. Спасибо, что прочитали, как всегда подписку на канал, вопросы в чат, ну и маме позвоните, спросите как дела. Пишите крутые штуки и развивайтесь.
Канал типа умного чела: https://t.me/soldidlos Чатик типа девелоперов: https://t.me/soldi_chat
https://api.coralcube.io/v1/getItems?offset=0&page_size=50&ranking=price_asc&symbol={symbol}
Получаем все айтемы коллекции (с помощью этого запроса делаю снепшоты)
https://api.coralcube.io/v1/getItems?offset=0&page_size=50&ranking=price_asc&symbol={symbol}
Получаем все айтемы коллекции (с помощью этого запроса делаю снепшоты)
No activity yet