2014-10-21 1 views
2

Следующая ссылка содержит данные в JSON относительно адреса BTC ->https://blockchain.info/address/1GA9RVZHuEE8zm4ooMTiqLicfnvymhzRVm?format=json.Биткойн: синтаксический анализ Blockchain API JSON в PyQT

Bitcoin адрес можно посмотреть здесь ->https://blockchain.info/address/1GA9RVZHuEE8zm4ooMTiqLicfnvymhzRVm

Как вы можете видеть в первой транзакции по 2014-10-20 19:14:22, ТХ имел 10 входов от 10 адресам. Я хочу получить эти адреса, используя API, но изо всех сил пытался заставить это работать. Следующий код получает только первый адрес вместо 10, см. Код. Я знаю, что это связано с структурой JSON, но я не могу это понять.

import json 
import urllib2 
import sys 


#Random BTC adress (user input) 
btc_adress = ("1GA9RVZHuEE8zm4ooMTiqLicfnvymhzRVm") 

#API call to blockchain 
url = "https://blockchain.info/address/"+(btc_adress)+"?format=json" 
json_obj = urllib2.urlopen(url) 
data = json.load(json_obj) 

#Put tx's into a list 
txs_list = [] 
for txs in data["txs"]: 
    txs_list.append(txs) 

#Cut the list down to 5 recent transactions 
listcutter = len(txs_list) 
if listcutter >= 5: 
    del txs_list[5:listcutter] 

# Get number of inputs for tx 
recent_tx_1 = txs_list[1] 
total_inputs_tx_1 = len(recent_tx_1["inputs"]) 

Блок ниже должен поставить все 10 ввода адресов в списке «Output_adress». Это делается только для первого;

output_adress = [] 
output_adress.append(recent_tx_1["inputs"][0]["prev_out"]["addr"]) 

print output_adress 

Ваша помощь всегда приветствуется, спасибо заранее.

ответ

1

Потому что вы добавляете к нему только один адрес. Измените его так:

output_adress = [] 
for i in xrange(len(recent_tx_1["inputs"])): 
    output_adress.append(recent_tx_1["inputs"][i]["prev_out"]["addr"]) 
print output_adress 
+0

Вы потрясающий. Спасибо. – Loops

+0

@ Добро пожаловать. Примите это как ответ. :) –