Git Product home page Git Product logo

Comments (17)

Protektor-Desura avatar Protektor-Desura commented on June 28, 2024 3

I personally want TV support but I would not bother trying to do season and episode, Instead treat it as a daily show with the upload date of the show being the date of the show.

{Series Title} - {Air-Date} - {Episode Title} [YouTube-ID] [{Quality Full} {MediaInfo VideoCodec} {MediaInfo AudioCodec}]

Something like that which is what Jellyfin uses for daily shows.

/downloads/%(creator)s - %(upload_date)s -%(title)s [%(id)s] [WEBDL-%(height)sp %(vcodec)s %(acodec)s].%(ext)s

Something like that but no idea if the video metadata would be allowed in this case.

from jellyfin-youtube-metadata-plugin.

ankenyr avatar ankenyr commented on June 28, 2024 2

This should be fixed.

from jellyfin-youtube-metadata-plugin.

Protektor-Desura avatar Protektor-Desura commented on June 28, 2024 1

The second option is exactly what I was proposing. Just include the YouTube ID and then let the plugin load the metadata based on the ID. YouTube-DL sets the format for the date of the episode/show/upload date. It isn't something we would set unless you can organize the date in YouTube-DL.

My thoughts were to have YouTube-DL do as much as possible, subscriptions, downloads, naming, etc. Then let the plugin find the metadata based on the YouTube tag/ID that we have YouTube-DL include in the filename,

from jellyfin-youtube-metadata-plugin.

oddstr13 avatar oddstr13 commented on June 28, 2024

Some YouTube videos do have series and episode information; series, season_number and episode_number.
How would you handle that in this context?
Would you still want to stick with upload_date and uploader ?

Sequential numbering could potentially be unstable, as videos could be removed (or made public) at a later time.

{
    "id": "ASr5EedNM3E",
    "uploader": "How To Make Everything",
    "uploader_id": "UCfIqCzQJXvYj9ssCoHq327g",
    "uploader_url": "http://www.youtube.com/channel/UCfIqCzQJXvYj9ssCoHq327g",
    "channel_id": "UCfIqCzQJXvYj9ssCoHq327g",
    "channel_url": "http://www.youtube.com/channel/UCfIqCzQJXvYj9ssCoHq327g",
    "upload_date": "20150908",
    "license": null,
    "creator": null,
    "title": "Chicken | How to Make Everything: Sandwich (7/12)",
    "alt_title": null,
    "thumbnail": "https://i.ytimg.com/vi/ASr5EedNM3E/maxresdefault.jpg",
    "description": "Andy visits his family chicken farm to process a chicken for his sandwich.",
    "categories": [
        "Entertainment"
    ],
    "tags": [
        "How to Make Everything",
        "maker",
        "DIY",
        "Educational",
        "Sandwich",
        "Chicken Meat (Food)",
        "Do It Yourself (Hobby)",
        "Cooking (Interest)",
        "How-to (Website Category)",
        "farm to table",
        "Food (TV Genre)"
    ],
    "subtitles": {},
    "automatic_captions": {},
    "duration": 155,
    "age_limit": 0,
    "chapters": null,
    "webpage_url": "https://www.youtube.com/watch?v=ASr5EedNM3E",
    "view_count": 220464,
    "like_count": 2040,
    "dislike_count": 125,
    "average_rating": null,
    "is_live": null,
    "start_time": null,
    "end_time": null,
    "series": "How to Make Everything",
    "season_number": 1,
    "episode_number": 7,
    "track": null,
    "artist": null,
    "extractor": "youtube",
    "webpage_url_basename": "ASr5EedNM3E",
    "extractor_key": "Youtube",
    "n_entries": 218,
    "playlist": "Uploads from How To Make Everything",
    "playlist_id": "UUfIqCzQJXvYj9ssCoHq327g",
    "playlist_title": "Uploads from How To Make Everything",
    "playlist_uploader": "How To Make Everything",
    "playlist_uploader_id": "UCfIqCzQJXvYj9ssCoHq327g",
    "playlist_index": 196,
    "display_id": "ASr5EedNM3E",
    "season": "Season 1",
    "episode": "Episode 7",
    "format": "137 - 1920x1080 (1080p)+251 - audio only (DASH audio)",
    "format_id": "137+251",
    "width": 1920,
    "height": 1080,
    "resolution": null,
    "fps": 24,
    "vcodec": "avc1.640028",
    "vbr": null,
    "stretched_ratio": null,
    "acodec": "opus",
    "abr": 160,
    "ext": "mkv",
    "fulltitle": "Chicken | How to Make Everything: Sandwich (7/12)"
}

