D4708
3 years ago
1 changed files with 55 additions and 0 deletions
@ -1 +1,56 @@
@@ -1 +1,56 @@
|
||||
#!/usr/bin/python |
||||
# |
||||
# Auto-following/reading bot written in Python 2 that has a mission to safe distributed data shared in the twister network |
||||
# (https://github.com/twisterarmy/twister-data-guard) |
||||
# This script based on the official usernameCrawler |
||||
# (https://github.com/miguelfreitas/twister-core/blob/master/contrib/usernameCrawler.py) |
||||
# |
||||
# Downloaded data is cached in a python pickle file, so it may be executed |
||||
# again and it won't need to get everything all over again (you may run it |
||||
# from cron scripts, for example) |
||||
|
||||
import sys, cPickle |
||||
|
||||
dbFileName = "twisterDataGuard.pickle" |
||||
nodeUserName = "twisterdataguard" |
||||
|
||||
try: |
||||
from bitcoinrpc.authproxy import AuthServiceProxy |
||||
except ImportError as exc: |
||||
sys.stderr.write("Error: install python-bitcoinrpc (https://github.com/jgarzik/python-bitcoinrpc)\n") |
||||
exit(-1) |
||||
|
||||
serverUrl = "http://user:pwd@127.0.0.1:28332" |
||||
if len(sys.argv) > 1: |
||||
serverUrl = sys.argv[1] |
||||
|
||||
twister = AuthServiceProxy(serverUrl) |
||||
|
||||
class MyDb: |
||||
lastBlockHash = 0 |
||||
|
||||
try: |
||||
db = cPickle.load(open(dbFileName)) |
||||
nextHash = db.lastBlockHash |
||||
except: |
||||
db = MyDb() |
||||
nextHash = twister.getblockhash(0) |
||||
|
||||
print "blockchain reading..." |
||||
|
||||
while True: |
||||
block = twister.getblock(nextHash) |
||||
db.lastBlockHash = block["hash"] |
||||
print "block", str(block["height"]) + "\r", |
||||
usernames = block["usernames"] |
||||
for u in usernames: |
||||
print "follow", u |
||||
twister.follow(nodeUserName, [u]) |
||||
if block.has_key("nextblockhash"): |
||||
nextHash = block["nextblockhash"] |
||||
else: |
||||
break |
||||
|
||||
cPickle.dump(db,open(dbFileName, "w")) |
||||
|
||||
print "task completed." |
||||
|
Loading…
Reference in new issue