Exemple #1
0
class RecombeeTest( unittest.TestCase ):

  def __init__(self, *args, **kwargs):
    super(RecombeeTest, self).__init__(*args, **kwargs)
    self.client = RecombeeClient('client-test', 'jGGQ6ZKa8rQ1zTAyxTc0EMn55YPF7FJLUtaMLhbsGxmvwxgTwXYqmUk5xVZFw98L')


  def setUp(self):

    self.client.send(ResetDatabase())

    batch = Batch([
      AddItem('entity_id'),
      AddUser('entity_id'),
      AddSeries('entity_id'),
      AddGroup('entity_id'),
      InsertToGroup('entity_id', 'item', 'entity_id'),
      InsertToSeries('entity_id', 'item', 'entity_id', 1),
      AddItemProperty('int_property', 'int'),
      AddItemProperty('str_property', 'string'),
      SetItemValues('entity_id', {'int_property': 42, 'str_property': 'hello'}),
      AddUserProperty('int_property', 'int'),
      AddUserProperty('str_property', 'string'),
      SetUserValues('entity_id', {'int_property': 42, 'str_property': 'hello'})
    ])

    self.client.send(batch)
Exemple #2
0
def offer(request, offer_id):
    offer = Product.objects.all().filter(id=offer_id, is_offer=True)
    reviews = ProductsReview.objects.all().filter(product=offer_id)
    context = {
        'offer': offer,
        'reviews': reviews,
    }

    client = RecombeeClient(
        'e-market-dev',
        'S1HpoVU0JuxtjU9ewtvSnAUQh4qgKHTjr2DFbQ30LoADU2S27OsleTi1C23TNVEm')
    current_user = request.user

    r = AddDetailView(current_user.id, offer_id, cascade_create=True)
    client.send(r)

    recommended = client.send(
        RecommendItemsToItem(offer_id, current_user.id, 3))
    related = recommended['recomms']
    related_products_id = []
    for r in related:
        related_products_id.append(r['id'])
    related_products = []
    for id in related_products_id:
        prod = Product.objects.all().filter(id=id)
        related_products.append(prod)

    context['suggested_offers'] = related_products

    return render(request, 'listings/offer.html', context)
Exemple #3
0
class RecombeeTest( unittest.TestCase ):

  def __init__(self, *args, **kwargs):
    super(RecombeeTest, self).__init__(*args, **kwargs)
    self.client = RecombeeClient('client-test', 'jGGQ6ZKa8rQ1zTAyxTc0EMn55YPF7FJLUtaMLhbsGxmvwxgTwXYqmUk5xVZFw98L')


  def setUp(self):

    self.client.send(ResetDatabase())

    batch = Batch([
      AddItem('entity_id'),
      AddUser('entity_id'),
      AddSeries('entity_id'),
      AddGroup('entity_id'),
      InsertToGroup('entity_id', 'item', 'entity_id'),
      InsertToSeries('entity_id', 'item', 'entity_id', 1),
      AddItemProperty('int_property', 'int'),
      AddItemProperty('str_property', 'string'),
      SetItemValues('entity_id', {'int_property': 42, 'str_property': 'hello'}),
      AddUserProperty('int_property', 'int'),
      AddUserProperty('str_property', 'string'),
      SetUserValues('entity_id', {'int_property': 42, 'str_property': 'hello'})
    ])

    self.client.send(batch)
Exemple #4
0
def main():
    load_dotenv(dotenv_path='.env')

    elastic_search_host = os.getenv("ELASTIC_SEARCH_HOST")
    es = Elasticsearch([elastic_search_host], use_ssl=False)

    client = RecombeeClient(os.getenv("RECOMBEE_DATABASE_ID"),
                            os.getenv("RECOMBEE_PRIVATE_TOKEN"))
    num_recipes = es.count(index=os.getenv("ELASTIC_SEARCH_INDEX"),
                           body={"query": {
                               "match_all": {}
                           }})["count"]

    recipes = scan(client=es,
                   index=os.getenv("ELASTIC_SEARCH_INDEX"),
                   query={"query": {
                       "match_all": {}
                   }},
                   size=BATCH_SIZE,
                   scroll='1ms')
    requests = [
        SetItemValues(recipe['_id'], {
            'title': recipe['_source']['title'],
            'ingredients': recipe['_source']['ingredients'],
            'link': recipe['_source']['link'],
            'image': recipe['_source']['image'],
            'tags': recipe['_source']['tags'],
            'total_time': recipe['_source']['total_time'],
            'rating': recipe['_source']['rating'],
            'time_acquired': recipe['_source']['time_acquired'],
        },
                      cascade_create=True) for recipe in recipes
    ]
    client.send(Batch(requests))
