Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support TV series #5

Open
DylanVanAssche opened this issue Aug 13, 2020 · 7 comments
Open

Support TV series #5

DylanVanAssche opened this issue Aug 13, 2020 · 7 comments
Labels
enhancement New feature or request

Comments

@DylanVanAssche
Copy link

I just discovered this nice app, congratz!
In the past, I was also tinkering about such a Solid app but for TV series.

These links can be useful I think:

This would fit nicely into the data schema as schema:TVSeries instead of schema:Movie.

I saw this was on your roadmap somehow, maybe we can discuss a bit to proceed with this?

@NoelDeMartin NoelDeMartin added the enhancement New feature or request label Aug 18, 2020
@NoelDeMartin
Copy link
Owner

Hi there, thanks for opening the issue!

Yes, this is in my roadmap but I don't have a date for it. In order to set expectations, let me tell you that I don't think it'll happen until early next year. Before getting into new features, I still have a couple of things I want to improve. And it's likely that I start working on another app before I add this feature. But I'll eventually add it for sure, because it's something I am missing in my own use of the app.

If anyone wants to help with this, I'm willing to accept PRs and suggestions. But given the impact of this feature, it'll probably be a slow process and I'll give a lot of push back.

In case anyone still wants to proceed, here's a couple of things I have in mind:

  • Before getting into the code, I'd need to validate the UI modifications and RDF modeling. Simplicity is very important for this app. And the RDF types you mention seem good, but we also need to think about the containers and documents structure.

  • Something different from movies is that I'd like TV Shows to get updated with new episodes automatically. This'll require some RSS-like algorithm, and it'd be ideal to do it on the server-side. But I don't think that Solid supports those operations at the moment, so I'd like to investigate how to go about it.

  • Messaging and onboarding needs to be reviewed, because it only mentions Movies at the moment.

@DylanVanAssche
Copy link
Author

DylanVanAssche commented Aug 18, 2020

I don't mind a slow process and discussions, I could reinvent the wheel, but this app is just really polished and works really well :)

Before getting into the code, I'd need to validate the UI modifications and RDF modeling. Simplicity is very important for this app. And the RDF types you mention seem good, but we also need to think about the containers and documents structure.

I will think about some containers and document structure and add it to this issue later. I think we can re-use a lot of the current structure and even be backwards compatible 🎉

Something different from movies is that I'd like TV Shows to get updated with new episodes automatically. This'll require some RSS-like algorithm, and it'd be ideal to do it on the server-side. But I don't think that Solid supports those operations at the moment, so I'd like to investigate how to go about it.

I think this is another feature. I see this as an update operation which can be used for more than just TV shows.
My current TV show tracking app (SeriesFinale) has a SQLite DB which is updated manually by refreshing the TV shows from the UI. That works fine, but an automated way and semantified data would be even better 👍

Messaging and onboarding needs to be reviewed, because it only mentions Movies at the moment.

True, this should be more like 'media' instead of 'movies'.

Besides these things, I also have the following in mind:

  • Episodes to watch: Show the number of episodes to watch for a TV show on 'Watch next'. Only when you watched them all, they get a check mark as we have for the movies at the moment.
  • Seasons: When showing the description of a TV show, a list of seasons is shown. The episodes are tied to the season they belong too.
  • The TVDB https://www.thetvdb.com/: They are the same as TMDB but for TV shows, they cover almost everything.
  • Mobile 'app': Package Media Kraken as a webapp for the PinePhone Linux phone.
  • Stats: I love to see how much time I spend watching these media, how many movies/TV shows/episodes... I have in my collection, how many movies/TV shows/episodes I still have to watch

@DylanVanAssche
Copy link
Author

@NoelDeMartin Which software do you use to generate these UML diagrams? Umbrello doesn't seem to support this file type: https://github.com/NoelDeMartin/media-kraken/blob/main/docs/classes.uml

@NoelDeMartin
Copy link
Owner

I think this is another feature. I see this as an update operation which can be used for more than just TV shows.
My current TV show tracking app (SeriesFinale) has a SQLite DB which is updated manually by refreshing the TV shows from the UI. That works fine, but an automated way and semantified data would be even better +1

Yes, I agree that it is a different feature. But I wouldn't release a version without it because it's essential to the use-case. But yeah, the first version could be something as simple as a button to synchronise. Although I'd see if there is a simple way that doesn't require user interaction :).

