-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathwithdrawnft.py
More file actions
65 lines (56 loc) · 2.63 KB
/
withdrawnft.py
File metadata and controls
65 lines (56 loc) · 2.63 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
from tokenize import Number
import hikari
import requests
from datetime import datetime
from constants import baseUrl
from table2ascii import table2ascii as t2a, PresetStyle
import base64
import json
import time
import os
# withdraws an NFT from users wallet provided a given serial number
async def WithdrawNFT(wallet, event: hikari.DMMessageCreateEvent, sn: Number):
withdrawNFTUrl = baseUrl + 'nfts/' + sn + '/png'
exportnftUrl = baseUrl + 'exportsns'
nftWalletName = 'NFTs.' + wallet
# check if export folder exists, if not create one
fullpath = os.path.join(os.getcwd(), 'nft')
exportpath = os.path.join(fullpath, 'export')
foldername = os.path.join(exportpath, str(wallet))
print(foldername)
if(not os.path.exists(foldername)):
os.mkdir(foldername)
print(withdrawNFTUrl)
print(exportnftUrl)
# export sn to export folder
exportJson = {'name': nftWalletName , 'type': 'png' , 'folder' : foldername, 'tag': '', 'sns': [int(sn)]}
json_string = json.dumps(exportJson)
print(json_string)
exportresponse = requests.post(exportnftUrl, json_string)
exportresponsejson = exportresponse.json()
print(exportresponsejson)
depositstatus = exportresponsejson['payload']['status']
TASK_URL = baseUrl + 'tasks/' + exportresponsejson['payload']['id']
# poll for task status till status is changed to completed
while depositstatus == 'running':
taskresponse = requests.get(TASK_URL)
taskresponsejson = taskresponse.json()
depositstatus = taskresponsejson['payload']['status']
if(depositstatus == 'error'):
await event.message.respond("Move failed: " + taskresponsejson['payload']['data']['message'])
time.sleep(1)
# if completed return the NFT to user and delete the file
if(depositstatus == 'completed'):
if(taskresponsejson['status'] == 'success'):
print(str(taskresponsejson['payload']['data']))
for filename in os.listdir(foldername):
f = os.path.join(foldername, filename)
if os.path.isfile(f):
with open(f, "rb") as fh:
fh = hikari.File(f)
await event.message.respond(fh)
for filename in os.listdir(foldername):
f = os.path.join(foldername, filename)
os.remove(f)
await event.message.respond("NFT withdrawn completed: ")
# await event.message.respond("Export completed: " + str(taskresponsejson['payload']['data']['amount']) + ' coins moved to ' + target)