[Feature request] implementing a recommender system or hacking an API


From @martinbel on Mon Dec 19 2016 21:39:01 GMT+0000 (UTC)

I’ve tested the app and it works great! I believe the project would benefit by having a recommender system where a user would be getting personalized recommendations based on the movies they’ve seen.
I’m aware this is a big feature request, if this feels something that would fit the project I can expand on how to approach it.

EDIT (adding info):
I feel there are two ways of doing this:

  1. Save users data. Given the movies that are presented to them, save which ones they have clicked. It’s really really easy to implement a fairly simple/useful algo to do this. I can help with this if this route is choosen, not that hard. The data format/set up for this would be:
This is one user and a an example of a transaction (when he choose a movie from a set of movies):

user_id, movie_id, watched
12dasd, foo23aa, 1
12dasd, bla55aa, 0
12dasd, foo66aa, 0
12dasd, bar11aa, 0
add all the movies the user "ignored"
... more

In machine learning parlance this would be an implicit recommender system, the problem is also called learning to rank. The advantage of this, is we don’t need to ask the users to do anything (rate movies).

  1. Use an existing site and hack an API from it. Movielens is a research project where people study how to make recommender systems. I actually use it to choose movies sometimes. There are many others.

    Copied from original issue: https://github.com/popcorn-official/popcorn-desktop/issues/406


From @j3rrey on Sun Dec 09 2018 22:11:50 GMT+0000 (UTC)

Why was this closed?
The title might be a bit misleading but I think everyone would love to have a recommendation feature!
An easier way of implementing something like this would be using a third party service like https://movix.ai/api


From @martinbel on Wed Dec 12 2018 14:14:39 GMT+0000 (UTC)

@j3rrey this is how it’s called, recommender system.


From @j3rrey on Mon Dec 17 2018 08:55:11 GMT+0000 (UTC)

@martinbel what do you want to tell me with this wikipedia link ?
I’d rather use a third party plugin than building a new recommendation engine.
It’s called not reinventing the wheel + not sure about server costs either…

@team-pct I’m not a js dev but I could definitely help out.
The movix.ai recommendation system is excellent and seems to be professional, no clue about their api, but I hope for the best.
Anyways you (@team-pct ) would have to ask for Api access here: [email protected]

@martinbel || @team-pct could you change the title to something like “implementing a recommendation api” ?

@vankasteelj @xaiki @insertc0in what do you guys think about this? Asking you since you are the top contributors.


From @ner00 on Mon Dec 17 2018 11:39:29 GMT+0000 (UTC)

I’m not affiliated with PCT dev team, but I do think the idea is neat, and I agree with using a third-party service that already has a working model of this would be ideal, instead of having to support costs for a platform which would do the same thing, arguably not better (more on that below).

Anyway, I took a quick look at movix.ai and I was very unimpressed with their so-called “deep learning AI”. I started clicking “hearts” left and right to “teach” the system my preferences. After clicking on some 30 movies, I started to notice something odd. movix.ai will recommend movies that you have already “liked”, which presumably you would have to watch first.

So, why is movix.ai suggesting/recommending movies that I have already seen? Is the deep-learning involved taking into account the user’s pot consumption and/or his bad long-term memory?


From @j3rrey on Mon Dec 17 2018 16:32:20 GMT+0000 (UTC)

@ner00 doubling the movies you liked will further refine the search query aka the results you wanted.
Anyways any other recommendations on a good movie recommendation engine preferably based on AI / neural networks ?
Deepsystems aka movix.ai is pretty good and have top-notch talent, one of the reasons I proposed them. There might be better ones, but couldn’t find anything good and freely usable so far.


From @ner00 on Mon Dec 17 2018 16:37:48 GMT+0000 (UTC)

> @ner00 doubling the movies you liked will further refine the search query aka the results you wanted.

By making me forget which ones I already pressed? Refining the search until there is one single movie?
Liking the same movie twice doesn’t make sense in practice, I’m not arguing with the technical aspect - even if it sounds ridiculous. The movie has been liked by the user, it should either disappear from the list of suggestions, or to a list called: “Movies you might want to re-watch”. Anyway, the idea itself is nice, I don’t have any suggestions of any other engine.


