40 lines
1.6 KiB
Python
40 lines
1.6 KiB
Python
|
import pandas as pd
|
||
|
import os
|
||
|
|
||
|
|
||
|
class User:
|
||
|
def __init__(self, username, token, num_interests=3, directory='./', interests_file='interests.json'):
|
||
|
self.username = username
|
||
|
self.token = token
|
||
|
self.num_interests = num_interests
|
||
|
self.interests_file = directory + username+'_'+interests_file
|
||
|
self.interests = pd.read_json(self.interests_file) if os.path.isfile(self.interests_file) else pd.DataFrame(columns=['interest', 'frequency']) # {'interest': 'frequency':}
|
||
|
|
||
|
def initialize(self):
|
||
|
if self.interests.empty:
|
||
|
self.interests = pd.DataFrame(columns=['interest', 'frequency'])
|
||
|
|
||
|
def update_interests(self, topics):
|
||
|
for topic in topics:
|
||
|
index = self.interests.index[self.interests['interest'] == topic]
|
||
|
if len(index) > 0:
|
||
|
self.interests.at[index[0], 'frequency'] += 1
|
||
|
else:
|
||
|
self.interests = self.interests.append({'interest': topic, 'frequency': max(
|
||
|
self.interests['frequency']) if not self.interests.empty else 6}, ignore_index=True)
|
||
|
|
||
|
self.interests = self.interests.sort_values(by='frequency', ascending=False, ignore_index=True)
|
||
|
self.interests.to_json(self.interests_file)
|
||
|
|
||
|
def decay_interests(self):
|
||
|
for i, interest in self.interests.iterrows():
|
||
|
if interest['frequency'] > 1:
|
||
|
self.interests.at[i, 'frequency'] -= 1
|
||
|
|
||
|
def get_user_interests(self):
|
||
|
current_interests = []
|
||
|
for i, row in self.interests.iterrows():
|
||
|
if i < self.num_interests:
|
||
|
current_interests.append(row['interest'])
|
||
|
return current_interests
|