Episodes to watch: Show the number of episodes to watch for a TV show on 'Watch next'. Only when you watched them all, they get a check mark as we have for the movies at the moment.

I like the idea of showing the number, but the workflow to mark watched should be done per-episode. I may have 7 pending and want to mark that I've watched one without the necessity to open the TV show page. Right now the watched mark is binary for movies, and it serves both as a visual queue and a button. Maybe for TV shows it should be different.

Here's how it works in TViso, the app I'm using that I plan to replace with Media Kraken:

tvisotvshows

Seasons: When showing the description of a TV show, a list of seasons is shown. The episodes are tied to the season they belong too.

👍

The TVDB: They are the same as TMDB but for TV shows, they cover almost everything.

TMDB also supports TV shows, any reason not to use the same API?

Mobile 'app': Package Media Kraken as a webapp for the PinePhone Linux phone.

This is also something I've thought about but I'm not sure when I'll do it. So far, I'm using it as a PWA both on my Android device and in Ubuntu, and it works well. I'm not sure if the linux phone supports it though. I've thought about packaging the app with electron and cordova/capacitor. But since I don't have the necessity, I don't plan on doing it anytime soon unless many people ask for it. For mobile phones it'd also mean having to use appstores, and so far I like that this is only using github pages for deployment. You can open a separate issue about this if you want.

Stats: I love to see how much time I spend watching these media, how many movies/TV shows/episodes... I have in my collection, how many movies/TV shows/episodes I still have to watch

This is also a different feature, you can also open a different issue if you want. But I'm not sure I like this one. Maybe I wouldn't mind adding it if it isn't intrusive in the UI, but I feel the challenge here would be in the data because you'd need to store the duration in Solid models as well.

Which software do you use to generate these UML diagrams?

I'm not too happy with the diagrams, so I'm open to suggestions. But I wanted a solution that treats diagrams as code instead binaries. I came across PlantUML and I thought it was good enough. You can regenerate the images running npm run docs:build (it uses docker under the hood).

@DylanVanAssche
Copy link
Author

DylanVanAssche commented Sep 3, 2020

TMDB also supports TV shows, any reason not to use the same API?

Oh I must have missed that, the name of the website doesn't really reflect that. Let's use TMDB then!

This is also something I've thought about but I'm not sure when I'll do it. So far, I'm using it as a PWA both on my Android device and in Ubuntu, and it works well. I'm not sure if the linux phone supports it though. I've thought about packaging the app with electron and cordova/capacitor. But since I don't have the necessity, I don't plan on doing it anytime soon unless many people ask for it. For mobile phones it'd also mean having to use appstores, and so far I like that this is only using github pages for deployment. You can open a separate issue about this if you want.

I will receive my PinePhone in about 2 - 3 weeks and I will be happy to do that.
Not sure yet what technology I can/will use for creating a mobile wrapper for this. The current options are:

I'm in favor of keeping this out of this repository, I would avoid to bloat this repository with such things.

This is also a different feature, you can also open a different issue if you want. But I'm not sure I like this one. Maybe I wouldn't mind adding it if it isn't intrusive in the UI, but I feel the challenge here would be in the data because you'd need to store the duration in Solid models as well.

Yes, we need to store the duration as well here. All other information is already there, so I don't see any big problems here.
I will open another issue later on, I would like to focus first on the basics and get this issue resolved 👍
In my TV show app, this analytics page is hidden in the about section to avoid cluttering the UI with these detailed stats.

Yes, I agree that it is a different feature. But I wouldn't release a version without it because it's essential to the use-case. But yeah, the first version could be something as simple as a button to synchronise. Although I'd see if there is a simple way that doesn't require user interaction :).

If we manage to achieve that, it would so awesome 🎉
But I'm already happy with a sync button :)

I like the idea of showing the number, but the workflow to mark watched should be done per-episode. I may have 7 pending and want to mark that I've watched one without the necessity to open the TV show page. Right now the watched mark is binary for movies, and it serves both as a visual queue and a button. Maybe for TV shows it should be different.

Completely agree! In my TV show app, I can mark a full season as watched, a complete TV show or a single episode.

First proposal for the 'new' data structure

classes