From @j3rrey on Mon Dec 17 2018 17:04:15 GMT+0000 (UTC)

@ner00 To give it a heavier like rating ?
Let’s assume the AI is not sure in which direction you are going with your ratings, it could make sure you like a specific genre with a double rating. Well maybe it’s a bug but I haven’t noticed a movie showing up a third time so I assume it’s a feature.


From @ner00 on Mon Dec 17 2018 17:11:25 GMT+0000 (UTC)

Well, I would assume it would base itself on other movies depending on your inclinations for certain genres.
If you watch enough movies, a pattern will arise based on your tendency for certain genres. Bashing the like button on the same Star Wars movie 3 times shouldn’t have any more meaning than liking any other 3 movies that are categorized in the same fashion (sci-fi, fantasy, action, etc.). A movie shouldn’t appear a 2nd time, let alone a 3rd. Anyway, I don’t want to keep derailing, but recommendation shouldn’t ever be redundant, otherwise you might be better off without them.


From @j3rrey on Mon Dec 17 2018 17:28:39 GMT+0000 (UTC)

@ner00 why not ? Would you rather have ratings good or bad aka 2 options ?
Or would you rather have options to say it’s bad, meh, ok, good, amazing aka 5 options ?
Anyways totally offtopic… please recommend a better recommendation engine which in your mind represnts a correct system.

@ner00 this seems to be the implementation of movix.ai

I guess feel free to make a PR ? :slight_smile:


From @ner00 on Mon Dec 17 2018 17:30:36 GMT+0000 (UTC)

The only thing I’m saying is that it’s moronic to have a recommendation system that recommends to the user the same movies that he has already seen, it’s dumb as fuck. I made very clear that I was criticizing the dupe issue, and you’re suggesting that my point isn’t valid because I haven’t put forth the recomnmendation of a recommender system that isn’t retarded. Yeah, completely offtopic.


From @j3rrey on Mon Dec 17 2018 17:36:22 GMT+0000 (UTC)

### Back to the topic:
Other recommendation systems to explore:
https://www.taste.io/ since it’s hiding the identity of their owners fairly well I guess it could be a good fit.
Also one could connect it with trakkt.tv, so it does look like a perfect fit for popcorntime.

Various others I found researching:

@ner00 would you be available to help implement this feature ?


From @ner00 on Mon Dec 17 2018 17:44:28 GMT+0000 (UTC)

> @ner00 would you be available to help implement this feature ?

Probably not, unfortunately.


From @vankasteelj on Tue Dec 18 2018 12:37:28 GMT+0000 (UTC)

I believe it’s a good idea. Having a recommandation system customized per-viewer is neat, but it would/should be based-off existing projects. Butter doesn’t aim to provide services to people, but tools. Hence, if a recommender could be added, it should be modular (allow people to mix in their own recommender servers/api) and why not base that on something like Movix.

The main issue I see here, is that the API isn’t in free access. Which means either they sell the accesses, or they don’t have the server infrastructure to wistand a large number of users.

Trakt does provide a recommendation system, free to use (if the user opens a personnal free account), but it isn’t “that good”, I’m mostly unsatisfied as a viewer with the experience.

I’d say the question isn’t “should Butter implement a recommender?” but rather “who will implement a recommender in Butter and based on which provider?”


From @j3rrey on Wed Dec 19 2018 10:37:55 GMT+0000 (UTC)

@vankasteelj could you point me to some popcorntime code that would be eligible for such an integration ?


From @vankasteelj on Wed Dec 19 2018 11:01:58 GMT+0000 (UTC)

I haven’t had a clear look on popcorntime code for long, but if it’s the same old good Butter base (from 2 years ago or such), I’d say poping a new “recommendation” tab for the html, wire it into the header for access, then in the background, use a new lib js file that handles the code (maybe importing a new node-module to externalize everything that is not butter-specific, but rather provider-specific) with some settings adjustments in case of user authentication and such. Basically, you don’t need to touch anything existing but rather do all your work in a new tab.

It would have the advantage of being separate (code-wise) and straight-to-the-point (a dedicated tab for the user)