-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathapy.py
More file actions
101 lines (81 loc) · 3.21 KB
/
apy.py
File metadata and controls
101 lines (81 loc) · 3.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import requests
# from web3 import Web3, HTTPProvider
import json
# w3url = "https://mainnet.infura.io/v3/998f64f3627548bbaf2630599c1eefca"
# w3 = Web3(HTTPProvider(w3url))
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
}
def getdforce():
url1 = "https://api.dforce.network/api/getRoi/"
z1 = requests.get(url1, headers=headers)
url2 = "https://markets.dforce.network/api/v2/getApy/?net=main"
z2 = requests.get(url2, headers=headers)
apy = {}
apy["usdt"] = z1.json()["dUSDT"] + float(z2.json()["dUSDT"]["now_apy"]) / 100
apy["dai"] = z1.json()["dDAI"] + float(z2.json()["dDAI"]["now_apy"]) / 100
return apy
def getcurve():
url = "https://api.coinmarketcap.com/data-api/v1/farming/yield/latest"
headers = {
"referer": "https://coinmarketcap.com/yield-farming/",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36",
}
z1 = requests.get(url, headers=headers)
data = z1.json()["data"]["farmingProjects"]
stakeApy = 0.041
for i in data:
if i["name"] == "Curve":
for p in i["poolList"]:
if p["name"] == "Y":
stakeApy = p["yearlyROI"] / 100
return stakeApy
def getfortube():
# url = "https://farm.for.tube/api/v2/bank_tokens"
# headers = {
# "referer": "https://for.tube/bank/home",
# "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36",
# }
# z1 = requests.get(url, headers=headers)
url1 = "https://api.for.tube/api/v1/bank/markets?mode=extended"
z2 = requests.get(
url1,
headers={
"referer": "https://for.tube/bank/home",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36",
"Authorization": "SFMyNTY.g2gDbQAAACoweDAwMDAwMDAwNGZhOWU2MzVkYmU5MWM4M2FlZTM1N2QwMTQ5NDkzNmRuBgCfP3F7dAFiAAFRgA.8_HNNWK2A0pVVvH71_Ckv9q9NxRdIVxafnG5aLzvd-c",
},
)
# data = z1.json()
data1 = z2.json()["data"]
ret = {}
getdata = ["usdc", "eth", "busd", "wbtc", "hbtc", "usdt"]
for v in data1:
_apy = float(v["deposit_interest_rate"])
symbol = v["token_symbol"].lower()
if symbol in getdata:
ret[symbol] = _apy
# for v in data1["data"]:
# deposit_interest_rate = float(v["deposit_interest_rate"])
# symbol = v["token_symbol"].lower()
# if symbol in getdata:
# ret[symbol] += deposit_interest_rate
for k, v in ret.items():
ret[k] = f"{round(v*100, 2)}%"
return ret
def getapy():
apy = getdforce()
ycrv = getcurve()
apy["ycrv"] = ycrv
apy["tusd"] = ycrv * 0.98
for k, v in apy.items():
apy[k] = f"{round(v*100, 2)}%"
fortube_apy = getfortube()
apy.update(fortube_apy)
apy["weth"] = apy["eth"]
apy["husd"] = "11.33%"
print(apy)
with open("apy.json", "w") as f:
f.write(json.dumps(apy))
if __name__ == "__main__":
getapy()