This commit is contained in:
Amazed 2018-10-15 18:38:27 +02:00
parent b780c6657c
commit 03a33e7641
1 changed files with 79 additions and 0 deletions

79
sc_real_reach.py Normal file
View File

@ -0,0 +1,79 @@
import requests
import argparse
import logging
MAX_REQUESTS=15000
CLIENT_ID="5db3773ba0ba11c7398dad1f61011bdb"
def setup_logger(name):
_ch = logging.StreamHandler()
_ch.setLevel("DEBUG")
_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
_ch.setFormatter(_formatter)
logger = logging.getLogger(name)
logger.addHandler(_ch)
logger.setLevel("DEBUG")
logger.debug("Logger initialized")
return logger
def log(msg):
logger.info(msg)
logger = setup_logger(__name__)
def main():
parser = argparse.ArgumentParser()
parser.add_argument('accounts', nargs='+', help='Accounts ID to check')
args = parser.parse_args()
accounts = args.accounts
followers = {}
log("Fetching followers")
# fetch followers
i=0
for account in accounts:
log("Fetching followers for account "+account)
# followers[i] = [1,2,3,4]
followers[i] = get_acct_followers(account)
log("Got "+str(len(followers[i]))+" followers")
i+=1
# calculate duplicates
log("Calculating duplicates between acct 1 and 2")
common_followers = set(followers[0]).intersection(followers[1])
log(str(len(common_followers))+" in common")
for j in range(2,len(accounts)-1):
log("Calculating duplicated between common_followers and "+j)
def get_acct_followers(acct):
followers = []
acct = str(acct)
# info req
r = requests.get("https://api.soundcloud.com/users/"+acct+"?client_id="+CLIENT_ID).json()
followers_count = r["followers_count"]
# 1st req
r = requests.get("https://api.soundcloud.com/users/"+acct+"/followers?page_size=200&client_id="+CLIENT_ID).json()
for follower in r["collection"]:
followers.append(follower["id"])
log("{0}/{1} done ({2}%)...".format(len(followers), followers_count, len(followers)/followers_count*100))
# next reqs
while r["next_href"]:
r = requests.get(r["next_href"]).json()
for follower in r["collection"]:
followers.append(follower["id"])
log("{0}/{1} done ({2}%)...".format(len(followers), followers_count, len(followers)/followers_count*100))
log("Done!")
return followers
if __name__ == '__main__':
main()