Exemple #5
0
def listing(request, product_id):
    if (request.method == 'POST'):
        if (request.POST['star1'] == 'active'):
            stars = 1
        elif (request.POST['star2'] == 'active'):
            stars = 2
        elif (request.POST['star3'] == 'active'):
            stars = 3
        elif (request.POST['star4'] == 'active'):
            stars = 4
        elif (request.POST['star5'] == 'active'):
            stars = 5
        #if user didn't make any rating
        else:
            stars = 0
        review = request.POST['review']
        # product = Product.objects.all().filter(id=product_id)
        product_review = ProductsReview.objects.create(product_id=product_id,
                                                       user_id=request.user.id,
                                                       review=review,
                                                       rating=stars)
        submit_product_review(product_id)

    product = Product.objects.all().filter(id=product_id)
    reviews = ProductsReview.objects.all().filter(product=product_id)
    client = RecombeeClient(
        'e-market-dev',
        'S1HpoVU0JuxtjU9ewtvSnAUQh4qgKHTjr2DFbQ30LoADU2S27OsleTi1C23TNVEm')
    current_user = request.user
    if (current_user.is_authenticated):
        current_user_id = current_user.id
    else:
        current_user_id = 0
    r = AddDetailView(current_user_id, product_id, cascade_create=True)
    client.send(r)
    recommended = client.send(
        RecommendItemsToItem(product_id, current_user_id, 3))
    related = recommended['recomms']
    related_products_id = []
    for r in related:
        related_products_id.append(r['id'])
    related_products = []
    for id in related_products_id:
        prod = Product.objects.all().filter(id=id)
        related_products.append(prod)

    # for prod in recommended:
    #     print(f"prod {prod}")

    avg_rating = get_avg_rating(product_id)

    context = {
        'product': product,
        'reviews': reviews,
        'avg_rating': round(avg_rating, 1),
        'related_products': related_products,
    }

    return render(request, 'listings/listing.html', context)
Exemple #6
0
def update_item(request):

    #data mining setup
    client = RecombeeClient(
        'e-market-dev',
        'S1HpoVU0JuxtjU9ewtvSnAUQh4qgKHTjr2DFbQ30LoADU2S27OsleTi1C23TNVEm')

    data = json.loads(request.body)
    productId = data['productId']
    action = data['action']

    current_user = request.user
    product = Product.objects.get(id=productId)
    product.sold = product.sold + 1
    product.save()
    order, created = Order.objects.get_or_create(user=current_user,
                                                 complete=False)
    orderItem, created = OrderItem.objects.get_or_create(order=order,
                                                         product=product)

    if (action == 'add'):
        print(f"usre ID: {current_user.id}, product ID: {product.id}")
        r = AddPurchase(current_user.id,
                        product.id,
                        timestamp=time.time(),
                        cascade_create=True)
        client.send(r)
        orderItem.quantity = (orderItem.quantity + 1)
        product.quantity = (product.quantity - 1)
        if (product.quantity <= 0):
            product.in_stock = False
            product.save()
        else:
            product.quantity = product.quantity - 1
            product.save()
    elif (action == 'remove'):
        orderItem.quantity = (orderItem.quantity - 1)
        product.quantity = (product.quantity + 1)
        product.save()

    orderItem.save()

    if (orderItem.quantity <= 0):
        orderItem.delete()

    print(f'Action: {action}, productId: {productId}')
    return JsonResponse('Item was added', safe=False)
