Python script to save and compare active users on steem and hive

in #steem4 years ago

Hi there,

Today I had a bit of free time and I spent it in update an old script I publish a while ago on github.

The script used the steem library to operate so it was impossible to use the same commands both for steem and hive, so the necessity to update it.

Now it uses the beem library like all of my scripts and bots ahaha. [very good job indeed @holger80]

The script is very simple, and parse the last hours blocks to detect the users that interact with the blockchain, it clean the list from double and save the list in a file, the process is repeated every hour.

This script allow you to see the hour active, the new ones and the total saved.

from beem import Steem
from beem.blockchain import Blockchain
from beem.nodelist import NodeList
import time
import re


def hour_active(chain):
        nodelist = NodeList()
        nodelist.update_nodes()
        if chain=='steem':
                s = Steem(node=nodelist.get_steem_nodes())
        else:
                s = Steem(node=nodelist.get_hive_nodes())
        b=Blockchain(s)
        bl_=[]
        bl_num=int(b.get_current_block_num())
        bl_num_=bl_num-1250
        bl=b.blocks(bl_num_,bl_num)
        for i in bl:
                bl_.append(i['transactions'])

    
        x=('follower','account','voter','from','author')
        account=[]
        new=[]
        for i in x:
                acc=re.findall('"'+i+'":"(.+?)"',str(bl_))
                for l in acc:
                        if l not in account:
                                account.append(l)
        if chain=='steem':
                file=open('active_acc_steem.txt','r')
                old=file.readlines()
                file.close()
                file=open('active_acc_steem.txt','a')
                for i in account:
                        if i+'\n' not in old:
                                file.write(str(i)+'\n')
                                new.append(i)
                file.close()
        else:
                file=open('active_acc_hive.txt','r')
                old=file.readlines()
                file.close()
                file=open('active_acc_hive.txt','a')
                for i in account:
                        if i+'\n' not in old:
                                file.write(str(i)+'\n')
                                new.append(i)
                file.close()
                
        print ('one hour accounts '+chain,len(account))
        print ('one hour brand new '+chain,len(new))
        print ('total ACTIVE accounts '+chain,len(old))
    


counter=1
while True:
        print (counter)
        try:
            hour_active('steem')
            hour_active('hive')
        except Exception as e:
            print (e)
            pass
        counter+=1
        print ('__________________________')
        time.sleep(3580)

Here the repo on github:
https://github.com/digital-mine/get_steem_active_users

Here an example output of 1 hour cicle:

1oraapp.png

Sort:  

Knowing active user is very important to perform swot analysis. Thanks for publishing python script. We are looking for people like you in our community

Your post has been submitted to be curated with @gitplait community account because this is the kind of publications we like to see in our community.

Join our Community on Hive and Chat with us on Discord.

[Gitplait-Team]