Bitcoin Forum
December 12, 2024, 11:11:16 PM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Python Soru  (Read 189 times)
Jupiter_01 (OP)
Member
**
Offline Offline

Activity: 126
Merit: 38


View Profile
December 12, 2018, 08:16:26 AM
 #1

elimdeki txt dosyasında 100.000 satırlık ethereum adres listesi var... bunu python ile saatır satır etherscan.io üzerinden nasıl bakiye kontrolu yaptırıp başka bir txt dosyasında çıktısını alabilirim...
yardım için teşekkür şimdiden...
Jupiter_01 (OP)
Member
**
Offline Offline

Activity: 126
Merit: 38


View Profile
December 13, 2018, 05:20:49 AM
Last edit: December 13, 2018, 06:31:14 AM by Jupiter_01
 #2

https://github.com/Chiheb-Nexus/Ethereum-Balance

linkteki kodla çözüldü ama değişken bir şekilde 1000 ile 10000 tarama arasında bağlantı sorunu diyor ve kontrolu durduruyor bunu düzeltebilirmiyiz acaba ?
Piratte
Full Member
***
Offline Offline

Activity: 840
Merit: 103



View Profile
December 17, 2018, 07:11:52 AM
 #3

linuxta split diye bir komut var onu kullan dosyayi satir olarak parcalara bol sonra birlestirirsin.
MesutCan
Hero Member
*****
Offline Offline

Activity: 728
Merit: 503


www.mesutcandemir.com.tr


View Profile
December 19, 2018, 12:50:38 PM
 #4

elimdeki txt dosyasında 100.000 satırlık ethereum adres listesi var... bunu python ile saatır satır etherscan.io üzerinden nasıl bakiye kontrolu yaptırıp başka bir txt dosyasında çıktısını alabilirim...
yardım için teşekkür şimdiden...

Bağlantı sorunu dediğiniz kullandığız web sitesiyle etherscan.io arasında ki api bağlantısının kopmasıyla alakalı
Başka sunucuda deneyerek sorunu çözebilirsiniz
Jupiter_01 (OP)
Member
**
Offline Offline

Activity: 126
Merit: 38


View Profile
December 19, 2018, 02:52:16 PM
 #5

Aldığım hata aşağıda

Error occured during fetching data from etherscan <urlopen error [WinError 10060
] Bağlanılan uygun olarak belli bir süre içinde yanıt vermediğinden veya kurulan

bağlantı bağlanılan ana bilgisayar yanıt vermediğinden bir bağlantı kurulamadı>
Error occured during file handling 'NoneType' object is not subscriptable


kullandığım kod şu
https://github.com/Chiheb-Nexus/Ethereum-Balance

pythonda   erteleme (delay) diye bir kod ekleyebilirmiyiz...yani sunucu 10 saniye yanıt vermediğinde hata vermeyip 10 saniyede bir tekrar istek göndermek gibi birşey yapılabilirmi?
MesutCan
Hero Member
*****
Offline Offline

Activity: 728
Merit: 503


www.mesutcandemir.com.tr


View Profile
December 19, 2018, 03:10:56 PM
 #6

Aldığım hata aşağıda

Error occured during fetching data from etherscan <urlopen error [WinError 10060
] Bağlanılan uygun olarak belli bir süre içinde yanıt vermediğinden veya kurulan

bağlantı bağlanılan ana bilgisayar yanıt vermediğinden bir bağlantı kurulamadı>
Error occured during file handling 'NoneType' object is not subscriptable


kullandığım kod şu
https://github.com/Chiheb-Nexus/Ethereum-Balance

pythonda   erteleme (delay) diye bir kod ekleyebilirmiyiz...yani sunucu 10 saniye yanıt vermediğinde hata vermeyip 10 saniyede bir tekrar istek göndermek gibi birşey yapılabilirmi?

The Etherscan Ethereum Developer APIs are provided as a community service and without warranty, so please just use what you need and no more. They support both GET/POST requests and a rate limit of 5 requests/sec.

Yazmış etherscan saniyede 5 sorgudan fazla geldiği için sizi limitliyor, Kodlarda erteleme süresi kullanmanız ayrıca anlık isteklerin 5 ten az olmasını sağlamalısınız.
Jupiter_01 (OP)
Member
**
Offline Offline

Activity: 126
Merit: 38


View Profile
December 20, 2018, 07:36:31 AM
 #7

teşekkürler cevap için

delay komutunu nasıl ekliyeceğim?

#!/usr/bin/python3

from urllib.request import Request, urlopen
from json import loads
import sys, argparse

class EthBalance:
    def __init__(self, args):
        self.API_TOKEN = "_Your_API_Token"
        self.explorer = "https://api.etherscan.io/api?module=account&action=balancemulti&address="

        parser = argparse.ArgumentParser(description = """
        This script fetch Ethereum addresses balance using etherscan.io API
        """)
        parser.add_argument('-F', '--file', help = "Path of the stored Ethereum addresses", required = True)
        parser.add_argument('-O', '--out', help = "Output file name", required = True)

        arguments = parser.parse_args()
        self.in_file, self.out_file = arguments.file, arguments.out

        self.check()

    def load(self, address = ""):
        try:
            url = self.explorer + address + "&tag=latest&apikey=" + self.API_TOKEN
            request = Request(url, headers= {'User-Agent' :\
             "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36"})
            response = urlopen(request)
            data = loads(response.read().decode("utf8"))

            return data

        except Exception as e:
            print("Error occured during fetching data from etherscan", e)

    def parseInput(self, data_list = []):
        parsed_list, add, final_list = [], "", []
        parsed_list = [data_list[i:i + 20] for i in range(0, len(data_list), 20)]

        for i in parsed_list:
            for j in i:
                if j != "\n":
                    add += j.replace('\n', '') +','
            final_list.append(add[:len(add)-1])
            add = ""

        return final_list

    def check(self):
        try:
            with open(self.in_file, 'r') as input_file:
                d = input_file.readlines()
                parsed_list = self.parseInput(d)
                for multipleAdd in parsed_list:
                    data = self.load(address = multipleAdd)
                    for i in data["result"]:
                        # Trying to print the most accurate float values with 16 numbers after the point
                        print("%s  :  %.16f ETH" %(i["account"], float(i["balance"])/1000000000000000000))
                        with open(self.out_file, 'a') as out_file:
                            out_file.write("%s  :  %.16f ETH" %(i["account"], float(i["balance"])/1000000000000000000))

        except Exception as e:
            print("Error occured during file handling", e)

# test
if __name__ == '__main__':
    app = EthBalance(sys.argv[1:])
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!