Exemple #7
0
def index(request):
    categories = Category.objects.all()
    product = Product.objects.all()
    current_user = request.user
    client = RecombeeClient(
        'e-market-dev',
        'S1HpoVU0JuxtjU9ewtvSnAUQh4qgKHTjr2DFbQ30LoADU2S27OsleTi1C23TNVEm')
    prods = Product.objects.order_by('-sold')[:6]
    best_sellers = sorted(prods, key=operator.attrgetter('sold'), reverse=True)
    print(f"best_sellers: {best_sellers}")

    context = {
        'categories': categories,
        'best_sellers': best_sellers,
    }

    # recomender
    # if (request.user.is_authenticated):
    # print("auth")
    if (not request.user.is_authenticated):
        current_user_id = 0
    else:
        current_user_id = current_user.id
    recommended = client.send(
        RecommendItemsToUser(current_user_id, 5, cascade_create=True))
    # print(recommended)
    client = RecombeeClient(
        'e-market-dev',
        'S1HpoVU0JuxtjU9ewtvSnAUQh4qgKHTjr2DFbQ30LoADU2S27OsleTi1C23TNVEm')
    current_user = request.user
    recommended = client.send(RecommendItemsToUser(current_user_id, 3))
    print(f"Related products: {recommended}")
    suggested = recommended['recomms']
    suggested_products_id = []
    for r in suggested:
        suggested_products_id.append(r['id'])
    suggested_products = []
    for id in suggested_products_id:
        prod = Product.objects.all().filter(id=id)
        suggested_products.append(prod)
    print(f"related: {suggested_products}")
    context['suggested_products'] = suggested_products

    return render(request, 'pages/index.html', context)
Exemple #8
0
 def get(self, user_id):
     _ = get_token_info()
     client = RecombeeClient(
         'globalhack',
         'QluRxG1ZkI3kRKvukeXpscV4kRcTxIPAIYbxVjlD14FJlhS0rLdVYVxv25NNeBYC')
     try:
         # get the recommendation
         response = client.send(RecommendItemsToUser(user_id, 5))
         return make_response(jsonify(response))
     except Exception:
         abort(status.HTTP_500_INTERNAL_SERVER_ERROR)
Exemple #9
0
 def post(self, user_id, service_id):
     _ = get_token_info()
     client = RecombeeClient(
         'globalhack',
         'QluRxG1ZkI3kRKvukeXpscV4kRcTxIPAIYbxVjlD14FJlhS0rLdVYVxv25NNeBYC')
     request = AddPurchase(user_id, service_id, cascade_create=True)
     purchase_requests = [request]
     try:
         # Send the data to Recombee, use Batch for faster processing of larger data
         response = client.send(Batch(purchase_requests))
         return make_response(jsonify(response))
     except Exception:
         abort(status.HTTP_500_INTERNAL_SERVER_ERROR)
Exemple #10
0
class RecombeeTest(unittest.TestCase):
    def __init__(self, *args, **kwargs):
        super(RecombeeTest, self).__init__(*args, **kwargs)

        db_id = os.environ.get('DB_ID')
        if db_id is None:
            raise MissingEnvironmentVariable('DB_ID env var must be specified')

        token = os.environ.get('PRIVATE_TOKEN')
        if token is None:
            raise MissingEnvironmentVariable(
                'PRIVATE_TOKEN env var must be specified')

        self.client = RecombeeClient(db_id, token, region=Region.EU_WEST)

    def setUp(self):

        self.client.send(ResetDatabase())

        while True:
            try:
                self.client.send(ListItems())
            except ResponseException as e:
                # Wait until DB is erased
                continue
            break

        batch = Batch([
            AddItem('entity_id'),
            AddUser('entity_id'),
            AddSeries('entity_id'),
            AddGroup('entity_id'),
            InsertToGroup('entity_id', 'item', 'entity_id'),
            InsertToSeries('entity_id', 'item', 'entity_id', 1),
            AddItemProperty('int_property', 'int'),
            AddItemProperty('str_property', 'string'),
            SetItemValues('entity_id', {
                'int_property': 42,
                'str_property': 'hello'
            }),
            AddUserProperty('int_property', 'int'),
            AddUserProperty('str_property', 'string'),
            SetUserValues('entity_id', {
                'int_property': 42,
                'str_property': 'hello'
            })
        ])

        self.client.send(batch)