from jellyfin-youtube-metadata-plugin.

ankenyr avatar ankenyr commented on June 28, 2024

To make it more complicated I am not even sure where episode would be within the API. It doesn't look to be in snippets which is where most of the data around a video is contained.

from jellyfin-youtube-metadata-plugin.

sideloading avatar sideloading commented on June 28, 2024

+1 on the original idea in OP

from jellyfin-youtube-metadata-plugin.

Protektor-Desura avatar Protektor-Desura commented on June 28, 2024

I will mention that YouTube Metadata is showing up in Music Videos Library, which is nice.
Screenshot (56)

from jellyfin-youtube-metadata-plugin.

tamburra avatar tamburra commented on June 28, 2024

I personally want TV support but I would not bother trying to do season and episode, Instead treat it as a daily show with the upload date of the show being the date of the show.

{Series Title} - {Air-Date} - {Episode Title} [YouTube-ID] [{Quality Full} {MediaInfo VideoCodec} {MediaInfo AudioCodec}]

Something like that which is what Jellyfin uses for daily shows.

/downloads/%(creator)s - %(upload_date)s -%(title)s [%(id)s] [WEBDL-%(height)sp %(vcodec)s %(acodec)s].%(ext)s

Something like that but no idea if the video metadata would be allowed in this case.

Would love to have something like this as well. Looking to add CBS News Sunday Morning and they put each segment into separate clips. This would be highly annoying as a bunch of movies in a library.

from jellyfin-youtube-metadata-plugin.

twiclo avatar twiclo commented on June 28, 2024

I've got some free time and might be trying to work on this. If someone could give me a quick run down of what would need to be done to get me started it'd be appreciated. I mostly just need to know what how the file structure is laid out

from jellyfin-youtube-metadata-plugin.

ankenyr avatar ankenyr commented on June 28, 2024

You would first need to find where the episode information is stored within Youtube. It would need to be available from both Youtube-dl and Youtube's API. Last time I checked this information was not available from one or both. I have garbage collected all of this information since then. If you wish to take a look and come up with a way forward please post it here and we can discuss it.

from jellyfin-youtube-metadata-plugin.

Protektor-Desura avatar Protektor-Desura commented on June 28, 2024

I posted this from Youtube-DL

/downloads/%(channel)s - %(upload_date)s -%(title)s [%(id)s] [WEBDL-%(height)sp %(vcodec)s %(acodec)s].%(ext)s

Which basically gives you this:

{Series Title} - {Air-Date} - {Episode Title} [YouTube-ID] [{Quality Full} {MediaInfo VideoCodec} {MediaInfo AudioCodec}]

Which would come out as:

Dana Loesch - 04-30-2021 - Dana Radio LIVE 04.30.21 [SYDgI67ftAs] [WEBDL-720p VP9 Opus].webm

Original URL
https://www.youtube.com/watch?v=SYDgI67ftAs

I don't see the problem with this because you also get the Youtube ID so you can use the Youtube API to pull a complete description and all that as well. Just need to throw it in to the TV section since it is a daily show and away you go with full metadata for it.

from jellyfin-youtube-metadata-plugin.

Protektor-Desura avatar Protektor-Desura commented on June 28, 2024

You just download an entire channel using Youtube-DL subscriptions. It's all right there built in to Youtube-DL.

In this example the subscription URL would be:
https://www.youtube.com/user/thedanashow/videos

from jellyfin-youtube-metadata-plugin.

ankenyr avatar ankenyr commented on June 28, 2024

Sorry I didn't respond to you @Protektor-Desura.

Something like that which is what Jellyfin uses for daily shows.

When you use jellyfin for a "daily show" what are the requirements for the filename? Do you have a link to documentation for this? I have only ever used the TV section for traditional TV shows with episodes and seasons.

I would like to keep the priority of metadata as the Youtube API being the highest, followed by the json file, and finally the file name. With movies at least, it would be required to have the ID if the json file was not found to use the API and inserting the ID is the default so I don't think it is too much to ask. I would therefor like to keep the filename requirements as slim as possible.

@twiclo the series information I was mentioning was more in line with what @oddstr13 mentioned. You can see this link for more information on series/episodes within Youtube itself. https://support.google.com/youtube/answer/6084043?hl=en

I would consider series playlists and "daily shows" as @Protektor-Desura is requesting, as two different feature requests in this case. You are welcome to implement one or both if you like.

