主页 > imtoken钱包ios下载链接 > 使用Python调用任意数字资产钱包余额函数

使用Python调用任意数字资产钱包余额函数

imtoken钱包ios下载链接 2023-01-18 12:15:30

当我们的资产在交易所时,我们可以使用 Python 通过链接交易所的 API 来监控余额。

资产入钱包时如何监控余额?

任何数字资产都可以使用区块浏览器查询余额,那么我们只需要从这里开始,使用Python调用区块浏览器查询余额,即可实现对所有资产的余额监控。

数字资产区块链浏览器有很多,比如比特币区块浏览器btc.com、以太坊区块浏览器etherscan.io、ATOM区块浏览器mintscan.io、PCX区块浏览器scan.chainx.org等等。

区块浏览器根据是否提供API可以分为两类。如果他们做得好,他们将标记API供大家查询。如果是粗略的,它不会明确告诉你API,但可以通过爬虫找到。

让我们一一分析:

一、阻止提供 API 查询的浏览器

1.比特币区块浏览器 btc.com

比特币价值比特币最新_比特币余额查询_比特币地址余额排名

首页下方提供API,并配有说明文档

这种获取方式比较简单,根据文档找到可以查询余额的地址即可获取。

例如,如果在 btc.com 中找到 URL,则最后一个字符串是比特币地址。相关数据可以通过Python中的requests.get()返回,如下:

注意每个币种的余额单位不同,你可以根据你的钱包余额进行调整。比如上面的余额其实需要除以10e7(10的7次方),得到0.14141195 BTC的余额。

接下来,我们可以监控我们的钱包余额。假设你从别处提到你的钱包里有 1 个比特币,然后监控余额何时大于 1 个比特币,并让程序实现钉钉发送消息提醒即可。

完整代码如下:

比特币地址余额排名_比特币价值比特币最新_比特币余额查询

import pandas as pd
import random
import ccxt
import threading, time, datetime
import json
import urllib
import datetime
import requests
# 异常监控用
def send_dingding_msg1(content, robot_id='你的钉钉机器人ID'):
  try:
    msg = {
      "msgtype": "text",
      "text": {"content": content + '\n' + datetime.datetime.now().strftime("%m-%d %H:%M:%S")}
    }
    headers = {"Content-Type": "application/json ;charset=utf-8 "}
    url = 'https://oapi.dingtalk.com/robot/send?access_token=' + robot_id
    body = json.dumps(msg)
    status = requests.post(url, data=body, headers=headers)
    if status.status_code == 200:
      return status.json()
    return status
  except Exception as err:
print ( '钉钉发送失败' , err)
while True:
  try:
    address = '你的比特币钱包地址' # 比特币钱包地址
    url = 'https://chain.api.btc.com/v3/address/' + address # 获取余额地址
    # 可以用f'https://chain.api.btc.com/v3/address/{address}'替代
    response = requests.get(url)
    if response.text: # 发现有时候会出现错误导致返回数据为空,加此目的当数据为空时继续获取余额
      # print(response.json())
      BTC = float(response.json()['data']['balance']) / 10e7 # 科学计数法,处理返回数据
      print('BTC', BTC)
    else:
      continue
    if BTC > 1: # 当余额大于1时实现钉钉提醒
      print('BTC', BTC)
      content = 'BTC钱包充值到账' #
      send_msg1 = send_dingding_msg1(content)
      print(send_msg1)
      break
    time.sleep(5)
  except Exception as order_err:
    print("查询出错,继续尝试", order_err)
    time.sleep(3)

2.以太坊区块浏览器etherscan.io余额查询

这里还有一个说明文档,和上面的稍有不同比特币余额查询,需要获取APIKEY。类似于API的交易所申请比特币余额查询,需要注册。

我们在文档中可以看到获取以太坊余额的地址是:,这里需要使用你要查询的以太坊地址的地址和你申请的apikey,我们可以将这两个设置为变量,易于更改。

下一步是处理数据。另外,要注意不同的单位。余额需要除以10e17才能转换成正常。

我们还可以监控余额,比如充值到这个钱包的时候ETH余额大于10,实现提醒。

还有大量的数字货币是 ETH 上的 ERC20 代币。如何平衡?