Exemple #11
0
def push_zion(database, token, prod_list, user, timestamp=False):
    items = get_global_dic(prod_list, user)
    print(items)
    client = RecombeeClient(database, token)
    if timestamp:
        requests = []
        for item in items:
            r = AddPurchase(item['user_id'],
                            item['item_id'],
                            timestamp=item['timestamp'],
                            cascade_create=True)
            client.send(r)
        requests = []
        for item in items:
            r = AddDetailView(item['user_id'],
                              item['item_id'],
                              timestamp=item['timestamp'],
                              cascade_create=True)
            requests.append(r)
        br = Batch(requests)
        client.send(br)
    else:
        requests = []
        for item in items:
            r = AddPurchase(item['user_id'],
                            item['item_id'],
                            cascade_create=True)
            client.send(r)

        requests = []
        for item in items:
            r = AddDetailView(item['user_id'],
                              item['item_id'],
                              cascade_create=True)
            requests.append(r)
            br = Batch(requests)
            client.send(br)
    print('Done')
from recombee_api_client.api_client import RecombeeClient
from recombee_api_client.api_requests import *
import csv

client = RecombeeClient('wt-proj', 'gVEMJ5zdYOleXwlX4MyCtExwaa8MgAFgejz0W7TPa8kB1Qebtp1t0OvESDDdwrmO')

purchases = []

with open('purchaseRecord.csv') as csvfile:
	csvreader = csv.reader(csvfile)
	for row in csvreader:
		user_id = row[0]
		item_id = row[1]
		r = AddPurchase(user_id, item_id, cascade_create = True)
		purchases.append(r)

br = Batch(purchases)
print(br)
client.send(br)

recommended = client.send(UserBasedRecommendation('0', 5))
print(recommended)
Exemple #13
0
from recombee_api_client.api_client import RecombeeClient
from recombee_api_client.exceptions import APIException
from recombee_api_client.api_requests import *

client = RecombeeClient(
    'university-of-jordan-dev',
    'sMGOTwMPzOPM3l6Tmxs8jXZ2WeCskPR9dnzKrdBczJHy1vdRFQs9HldcLPC8W63N')

result = client.send(ListItems(filter="\'Brand\'== \"Gap\""))