from jellyfin-youtube-metadata-plugin.

Protektor-Desura avatar Protektor-Desura commented on June 28, 2024

Sorry I didn't respond to you @Protektor-Desura.

Something like that which is what Jellyfin uses for daily shows.

When you use jellyfin for a "daily show" what are the requirements for the filename? Do you have a link to documentation for this? I have only ever used the TV section for traditional TV shows with episodes and seasons.

I would like to keep the priority of metadata as the Youtube API being the highest, followed by the json file, and finally the file name. With movies at least, it would be required to have the ID if the json file was not found to use the API and inserting the ID is the default so I don't think it is too much to ask. I would therefor like to keep the filename requirements as slim as possible.

@twiclo the series information I was mentioning was more in line with what @oddstr13 mentioned. You can see this link for more information on series/episodes within Youtube itself. https://support.google.com/youtube/answer/6084043?hl=en

I would consider series playlists and "daily shows" as @Protektor-Desura is requesting, as two different feature requests in this case. You are welcome to implement one or both if you like.

All I am saying you don't need to make any "additional" code (I would assume). Just let the plugin show up in TV and pull the metadata based on the YouTube tag in the name which it already does. That's it period. Let other applications worry about the auto downloading/subscriptions and how files are named and all of that. Just let your plugin work in TV and fetch metadata for the file using the YouTube ID/code/whatever you want to call it.

I personally use a docker version of Youtube-DL to do subscriptions and one time downloads. This one has a nice web interface for it as well.
https://github.com/Tzahi12345/YoutubeDL-Material

from jellyfin-youtube-metadata-plugin.

PrplHaz4 avatar PrplHaz4 commented on June 28, 2024

I believe the file structure would be more similar to the second one mentioned here: https://jellyfin.org/docs/general/server/media/shows.html

Shows
└── Series (2018)
    ├── Episode S01E01.mkv
    ├── Episode S01E02.mkv
    ├── Episode S02E01-E02.mkv
    └── Episode S02E03.mkv
Shows
└── Dana Loesch (2021)
    ├── Dana Loesch - 04-28-2021 - Dana Radio LIVE 04.28.21 [SYDgI67ftAs] [WEBDL-720p VP9 Opus].webm
    ├── Dana Loesch - 04-29-2021 - Dana Radio LIVE 04.29.21 [SYDgI67ftAs] [WEBDL-720p VP9 Opus].webm
    └── Dana Loesch - 04-30-2021 - Dana Radio LIVE 04.30.21 [SYDgI67ftAs] [WEBDL-720p VP9 Opus].webm

All metadata would be pulled from the [YouTube-ID] tag. In order for it to work "as-is", i think this tag might have to move to the end of the filename.

If we're proposing a standard filename spec - I'd recommend the date be in yyyy-mm-dd format for consistency/sorting/intl readability.

from jellyfin-youtube-metadata-plugin.

ankenyr avatar ankenyr commented on June 28, 2024

So I started playing around with this.

I am using a structure as follows
Shows
└── Series (2018)
├── YYYYMMDD-Title [ytid].mkv

Couple of issues I think I am running into

  1. Sorting is a bit messed up, I have tried changing the sorting method for the series from aired to absolute and it hasn't changed things. I have yet to make rhyme or reason except it looks to be in alphabetical order. Possible solution is to force set the sort name to be YYYMMDD-Title.

  2. Some episodes for some reason get an episode number even though I did not set one. This looks to be the case where something has Part 2 in the title. This would mess with the ordering also as all the episodes without a number would be before the episodes with numbers.

Let me know what you all think here.

from jellyfin-youtube-metadata-plugin.

PrplHaz4 avatar PrplHaz4 commented on June 28, 2024

Couple of issues I think I am running into

1. Sorting is a bit messed up, I have tried changing the sorting method for the series from aired to absolute and it hasn't changed things. I have yet to make rhyme or reason except it looks to be in alphabetical order. Possible solution is to force set the sort name to be YYYMMDD-Title.

2. Some episodes for some reason get an episode number even though I did not set one. This looks to be the case where something has Part 2 in the title. This would mess with the ordering also as all the episodes without a number would be before the episodes with numbers.

Let me know what you all think here.

These both sound like acceptable caveats for a first release - until you have a more broad set of test data it's going to be hard to identify an approach that works for most.

  1. This approach sounds reasonable to me.
  2. Maybe clear the episode number entirely and let the sorting by date take precedence?

from jellyfin-youtube-metadata-plugin.

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.