Coder Social home page Coder Social logo

Support TV series about media-kraken HOT 7 OPEN

noeldemartin avatar noeldemartin commented on September 23, 2024
Support TV series

from media-kraken.

Comments (7)

DylanVanAssche avatar DylanVanAssche commented on September 23, 2024 1

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

from media-kraken.

DylanVanAssche avatar DylanVanAssche commented on September 23, 2024 1

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

from media-kraken.

NoelDeMartin avatar NoelDeMartin commented on September 23, 2024

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.

from media-kraken.

DylanVanAssche avatar DylanVanAssche commented on September 23, 2024

@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

from media-kraken.

NoelDeMartin avatar NoelDeMartin commented on September 23, 2024

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).

from media-kraken.

DylanVanAssche avatar DylanVanAssche commented on September 23, 2024

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 :)

from media-kraken.

NoelDeMartin avatar NoelDeMartin commented on September 23, 2024

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 :).

from media-kraken.

Related Issues (19)

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.