fixed social

This commit is contained in:
anon 2022-09-23 17:38:20 -03:00
parent 857ca3be6f
commit a9e8459641
4 changed files with 85 additions and 38 deletions

View file

@ -140,39 +140,32 @@ async def get_coin_data(session, symbol, url):
# Asynchronous get social metrics from reddit # Asynchronous get social metrics from reddit
#################################################################################### ####################################################################################
async def get_social_data(session, symbol): async def get_social_data(session, symbol):
date_now = datetime.datetime.strftime(date.today(), '%Y-%m-%d') yesterday = datetime.datetime.strftime(date.today()-timedelta(1), '%Y-%m-%d')
socials = Social.objects.filter(name=symbol).filter(date=date_now) try:
social = Social.objects.filter(name=symbol).get(date=yesterday)
if not(socials): except:
print('getting new data')
url = 'https://www.reddit.com/r/'+ symbol +'/about.json' url = 'https://www.reddit.com/r/'+ symbol +'/about.json'
async with session.get(url, headers={'User-agent': 'Checking new social data'}) as res: async with session.get(url, headers={'User-agent': 'Checking new social data'}) as res:
data = await res.read() data = await res.read()
data = json.loads(data) data = json.loads(data)
data = data['data'] data = data['data']
subscribers = data['subscribers']
social = Social() social = Social()
social.name = symbol social.name = symbol
social.date = date_now social.date = yesterday
social.subscriberCount = subscribers social.subscriberCount = data['subscribers']
date_aux = date.today() timestamp1 = int(datetime.datetime.timestamp(datetime.datetime.strptime(yesterday, '%Y-%m-%d')))
date_aux = datetime.datetime.strftime(date_aux, '%Y-%m-%d') timestamp2 = int(timestamp1 - 7200)
date_aux = datetime.datetime.strptime(date_aux, '%Y-%m-%d') limit = 1000
timestamp1 = int(datetime.datetime.timestamp(date_aux))
timestamp2 = int(timestamp1 - 86400)
limit = 2000
filters = [] filters = []
data = data_prep_posts(symbol, timestamp2, timestamp1, filters, limit) data = data_prep_posts(symbol, timestamp2, timestamp1, filters, limit)
social.postsPerHour = len(data)/24 social.postsPerHour = len(data)/2
timestamp2 = int(timestamp1 - 7200)
limit = 2000
data = data_prep_comments(symbol, timestamp2, timestamp1, filters, limit) data = data_prep_comments(symbol, timestamp2, timestamp1, filters, limit)
social.commentsPerHour = len(data)/2 social.commentsPerHour = len(data)/2
social.save() social.save()
print(str(social.name) + ' - ' + str(social.date) + ' - ' + str(social.subscriberCount) + ' - ' + str(social.commentsPerHour) + ' - ' + str(social.postsPerHour) )
return True return True
#################################################################################### ####################################################################################
@ -323,9 +316,9 @@ async def update_others_data(date):
async with aiohttp.ClientSession(**client_args) as session: async with aiohttp.ClientSession(**client_args) as session:
# reddit data # reddit data
actions.append(asyncio.ensure_future(get_social_data(session, 'Monero'))) #actions.append(asyncio.ensure_future(get_social_data(session, 'Monero')))
actions.append(asyncio.ensure_future(get_social_data(session, 'Bitcoin'))) #actions.append(asyncio.ensure_future(get_social_data(session, 'Bitcoin')))
actions.append(asyncio.ensure_future(get_social_data(session, 'Cryptocurrency'))) #actions.append(asyncio.ensure_future(get_social_data(session, 'Cryptocurrency')))
# coinmetrics data # coinmetrics data
actions.append(asyncio.ensure_future(get_coin_data(session, 'btc', url_btc))) actions.append(asyncio.ensure_future(get_coin_data(session, 'btc', url_btc)))
actions.append(asyncio.ensure_future(get_coin_data(session, 'dash', url_dash))) actions.append(asyncio.ensure_future(get_coin_data(session, 'dash', url_dash)))
@ -338,7 +331,36 @@ async def update_others_data(date):
await asyncio.gather(*actions, return_exceptions=True) await asyncio.gather(*actions, return_exceptions=True)
except asyncio.exceptions.TimeoutError: except asyncio.exceptions.TimeoutError:
print('Timeout!') print('Timeout!')
update_database(date, date)
return True
####################################################################################
# Asynchronous get social and coins data
####################################################################################
async def update_social_data(symbol):
actions = []
my_timeout = aiohttp.ClientTimeout(
total=10,
sock_connect=10,
sock_read=10
)
client_args = dict(
trust_env=True,
timeout=my_timeout
)
async with aiohttp.ClientSession(**client_args) as session:
# reddit data
actions.append(asyncio.ensure_future(get_social_data(session, 'Monero')))
actions.append(asyncio.ensure_future(get_social_data(session, 'Bitcoin')))
actions.append(asyncio.ensure_future(get_social_data(session, 'Cryptocurrency')))
try:
await asyncio.gather(*actions, return_exceptions=True)
except asyncio.exceptions.TimeoutError:
print('Timeout!')
return True return True
#################################################################################### ####################################################################################

View file