在文档中,我们可以找到token一栏,里面有获取地址的描述。仔细对比后,你会发现智能合约的合约地址比 ETH 余额多。这个查询方法也很简单。搜索代币时,比如搜索OMG,会出现合约地址。

比特币地址余额排名_比特币余额查询_比特币价值比特币最新

这样,你可以通过将三个输入组合成一个新的获取地址来获得代币的余额。你要查询的以太坊地址,你申请的apikey,以及token的合约地址contractaddress。我们可以将这三个设置为变量以便于更改。

完整代码如下:

while True:
  try:
    apikey = '你在https://etherscan.io/申请的apikey'
    address = '你的以太坊地址'
    # 查询以太坊地址
    url1 = 'https://api.etherscan.io/api?module=account&action=balance&address='+address+'&tag=latest&apikey='+apikey
    # 查询ERC20地址
    contractaddress = '0xd26114cd6EE289AccF82350c8d8487fedB8A0C07' ##OMG合约地址
    url2 = 'https://api.etherscan.io/api?module=account&action=tokenbalance&contractaddress='+ contractaddress+ '&address='+ address+'&tag=latest&apikey='+ apikey
    response1 = requests.get(url1)
    response2 = requests.get(url2)
    # print(response.json())
    asset1 = 'ETH'
    asset2 = 'OMG'
    ban1 = float(response1.json()['result']) / 10e17 # 科学计数法,处理返回数据
    ban2 = float(response2.json()['result']) / 10e17 # 科学计数法,处理返回数据
    print(asset1, ban1)
    print(asset2, ban2)
    if ban1 > 10:
      print(asset1, ban1)
      content = 'ETH钱包充值到账'
      send_msg1 = send_dingding_msg1(content)
      print(send_msg1)
      break
    time.sleep(5)
  except Exception as order_err:
    print("查询出错,继续尝试", order_err)
    time.sleep(3)

二、不提供API的区块浏览器

这个方法稍微复杂一些,需要爬虫来获取地址。

我们以最近被点燃的chainx代币PCX为例,因为该代币采用锁仓BTC挖矿获得其代币PCX,提取利息大约需要11%的利息,是PCX的两倍投票。简单来说就是让你买PCX。我会在它的内网(链上交易)上低价下单购买。地址余额,一旦交易完成,立即投票获取利息。

没有经历过以上的朋友可能会觉得很复杂,没关系,我们的目的是通过程序获取自己的钱包余额。

比特币价值比特币最新_比特币地址余额排名_比特币余额查询

PCX区块浏览器的地址是,输入钱包地址后,可以获取账户详情。如何与程序取得平衡?

在谷歌浏览器中按F12进入开发者模式,点击网络、XHR,然后刷新。

发现和balance在同一个扩展中有balance信息,那么只要找到请求头信息就可以得到

点击Headers找到需要的信息,如下

这样我们就可以获得相关信息,然后对数据进行处理。

我当时设置的是买35个,所以当数量大于30个的时候,钉钉会通知我的。

比特币价值比特币最新_比特币余额查询_比特币地址余额排名

完整代码如下

while True:
  try:
    url = "https://api.chainx.org.cn/account/你的PCX钱包地址/balance"
    headers = {
      "Content-type": "application/json; charset=utf-8",
      'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
    }
    response = requests.get(url, headers=headers)
    balance = response.json()
    # print(balance)
    asset = 'PCX'
    PCX = balance[1]['Free']/100000000 # 此处注意PCX代币的位置,如果在第0个就改成[0]
    print('PCX', PCX)
    if PCX > 30:
      print('PCX', PCX)
      content = 'PCX购买已到账,余额为' + str(PCX) # 发一个变量,用str转换下
      send_msg1 = send_dingding_msg1(content)
      print(send_msg1)
      break
    time.sleep(3)
  except Exception as order_err:
    print("查询出错,继续尝试", order_err)
    time.sleep(3)

其他不提供API的区块浏览器也同样获取。

通过以上方法,我们可以通过程序获取任意区块浏览器地址的余额并进行监控。

总结

以上是小编给大家介绍的使用Python调用任意数字资产钱包余额的功能。如有任何问题,请给我留言,小编会及时回复您。还要感谢大家对【听图格-专注Python设计】网站的支持!

如果您觉得本文对您有帮助,请转载,请注明出处,谢谢!