Парсер nft twitter objkt
Формат twitter: | balance: | adress:
Работает по апи
Формат twitter: | balance: | adress:
Работает по апи
У вас должно быть более 5 реакций для просмотра скрытого контента.
У вас должно быть более 5 реакций для просмотра скрытого контента.
Python:
import time
import json
import requests
cookies = {
'cf_chl_2': 'aca37ddb4a02a3a',
'cf_clearance': 's4uG5UprmX5O1WjJYqH8KCyC2yE8b0nzrH2Px.T5dVg-1691351706-0-1-6fe7c514.a3f8cd22.38e69af4-160.0.0',
}
headers = {
'authority': 'private-api.objkt.com',
'accept': 'application/json, text/plain, */*',
'accept-language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
'apollographql-client-name': 'indexer',
'content-type': 'application/json',
'origin': 'https://objkt.com',
'referer': 'https://objkt.com/',
'sec-ch-ua': '"Not/A)Brand";v="99", "Google Chrome";v="115", "Chromium";v="115"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-site',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',
}
users_data = {
'operationName': 'getEventsLive',
'variables': {
'order_by': [
{
'timestamp': 'desc',
},
{
'id': 'desc',
},
],
'limit': None,
'offset': 0,
'where': {
'timestamp': {
'_is_null': False,
},
'id': {
'_gt': 54301197,
},
'fa_contract': {
'_nin': [
'KT1V7QCmuKpGsThwCNRALmsVfDAYopV98EEL',
'KT1BRADdqGk2eLmMqvyWzqVmPQ1RCBCbW5dY',
],
},
'_or': [
{
'event_type': {
'_in': [
'create_collection',
'mint',
'open_edition_update',
'open_edition_create',
'open_edition_buy',
],
},
},
{
'marketplace_event_type': {
'_in': [
'dutch_auction_cancel',
'english_auction_cancel',
'dutch_auction_create',
'english_auction_create',
'english_auction_settle',
'english_auction_bid',
'list_cancel',
'list_create',
'offer_floor_cancel',
'offer_cancel',
'offer_floor_create',
'offer_create',
'offer_floor_accept',
'offer_accept',
'dutch_auction_buy',
'list_buy',
],
},
},
],
},
},
'query': 'query getEventsLive($where: event_bool_exp!, $order_by: [event_order_by!] = {}, $limit: Int = 100, $offset: Int = 0) {\n event(where: $where, order_by: $order_by, limit: $limit, offset: $offset) {\n ...EventLive\n __typename\n }\n}\n\nfragment EventLive on event {\n id\n amount\n price\n price_xtz\n event_type\n marketplace_event_type\n timestamp\n token_pk\n fa_contract\n ophash\n reverted\n level\n currency {\n fa_contract\n __typename\n }\n fa {\n ...FaMinimal\n __typename\n }\n token {\n ...TokenLive\n __typename\n }\n creator {\n ...UserLight\n __typename\n }\n recipient {\n ...UserLight\n __typename\n }\n __typename\n}\n\nfragment FaMinimal on fa {\n contract\n name\n path\n collection_type\n collection_id\n __typename\n}\n\nfragment TokenLive on token {\n pk\n token_id\n artifact_uri\n display_uri\n thumbnail_uri\n fa_contract\n mime\n decimals\n attributes {\n attribute {\n name\n value\n __typename\n }\n __typename\n }\n __typename\n}\n\nfragment UserLight on holder {\n address\n alias\n logo\n tzdomain\n __typename\n}\n',
}
twiter_data = {
'operationName': 'getUser',
'variables': {
'address': 'tz2J9hCrWrhxbKcA71gbqyb9Z64aoUrFpc1h',
},
'query': 'query getUser($address: String!) {\n holder_by_pk(address: $address) {\n ...UserDefault\n __typename\n }\n}\n\nfragment UserDefault on holder {\n address\n alias\n website\n twitter\n description\n tzdomain\n flag\n logo\n dns\n __typename\n}\n',
}
mas_users = []
min_balance = float(input("Введите минимальный баланс в $: "))
while True:
users = requests.post('https://private-api.objkt.com/v1/graphql', headers=headers,
data=json.dumps(users_data)).json()
r = requests.get('https://back.tzkt.io/v1/head').json()
for i in users['data']['event']:
if i['creator']['alias'] is not None and i['price'] is not None:
twiter_data['variables']['address'] = i['creator']['address']
if i['creator']['address'] not in mas_users:
link_twiter = requests.post('https://private-api.objkt.com/v1/graphql', headers=headers,
json=twiter_data).json()
balance = requests.get(f'https://back.tzkt.io/v1/accounts/{i["creator"]["address"]}',
headers=headers).json()
balance_amount = balance.get("balance", 0) * r['quoteUsd'] / 1000000
twitter_link = link_twiter['data']['holder_by_pk']['twitter']
if twitter_link:
if balance_amount >= min_balance:
info = f"Twitter: {twitter_link} | Balance: {round(balance_amount, 2)}$ | Addres: {i['creator']['address']} \n"
open('aks.txt', 'a').write(info)
mas_users.append(i['creator']['address'])
print(info)
time.sleep(10)