PlanetUML is having some issues with the structure :(
It boils down to this:
MediaContainer -> TVSeries -> Season -> Episode -> WatchAction
MediaContainer -> Movie -> WatchAction

I'm not an UI wizard, if I do some UI here, I will do my best, feel free to suggest things :)

@NoelDeMartin
Copy link
Owner

I'm in favor of keeping this out of this repository, I would avoid to bloat this repository with such things.

I'd rather keep it in the same repository, after all the code is the same. I don't expect having to do much native code, it'd just be different deployment targets.

I haven't heard of QtWebengine nor pywebview, but I think Electron and Cordova are good options. Or Capacitor :).

In my TV show app, this analytics page is hidden in the about section to avoid cluttering the UI with these detailed stats.

Do you have a link to that app?

I'm not an UI wizard, if I do some UI here, I will do my best, feel free to suggest things :)

Don't worry about that, if your code is not ready for release I can still create a feature branch and merge your PR there. I can improve the UI later on, any help I get is already appreciated :).


About the classes diagram, a couple of things:

  • The application is built with a library I made called soukai, and the arrows in the diagram represent soukai relationships. You can read about them here.

    TVSeries cannot have a hasMany(object) relationship with Season, because Season doesn't have an object property. Looking at the TVSeries documentation, there is a property called containsSeason in TVSeries and one called partOfSeries in TVSeason. We could use those, for example in TVSeries hasMany(Season, 'partOfSeries') or belongsToMany(Season, 'containsSeason'). I'd probably use custom naming for the properties too, it doesn't have to be "partOfSeries" and "containsSeason". The ideal for proper Solid data modelling would be to have both relationships, but that will complicate the code because it's not supported in soukai yet, so feel free to do only one and leave a TODO in the code for improvement.

    Take a look at the rest of the relationships. Apologies if this is confusing, I know there's a lot of room for improvement in that diagram and I'm still exploring the best ways to represent Solid shapes and Soukai models.

  • Season could be a schema:TVSeason instead of schema:CreativeWorkSeason, since it's more specific. Same with schema:TVEpisode. I'd also be consistent with the naming. Either TVSeries, TVSeason and TVEpisode or Series, Season and Episode. I think I prefer the latter.

  • There are some properties that I'm not sure I'd include. For example, posterUrl and externalUrls for episodes and seasons. I know the schema supports it, but if we're not going to show anything for the UI I'd prefer not having it.

  • The general idea of MediaContainer -> TVSeries -> Season -> Episode and WatchAction -> Episode is fine :).

@DylanVanAssche
Copy link
Author

Do you have a link to that app?

https://openrepos.net/content/corecomic/seriesfinale-sailfish-os

Don't worry about that, if your code is not ready for release I can still create a feature branch and merge your PR there. I can improve the UI later on, any help I get is already appreciated :).

👍

I'd rather keep it in the same repository, after all the code is the same. I don't expect having to do much native code, it'd just be different deployment targets.

True, but maybe in a separate folder to keep the specifics out of the code base

The application is built with a library I made called soukai, and the arrows in the diagram represent soukai relationships. You can read about them here.

Interesting! I will have a look soon :)

Take a look at the rest of the relationships. Apologies if this is confusing, I know there's a lot of room for improvement in that diagram and I'm still exploring the best ways to represent Solid shapes and Soukai models.

Yes, I was confused about these things, but now that you explain it, I totally get it :)
I will update the diagram later on, after I checked soukai relationships.
As soon as I have a new version, I will post it here :)

Season could be a schema:TVSeason instead of schema:CreativeWorkSeason, since it's more specific. Same with schema:TVEpisode. I'd also be consistent with the naming. Either TVSeries, TVSeason and TVEpisode or Series, Season and Episode. I think I prefer the latter.

Sure, these things are not written in stone :D Series,Season,Episode sounds nice, otherwise we are too fixed on TV stuff (TVEpsiode doesn't completely fit in when we have a show that's only available through streaming services).

There are some properties that I'm not sure I'd include. For example, posterUrl and externalUrls for episodes and seasons. I know the schema supports it, but if we're not going to show anything for the UI I'd prefer not having it.

PosterURL might be overkill, but externalUrl might be not. You can use that to link to a specific episode on TMDB or IMDB for example: https://www.imdb.com/title/tt1724327/?ref_=ttep_ep15

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants