List of Steem active users (#0)

Steem Active Users

Github repository

Introduction:

These are regularly updated lists of active Steem users. These were initially made for the My Steemversary bot but anyone is allowed to use this data for his own project/Dapp on the Steem blockchain. Each time a different filter was used on the previous list thus 3 filtered lists were gathered.

I made this list public because the initial list of Steem user contain over 1 million accounts and the majority of them are inactive so it would take quite a long time and energy to go through them all. It's hard to define what's meant by an active user so I made my own criteria (if you have a better suggestion, please let me know). I encountered this problem in both of my projects (My Steemversary and Steem Voice) because I don't have a server. Using multiprocessing, I manged to cut the time to almost 3 hours for each filter.

Scope:

These lists were collected over 3 days starting on December/21. Each day I used a different filter and I left the code running overnight.

Findings:

The first step was to gather the list of all the Steem users so I used steem-python'sget_all_usernames tool to do so which left me with this list.

Then, I applied the first filter which removes the users whom didn't comment in the last two months. Here's the second list.

Next, I used @themarkymark's Global Blacklist API to gather all the blacklisted users from the following communities:

  • BuildAWhale
  • SteemCleaners
  • Utopian-IO
  • Redeemer
  • MinnowBooster
  • Actifit

I removed those from the list. Here's the third list.

Finally, I applied another filter to the list. This filter removes users whom didn't upvote a post/comment in this month. Here's the final list.

Results:

The initial list started with 1184109 users. The first filter left me with 600772 users almost 50.7% that of the initial list.

The second filter left me with 577491 users which is 96% of the second list meaning that 23281 of those users are blacklisted which is almost 2% of the initial list.

The third filter removed 277242 users leaving me with just 300249 active users that's hardly 25.4% of the total users!

I made a graph showing the different numbers:

Conclusion:

Besides the usage of these lists in a project, these results could also give us an idea about the future of Steem. People are abandoning Steem now more than ever. There's is hardly 25% active users. If we want Steem to succeed we have to bring more people to the platform. I started this bot to reward users for staying and I encourage you to do something for Steem. Make a project, create an app or simply tell everyone you know about Steem. Any help would be appreciated.

Tools and Scripts:

The following python code was used to generate the lists:

from steem import Steem
from steem.account import Account
import json, time
import threading, psutil 

s = Steem()

def filter(lastvt):
    intdate = '2018-11-18T00:00:00'
    intdate = time.strptime(intdate, "%Y-%m-%dT%H:%M:%S")
    date = time.strptime(lastvt, "%Y-%m-%dT%H:%M:%S")   
    return(date>intdate)

def work(listusers,v):

    localdata = s.get_accounts(listusers)
    for i in range(len(listusers)):
        if not(filter(localdata[i]["last_post"])):
            v.append(localdata[i]['name'])
    return v

with open('allusers.json', 'r') as f:
    users = json.load(f)
    print('Done Importing')

jobs =[]
if __name__ == "__main__":
    count = len(users)
    print (count)
    fifs = int(count/10000)
    other = count%10000
    c = 0
    c2 = 0
    c3 = 0

    for j in range(fifs):
        start_time = time.time()
        a1=[]
        a2=[]
        a3=[]
        a4=[]
        a=[]
        jobs.append(threading.Thread(target=work, args=(users[c:c+2500],a1,)))
        c=c+2500
        jobs.append(threading.Thread(target=work, args=(users[c:c+2500],a2,)))
        c=c+2500
        jobs.append(threading.Thread(target=work, args=(users[c:c+2500],a3,)))
        c=c+2500
        jobs.append(threading.Thread(target=work, args=(users[c:c+2500],a4,)))
        c=c+2500
        for i in range(4):
            jobs[c2].start()
            c2 = c2+1
        for i in range(4):
            jobs[c3].join()
            c3 = c3+1
        a = a1+a2+a3+a4
        for x in a:
            users.remove(x)
        print(count-c,' Users are left')
        print("--- %s seconds ---" % (time.time() - start_time))

    for j in range(other/227):
        start_time = time.time()
        a1=[]
        jobs.append(threading.Thread(target=work, args=(users[c:c+227],a1,)))
        c=c+227
        jobs[c2].start()
        c2 = c2+1
        jobs[c3].join()
        c3 = c3+1
        for x in a1:
            users.remove(x)
        print(count-c,' Users are left')
        print("--- %s seconds ---" % (time.time() - start_time))

    with open('finaluserss.json', 'w+') as d:
        json.dump(users,d)

Microsoft Office Excel was also used to generate the chart.

Proof of Authorship:

I think that the code above is enough proof :)

H2
H3
H4
Upload from PC
Video gallery
3 columns
2 columns
1 column
10 Comments