Giter VIP home page Giter VIP logo

Comments (12)

kiriles90 avatar kiriles90 commented on May 31, 2024 1

@El-Virus You are right, its related to having too many items and how this tab, unlike the Favorites one doesn't use caching. Marking this as a bug and for now anyone having an issue can reset their watched database or just disable the whole tab altogether (both of these can be found in the Settings page)

from popcorn-desktop.

El-Virus avatar El-Virus commented on May 31, 2024 1

Well, then the only two options are storing them in the cache or implementing a list feature in the server (It would still be backwards compatible given that we are just adding a feature).

For the cache option, in my case, I have ~40 movies in my bookmarks, with a cache of 443kb. So, it's about 11kb/movie, let's hypothesize I've watched ~900 movies, and we'll change the average size/movie to 15kb, which would make a cache of 13mb, if in my lifespan I end up watching 10 times that, we'd have a 130mb cache, which, personally, I think is not that huge. (The standard low-cost computer today comes with a 512gb SSD, meaning that the database would take up ~0,0002% of the disk).
So, the cache option is quite acceptable.

Implementing the list feature shouldn't be hard (can't assure that, given that I haven't looked at how the server works at all), but it could also be considered. Its worth would depend on how much strain that would cause to the server. Do you see it as a viable option?

Anyway, the cache option seems fine.

from popcorn-desktop.

dutchy1001 avatar dutchy1001 commented on May 31, 2024 1

My issue was that after adding 100 movies only 8/9 show up in my list adding every refresh a few more and taking a few other off again.
Unless the cashe option is implemented I don't see it usefull

from popcorn-desktop.

kiriles90 avatar kiriles90 commented on May 31, 2024 1

@El-Virus yep I'll have a look at it (though not today, too much PCT for one day :)

from popcorn-desktop.

kiriles90 avatar kiriles90 commented on May 31, 2024

@El-Virus lol went to find the original PR to message the author for any ideas and just realized.. you are him πŸ˜„
So.. any ideas? We can make it cache, but might make the cache huge, or some other way I'm not aware of to resolve the error. In my understanding the issue comes from making too many simultaneous API requests and some of them fail. (at least that's what I remember from when @dutchy1001 found this.. not sure why we haven't opened an issue until now, tbh personally I forgot about it since I don't use this tab that much..)

from popcorn-desktop.

dutchy1001 avatar dutchy1001 commented on May 31, 2024

After all the issue's I had with the "watched" tab and how slow it was populated with the choosen movies/series I gave up on using it.
I dont really see the use of it as in the main page watched movies are faded anyway (it's a different story for series unfortunatelly).

from popcorn-desktop.

El-Virus avatar El-Virus commented on May 31, 2024

After all the issue's I had with the "watched" tab and how slow it was populated with the choosen movies/series I gave up on using it. I dont really see the use of it as in the main page watched movies are faded anyway (it's a different story for series unfortunatelly).

Well, using it as a filter for the main movies page is an option. The whole point of the watched tab is that sometimes some of us like to see which movies (or series) we've seen and rewatch them again (or find one in particular we can't remember the name of)

from popcorn-desktop.

El-Virus avatar El-Virus commented on May 31, 2024

@El-Virus lol went to find the original PR to message the author for any ideas and just realized.. you are him πŸ˜„

Indeed πŸ˜…

So.. any ideas? We can make it cache, but might make the cache huge, or some other way I'm not aware of to resolve the error.

Yeah, in many cases (such as mine) the cache would be too big, so that would hardly be an option. (Though we could consider adding that as a setting)

In my understanding the issue comes from making too many simultaneous API requests and some of them fail. (at least that's what I remember from when dutchy1001 found this.. not sure why we haven't opened an issue until now, tbh personally I forgot about it since I don't use this tab that much..)

Doesn't the main movies tab (or, yet again, the series tab) query a whole bunch of movies simultaneously? (I haven't looked at that part of the code, and won't be able to do so today).
I'd say that having the watched tab query them the same way the main tab does would be completely fine (A limited quantity of them at a time). Is that possible?
Or does the server decide which movies/series are sent to the client?

from popcorn-desktop.

kiriles90 avatar kiriles90 commented on May 31, 2024

But the thing is.. even as a filter it makes individual API request for every movie. And it would get even weirder since I guess it would basically hide the rest of the items, so you'd see like 1-2 items in your list, then have to scroll down for a couple more to appear etc...

The movies/series lists make a single API request per 25-50 items, and get limited info back. Then if you click on something it makes another request specifically for that item only. The issue with 'watched' is.. both of the APIs we use currently have no such 'list' feature where you can drop in 50 random imdb id's all together and get a list back, they only have such calls using their own sorters (year, latest, trending etc..). So your feature relies on making single calls for every item, like the movie/show detail page, to populate its list, which when you do 25-50 at a time.. is too much.. Favorites overcomes this by caching the limited data from the first 'mass'(list) call (for items marked as facorites only) and only doing single calls when you click on something for more, like the movie/series list does.. It would be an easy fix for this also but I'm not really sure how big the cache would get in this scenario..

from popcorn-desktop.

kiriles90 avatar kiriles90 commented on May 31, 2024

Yeah I think the cache option is the more realistic one since what the APIs do isn't always under our control (e.g yts) and even if it were, not many APIs or search features in general offer a feature like this where you can simultaneously list 50 different items based on 50 different query terms.. I guess since that would put a big strain on their systems..?

from popcorn-desktop.

El-Virus avatar El-Virus commented on May 31, 2024

Well, cache it is then.

@kiriles90, I think you can do it faster than I, could you handle the matter?

from popcorn-desktop.

YI8it avatar YI8it commented on May 31, 2024

@kiriles90 The watched database is infact the only reason I use PCT, and I love it for having this feature! My only gripe with it has been that I have had to deal with managing and finding things in it by text alone in my GUI. I did try some APIs like Cinemagoer, but they where all horribly slow and I only got close to figuring out how to parse the IMDB-ID to the image URL, so I'm just using a text GUI for now. I have just shy of 4400 entries in watched.db so waiting minutes per title as with Cinemagoer isn't really ideal. I have many times thought about cloning this repo and start going throught the code so that I could add the "Watched" tab myself, but the code base is a little bit too huge for a non-dev like me :P But I know that if I just knew (and understood) the code that creates one of the "Movies" or "Series" tabs, I could create my own "Watched" tab in like 20 seconds, by just copying and pasting the code for one of those tabs and changing a single math operation. At least if you load stuff the way I've always imagined that you do. If 'A' is the set of all movies and 'B' is the set of watched movies, my guess is that you do something like this today (for-loop for illustrative purposes):

For movie in 'A', if movie not in 'B': load info.

Instead of set difference, you could just use set intersection for loading "Watched" and you're done:

For movie in 'A', if movie also in 'B': load info.

No need to figure out how to solve anything, because you have already solved it when creating the code for the other tabs. Just copy/paste, change set logic, done! At least if my suspicions are true :) I would really love it if I could view and filter my own database with the app! I would actually not be opposed to having it all stored on my local drive, since that would save me the time of figuring out how to crack the IMDB-ID parsing but I at least thought I'd tell you that there probably exist a few second-solution to this problem.

from popcorn-desktop.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.