@ -215,11 +215,11 @@ def update_rank(data=None):
# Load Reddit api to check if there are new followers # Load Reddit api to check if there are new followers
def check_new_social(symbol): def check_new_social(symbol):
date_now = datetime.datetime.strftime(date.today(), '%Y-%m-%d') yesterday = datetime.datetime.strftime(date.today()-timedelta(1), '%Y-%m-%d')
socials = Social.objects.filter(name=symbol).filter(date=date_now) socials = Social.objects.filter(name=symbol).filter(date=yesterday)
if not(socials): if not(socials):
print('getting new data') print('getting new data - ' + str(symbol))
request = 'https://www.reddit.com/r/'+ symbol +'/about.json' request = 'https://www.reddit.com/r/'+ symbol +'/about.json'
response = requests.get(request, headers = {'User-agent': 'Checking new social data'}) response = requests.get(request, headers = {'User-agent': 'Checking new social data'})
data = json.loads(response.content) data = json.loads(response.content)
@ -227,7 +227,7 @@ def check_new_social(symbol):
subscribers = data['subscribers'] subscribers = data['subscribers']
social = Social() social = Social()
social.name = symbol social.name = symbol
social.date = date_now social.date = yesterday
social.subscriberCount = subscribers social.subscriberCount = subscribers
date_aux = date.today() date_aux = date.today()
@ -292,18 +292,19 @@ def update_database(date_from=None, date_to=None):
count_aux = 0 count_aux = 0
found = False found = False
print(date_aux)
while count_aux < 100 and not(found): while count_aux < 100 and not(found):
try: try:
date_aux2 = date_aux - timedelta(count_aux) date_aux3 = date_aux - timedelta(count_aux)
social_btc = Social.objects.filter(name='Bitcoin').get(date=date_aux2) social_btc = Social.objects.filter(name='Bitcoin').get(date=date_aux3)
social_xmr = Social.objects.filter(name='Monero').get(date=date_aux2) social_xmr = Social.objects.filter(name='Monero').get(date=date_aux3)
social_crypto = Social.objects.filter(name='CryptoCurrency').get(date=date_aux2) social_crypto = Social.objects.filter(name='CryptoCurrency').get(date=date_aux3)
found = True found = True
except: except:
count_aux += 1
found = False found = False
count_aux += 1
print(date_aux3)
except: except:
return count return count

View file

@ -925,8 +925,9 @@ async def index(request):
date_aux = datetime.datetime.strftime(date.today() - timedelta(2), '%Y-%m-%d') date_aux = datetime.datetime.strftime(date.today() - timedelta(2), '%Y-%m-%d')
update_xmr = False update_xmr = False
update_btc = False update_btc = False
update_socials = False
if now > 1: if now > 1 and now < 5:
try: try:
coin_xmr = Coin.objects.filter(name='xmr').get(date=yesterday) coin_xmr = Coin.objects.filter(name='xmr').get(date=yesterday)
if coin_xmr: if coin_xmr:
@ -945,7 +946,23 @@ async def index(request):
print('no xmr found yesterday - 2') print('no xmr found yesterday - 2')
update_xmr = True update_xmr = True
if now > 5: if now > 3 and now < 5:
try:
social_xmr = list(Social.objects.filter(name='Monero').filter(date=yesterday))[0]
social_btc = list(Social.objects.filter(name='Bitcoin').filter(date=yesterday))[0]
social_crypto = list(Social.objects.filter(name='Cryptocurrency').filter(date=yesterday))[0]
if social_btc and social_xmr and social_crypto:
print('socials found yesterday')
update_socials = False
else:
print('no socials found yesterday - 1')
update_socials = True
except:
print('no socials found yesterday - 2')
update_socials = True
if now > 5 and now < 12:
try: try:
coin_btc = list(Coin.objects.filter(name='btc').filter(date=yesterday))[0] coin_btc = list(Coin.objects.filter(name='btc').filter(date=yesterday))[0]
coin_zec = list(Coin.objects.filter(name='zec').filter(date=yesterday))[0] coin_zec = list(Coin.objects.filter(name='zec').filter(date=yesterday))[0]
@ -969,6 +986,7 @@ async def index(request):
except: except:
print('no coins found yesterday - 2') print('no coins found yesterday - 2')
update_btc = True update_btc = True
try: try:
coin_xmr = Coin.objects.filter(name='xmr').get(date=date_aux) coin_xmr = Coin.objects.filter(name='xmr').get(date=date_aux)
except: except:
@ -977,6 +995,12 @@ async def index(request):
if update_xmr: if update_xmr:
await asynchronous.update_xmr_data(yesterday, coin_xmr) await asynchronous.update_xmr_data(yesterday, coin_xmr)
if update_socials:
synchronous.check_new_social('Bitcoin')
synchronous.check_new_social('Monero')
synchronous.check_new_social('Cryptocurrency')
#await asynchronous.update_social_data(yesterday)
if update_btc: if update_btc:
await asynchronous.update_others_data(yesterday) await asynchronous.update_others_data(yesterday)
synchronous.update_database(yesterday, yesterday) synchronous.update_database(yesterday, yesterday)

View file

@ -28,8 +28,8 @@ STATICFILES_DIRS = [
SECRET_KEY = 'dafsdasdfasfa7sdfs9d7das7f9as7df8ad43525fsffdssdg455$$###77saf9df79as79s' SECRET_KEY = 'dafsdasdfasfa7sdfs9d7das7f9as7df8ad43525fsffdssdg455$$###77saf9df79as79s'
# SECURITY WARNING: don't run with debug turned on in production! # SECURITY WARNING: don't run with debug turned on in production!
#DEBUG = True DEBUG = True
DEBUG = False #DEBUG = False
ALLOWED_HOSTS = ['80.78.22.34', 'www.moneroj.net', 'localhost', '127.0.0.1', 'moneroj.net', 'moneroj5xq4ttg4ec7e5secqdyw5mcovzvfvlq6i7omv353i6mnexlqd.onion'] ALLOWED_HOSTS = ['80.78.22.34', 'www.moneroj.net', 'localhost', '127.0.0.1', 'moneroj.net', 'moneroj5xq4ttg4ec7e5secqdyw5mcovzvfvlq6i7omv353i6mnexlqd.onion']