jerrellmardis / Amphitheatre

Amphitheatre is an Android TV app that connects with network shares, organizes and serves videos to any Android capable media player app.
Apache License 2.0
437 stars 87 forks source link

Optimize the movie and TV show scanning logic #25

Closed jerrellmardis closed 10 years ago

jerrellmardis commented 10 years ago

It takes too long to download TV show and movie content.

MizzleDK commented 10 years ago

As you probably know, this is something I've spent a lot of time working on. Especially TV shows. You'll be able to find lots of code on the logic in Mizuu's source code :-)

jerrellmardis commented 10 years ago

Yea I'll take a look again. Are you using GuessIt to determine the movie and show basic information? On Aug 9, 2014 3:37 PM, "Michell Bak" notifications@github.com wrote:

As you probably know, this is something I've spent a lot of time working on. Especially TV shows. You'll be able to find lots of code on the logic in Mizuu's source code :-)

— Reply to this email directly or view it on GitHub https://github.com/jerrellmardis/Amphitheatre/issues/25#issuecomment-51697848 .

MizzleDK commented 10 years ago

Nope, made all of that on my own. The TV show stuff is quite advanced. I need to improve the movie stuff to make it similar, but it remains quite good even at this point in time. On Aug 9, 2014 10:44 PM, "Jerrell Mardis" notifications@github.com wrote:

Yea I'll take a look again. Are you using GuessIt to determine the movie and show basic information? On Aug 9, 2014 3:37 PM, "Michell Bak" notifications@github.com wrote:

As you probably know, this is something I've spent a lot of time working on. Especially TV shows. You'll be able to find lots of code on the logic in Mizuu's source code :-)

— Reply to this email directly or view it on GitHub < https://github.com/jerrellmardis/Amphitheatre/issues/25#issuecomment-51697848>

.

— Reply to this email directly or view it on GitHub https://github.com/jerrellmardis/Amphitheatre/issues/25#issuecomment-51698007 .

jerrellmardis commented 10 years ago

Ah ok, I'll take a look. Where does this logic live in code? On Aug 9, 2014 3:45 PM, "Michell Bak" notifications@github.com wrote:

Nope, made all of that on my own. The TV show stuff is quite advanced. I need to improve the movie stuff to make it similar, but it remains quite good even at this point in time. On Aug 9, 2014 10:44 PM, "Jerrell Mardis" notifications@github.com wrote:

Yea I'll take a look again. Are you using GuessIt to determine the movie and show basic information? On Aug 9, 2014 3:37 PM, "Michell Bak" notifications@github.com wrote:

As you probably know, this is something I've spent a lot of time working on. Especially TV shows. You'll be able to find lots of code on the logic in Mizuu's source code :-)

— Reply to this email directly or view it on GitHub <

https://github.com/jerrellmardis/Amphitheatre/issues/25#issuecomment-51697848>

.

— Reply to this email directly or view it on GitHub < https://github.com/jerrellmardis/Amphitheatre/issues/25#issuecomment-51698007>

.

— Reply to this email directly or view it on GitHub https://github.com/jerrellmardis/Amphitheatre/issues/25#issuecomment-51698036 .

JakeWharton commented 10 years ago

I don't think this matters as much if processing moves into the background (#7) as an asynchronous fill. Processing everything up-front is the only reason you'd care about raw speed.

MizzleDK commented 10 years ago

@jerrellmardis The logic is primarily in these two classes: https://github.com/MizzleDK/Mizuu/blob/michell-dev/src/com/miz/identification/ShowStructure.java https://github.com/MizzleDK/Mizuu/blob/michell-dev/src/com/miz/identification/TvShowIdentification.java

@JakeWharton I'm guessing you don't have a large TV show library ;-) 3,000 files being identified one by one with at least 2 API calls per file... No one should wait that long - even if it runs in the background.

JakeWharton commented 10 years ago

I have 5000 files.

JakeWharton commented 10 years ago

And it doesn't matter whether it takes half a second or three seconds per file because they UI is continuously being updated in batches.

MizzleDK commented 10 years ago

I've got roughly 3,000 files across 30 TV shows in my library. My application takes less than 15 minutes to identify everything and download everything. That includes updating the UI.

There's literally no reason why it should use several seconds per file.

jerrellmardis commented 10 years ago

True, but there are some unnecessary network calls that should be eliminated. And yes, asynchronous fill FTW! On Aug 9, 2014 3:49 PM, "Jake Wharton" notifications@github.com wrote:

I don't think this matters as much if processing moves into the background (#7 https://github.com/jerrellmardis/Amphitheatre/issues/7) as an asynchronous fill. Processing everything up-front is the only reason you'd care about raw speed.

— Reply to this email directly or view it on GitHub https://github.com/jerrellmardis/Amphitheatre/issues/25#issuecomment-51698133 .

JakeWharton commented 10 years ago

There's literally no reason why it should use several seconds per file.

True. But not only does it completely not matter when properly doing an async fill, but it's optimizing for the wrong thing. I'm just saying that there are so many more impactful things that can be done to improve the UX than this.

MizzleDK commented 10 years ago

Definitely agree on that :-) And I do think it should be prioritized over speed. However, once the async stuff has been implemented, the focus should shift towards improving the speed.

JakeWharton commented 10 years ago

For sure. Like you said, big libraries need the speed aspect as well!