item_img = {
    'item_99': 'https://www.gap.com/webcontent/0018/101/739/cn18101739.jpg',
    'item_98': 'https://www.gap.com/webcontent/0017/029/794/cn17029794.jpg',
    'item_97': 'https://www.gap.com/webcontent/0017/341/330/cn17341330.jpg',
    'item_96':
    'https://www.gap.com/webcontent/0018/052/667/cn18052667.jpg',  #is actually grey
    'item_95': 'https://www.gap.com/webcontent/0018/306/804/cn18306804.jpg',
    'item_94': 'https://www.gap.com/webcontent/0017/341/309/cn17341309.jpg',
    'item_93': 'https://www.gap.com/webcontent/0017/667/434/cn17667434.jpg',
    'item_92': 'https://www.gap.com/webcontent/0017/629/840/cn17629840.jpg',
    'item_91': 'https://www.gap.com/webcontent/0017/818/317/cn17818317.jpg',
    'item_90': 'https://www.gap.com/webcontent/0017/331/404/cn17331404.jpg',
    'item_89': 'https://www.gap.com/webcontent/0018/191/012/cn18191012.jpg',
    'item_88':
    'https://www.gap.com/webcontent/0018/084/015/cn18084015.jpg',  #item_87 sold out
    'item_86': 'https://www.gap.com/webcontent/0017/667/550/cn17667550.jpg',
    'item_85': 'https://www.gap.com/webcontent/0015/161/274/cn15161274.jpg',
    'item_84': 'https://www.gap.com/webcontent/0018/032/751/cn18032751.jpg',
    'item_83': 'https://www.gap.com/webcontent/0018/028/587/cn18028587.jpg',
    'item_82': 'https://www.gap.com/webcontent/0018/028/638/cn18028638.jpg',
    'item_81': 'https://www.gap.com/webcontent/0018/216/814/cn18216814.jpg',
Exemple #14
0
from recombee_api_client.api_client import RecombeeClient
from recombee_api_client.api_requests import *
import csv
from datetime import date
client = RecombeeClient(
    'sns', 'cqLZqZnboKlyVKS7EhhYYyM8BflGRDlizngZbljA3kp67tjd1FKfH3WaXLNSXl7F')
# client.send(ResetDatabase())
client.send(AddItemProperty('title', 'string'))
client.send(AddItemProperty('genre', 'set'))
client.send(AddItemProperty('imdbId', 'string'))
client.send(AddItemProperty('tmdbId', 'string'))
Exemple #15
0
from recombee_api_client.api_client import RecombeeClient
from recombee_api_client.api_requests import *
import json
import os  # to access OS environment variables

client = RecombeeClient(os.environ['DB_NAME'], os.environ['SECRET_TOKEN'])

with open('static/dataset/movie_user_ratings.json') as fdata:
    interactions = json.loads(fdata.read())

requests = []
#interate through all interactions and create object for each interaction
for interaction in interactions:
    r = AddRating(interaction['userid'],
                  interaction['imdbid'],
                  interaction['rating'],
                  cascade_create=True)

    #making a list of interactions
    requests.append(r)

br = Batch(requests)
try:
    # Send the data to Recombee, use Batch for faster processing of larger data
    print('Send ratings')
    client.send(br)

except APIException as e:
    print(e)
from recombee_api_client.api_client import RecombeeClient
from recombee_api_client.api_requests import *
import csv

client = RecombeeClient(
    'sns', 'cqLZqZnboKlyVKS7EhhYYyM8BflGRDlizngZbljA3kp67tjd1FKfH3WaXLNSXl7F')
ratings = []

interaction = AddDetailView(
    "22",
    "96588",  #optional parameters:
)
ratings.append(interaction)

try:
    print('sending')
    client.send(Batch(ratings))
    print('Send')

except APIException as e:
    print(e)
Exemple #17
0
from recombee_api_client.api_client import RecombeeClient
from recombee_api_client.api_requests import *
import csv

client = RecombeeClient(
    'wt-proj',
    'gVEMJ5zdYOleXwlX4MyCtExwaa8MgAFgejz0W7TPa8kB1Qebtp1t0OvESDDdwrmO')

purchases = []

with open('purchaseRecord.csv') as csvfile:
    csvreader = csv.reader(csvfile)
    for row in csvreader:
        user_id = row[0]
        item_id = row[1]
        r = AddPurchase(user_id, item_id, cascade_create=True)
        purchases.append(r)

br = Batch(purchases)
print(br)
client.send(br)

recommended = client.send(UserBasedRecommendation('0', 5))
print(recommended)
from recombee_api_client.api_client import RecombeeClient
from recombee_api_client.api_requests import AddItemProperty, SetItemValues, AddPurchase
from recombee_api_client.api_requests import ItemBasedRecommendation, Batch, ResetDatabase
import random
import csv

PROBABILITY_PURCHASED = 0.1

client = RecombeeClient(
    'wt-proj',
    'gVEMJ5zdYOleXwlX4MyCtExwaa8MgAFgejz0W7TPa8kB1Qebtp1t0OvESDDdwrmO')

#Clear the entire database
client.send(ResetDatabase())

# We will use courses as items
# Courses have three properties
#   - domain (string)
#   - title (string)
#   - description (string)

# Add properties of items
client.send(AddItemProperty('domain', 'string'))
client.send(AddItemProperty('title', 'string'))
client.send(AddItemProperty('description', 'string'))

# Prepare requests for setting a catalog of courses

with open('courseCatalog.csv') as csvfile:
    csvreader = csv.reader(csvfile)
    for row in csvreader:
Exemple #19
0
    # 'recommId': '974edbca-4840-42d4-ae5e-63b2bcd0eba4'}

    recommended = client.send(RecommendItemsToItem(imdb_id[2:], str(user_id), recoms, cascade_create=True))
    recome_movies = []

    for recom in recommended['recomms']:
        recom_imdb = 'tt' + str(recom['id'])
        recome_movies.append(recom_imdb)

    return recome_movies

    

if __name__ == '__main__':

    recommended = client.send(RecommendUsersToItem('0266697', 5))

    












from recombee_api_client.api_client import RecombeeClient
from recombee_api_client.api_requests import AddItemProperty, SetItemValues, AddPurchase
from recombee_api_client.api_requests import ItemBasedRecommendation, Batch, ResetDatabase
import random
import csv

PROBABILITY_PURCHASED = 0.1

client = RecombeeClient('wt-proj', 'gVEMJ5zdYOleXwlX4MyCtExwaa8MgAFgejz0W7TPa8kB1Qebtp1t0OvESDDdwrmO')

#Clear the entire database
client.send(ResetDatabase())

# We will use courses as items
# Courses have three properties
#   - domain (string)
#   - title (string)
#   - description (string)

# Add properties of items
client.send(AddItemProperty('domain', 'string'))
client.send(AddItemProperty('title', 'string'))
client.send(AddItemProperty('description', 'string'))

# Prepare requests for setting a catalog of courses

with open('courseCatalog.csv') as csvfile:
  csvreader = csv.reader(csvfile)
  for row in csvreader:
    requests = [SetItemValues(
      "course-%s" % row[0], #itemId
Exemple #21
0
import random
from datetime import datetime

data1=[]
data2=[]

def generate_data():
	DATA = []
	user_id = random.randrange(2,21)
	product_id = random.randrange(1,11)
	DATA.append(user_id)
	DATA.append(product_id)
	return DATA

for i in range(400):
	#print(generate_data())
	data1.append(generate_data())

for j in range(400):
	#print(generate_data())
	data2.append(generate_data())

#print(data1)
#print(data2)

for i in range(400):
	client.send(AddDetailView(data1[i][0], data1[i][1],
								cascade_create=True))
		client.send(AddPurchase(data2[i][0], data2[i][1],
								cascade_create=True))
#         movie.append(request)

# try:
#     print('Send')
#     client.send(Batch(movie))

# except APIException as e:
#     print(e)

links = []
with open('ml-latest-small/links.csv') as csvfile:
    csvreader = csv.reader(csvfile)
    for row in csvreader:
        Id = row[0]
        movie_imdb = row[1]
        movie_tmdb = row[2]
        request = SetItemValues(Id,
        {
            "imdbId":movie_imdb,
            "tmdbId":movie_tmdb
        },
            cascade_create=True
        )
        links.append(request)

try:
    print('Send')
    client.send(Batch(links))

except APIException as e:
    print(e)
Exemple #23
0
def pred_prod(database, token, USER, NUMBER):
    client = RecombeeClient(database, token)
    recommended = client.send(RecommendItemsToUser(USER, 5))
    print(recommended)
    'tvseries',
    'IG1t5vSWYgpJvClpbJZUn29oqnCu6QnIHoJdm9u5dRLom47i0WrpWrNKcZ9om21x')

requests = []
list_of_ratings = SeriesRating.objects.all()
print(list_of_ratings)
print(len(list_of_ratings))
for i in range(0, len(list_of_ratings)):
    name = list_of_ratings[i].user.id
    series = list_of_ratings[i].series.id
    rate = list_of_ratings[i].rating
    rate = (rate - 10) / 10
    print(str(name) + ' ' + str(series) + ' ' + str(rate))
    request = AddRating(name, series, rate, cascade_create=True)
    requests.append(request)

print(len(requests))
print(requests)
try:
    print('sending')
    client.send(Batch(requests))
    print('Send')
except APIException as e:
    print(e)
except ResponseException as e:
    print(e)
except ApiTimeoutException as e:
    print(e)
except Exception as e:
    print(e)
Exemple #25
0
from recombee_api_client.api_client import RecombeeClient
from recombee_api_client.exceptions import APIException
from recombee_api_client.api_requests import *

client = RecombeeClient(
    'moodsic-dev',
    'Pb4MhOK6751HmdEGmvISdFJqXjLDWEtVkyb2AIY4Cn1EL3vQWy9V0B236OGEj8iy')

#For reseting the database before changing the model
client.send(ResetDatabase())

#########################################
# WARNING Recombee API creates some problems when you're trying to add an object
# when it already exists, therefore if you want to build the model of the database, you have to
# erase the whole database first, this is the best way yet
# adendum: requst should be done in certain order
#
# PrimaryKey means that we will transfer PrimaryKeys from our server database to the recombee database as id-s
##########################################

#DATA  MODELS FOR USERS AND MUSIC

client.send(AddUserProperty("username", "string"))
client.send(AddUserProperty("usualMood", "string"))
client.send(AddUserProperty("age", "int"))

#this can be good enough for our needs
client.send(AddItemProperty("mood", "string"))
client.send(AddItemProperty("length", "double"))
client.send(AddItemProperty("title", "string"))
client.send(AddItemProperty("viewCount", "int"))
Exemple #26
0
class Recombee(object):
	def __init__(self, app=None):
		super(Recombee, self).__init__()
		if app:
			self.app = app
			self.load_recombee()


	def init_app(self, app):
		self.app = app
		self.load_recombee()


	def load_recombee(self):
		self.recombee_client = RecombeeClient(self.app.config['RECOMBEE_DB'], self.app.config['RECOMBEE_KEY'])


	def sync_user_data(self, user_id, data=[], timestamp=""):
		requests = []

		for item in data:
			if item["ids"] is not None and len(item["ids"]) > 0:
				if item["view_type"] == "bet":
					for match_id in item["ids"]:
						r = AddPurchase(
							user_id, 
							match_id, 
							timestamp=timestamp, 
							cascade_create=True
						)
						requests.append(r)
				elif item["view_type"] == "scroll":
					for match_id in item["ids"]:
						r = SetViewPortion(
							user_id, 
							match_id, 
							portion=item["options"]["portion"] if item["options"]is not None else None,
							timestamp=timestamp, 
							cascade_create=True
						)
						requests.append(r)
				else:
					for match_id in item["ids"]:
						r = AddDetailView(
							user_id, 
							match_id, 
							timestamp=timestamp, 
							cascade_create=True,
							duration=item["options"]["duration"] if item["options"] is not None else None
						)
						requests.append(r)

		br = Batch(requests)
		result = self.recombee_client.send(br)


	def sync_item_data(self, matches=[]):
		requests = []
		for match in matches:
			r = SetItemValues(
				match["id"],
				{
					"name": match["name"],
					"tags": [],
					"sourceID": match["source_id"],
					"categoryID": match["category_id"],
					"closeTime": match["date"]
				},
				cascade_create=True
			)
			requests.append(r)

		br = Batch(requests)
		self.recombee_client.send(br)


	def user_recommended_data(self, user_id, count=5, options=None):
		return self.recombee_client.send(
			RecommendItemsToUser(
				user_id,
				count,
				filter=options["filter"] if options is not None else None
			)
		)
# 				print(count)
# 			# if count == 1000:
# 			# 	transaction.commit()
# 		# 	if count == 50000:
# 		# 		transaction.commit()
# 		# transaction.commit()


def main():
    requests = []
    with open('BX-CSV-Dump/BX-Book-Ratings.csv', encoding='utf-8') as f:
        reader = list(csv.reader(f, delimiter=';'))[1000:6000]
        for row in reader:
            request = AddRating(row[0],
                                row[1], (int(row[2]) - 5) / 5,
                                cascade_create=True)
            requests.append(request)
    try:
        print('Send Ratings')
        client.send(Batch(requests))
    except APIException as e:
        print(e)


# main()

recommended = client.send(RecommendItemsToUser('276747', 5))
print(recommended)

# transaction.set_autocommit(True)
Exemple #28
0
from recombee_api_client.api_client import RecombeeClient
from recombee_api_client.api_requests import *
client = RecombeeClient(
    'sns', 'cqLZqZnboKlyVKS7EhhYYyM8BflGRDlizngZbljA3kp67tjd1FKfH3WaXLNSXl7F')
count = 1
users = []
for i in range(1, 102):
    request = DeleteUser(str(count))
    count = count + 1
    users.append(request)
try:
    print('sending')
    client.send(Batch(users))
    print('sent')

except APIException as e:
    print(e)
Exemple #29
0
from recombee_api_client.api_client import RecombeeClient
from recombee_api_client.api_requests import *
client = RecombeeClient(
    'sns', 'cqLZqZnboKlyVKS7EhhYYyM8BflGRDlizngZbljA3kp67tjd1FKfH3WaXLNSXl7F')
print(client.send(GetItemValues('1')))
print(client.send(ListItemProperties()))
recommended = client.send(
    UserBasedRecommendation('672', 5, filter="Animation" in 'genre'))
print(recommended)