ankenyr / jellyfin-youtube-metadata-plugin

Youtube Metadata Plugin for Jellyfin
GNU Affero General Public License v3.0
510 stars 33 forks source link

System.IO.FileNotFoundException: youtube-dl not found on path #52

Closed wjbridge closed 2 years ago

wjbridge commented 2 years ago

Sorry if this is a dumb question. I see this requires yt-dlp to be in the path for this feature to work. I am running Jellyfun 10.8.0 using docker container lscr.io/linuxserver/jellyfin. How are we supposed to install yt-dlp using a containerized environment? Is the Remote provider a manual install feature only? I saw in past issues that Youtube API v3 was mentioned. Based on the current docs, is this used anymore or only what yt-dlp produces?

[21:04:09] [ERR] [90] MediaBrowser.Providers.Manager.ProviderManager: YTDLSeriesImageProvider failed in GetImageInfos for type Series at /media/Youtube/Patrik Pietschmann [youtube2-UCs7O9sOUQiBGBxaaAguIwig]
System.IO.FileNotFoundException: youtube-dl not found on path!
   at NYoutubeDL.Services.PreparationService.SetupPrepare(YoutubeDL ydl)
   at NYoutubeDL.Services.InfoService.GetDownloadInfoAsync(YoutubeDL ydl, CancellationToken cancellationToken)
   at NYoutubeDL.Services.PreparationService.PrepareDownloadAsync(YoutubeDL ydl, CancellationToken cancellationToken)
   at NYoutubeDL.Services.DownloadService.DownloadAsync(YoutubeDL ydl, CancellationToken cancellationToken)
   at NYoutubeDL.Services.DownloadService.DownloadAsync(YoutubeDL ydl, String url, CancellationToken cancellationToken)
   at NYoutubeDL.YoutubeDL.DownloadAsync(String videoUrl)
   at Jellyfin.Plugin.YoutubeMetadata.Utils.YTDLMetadata(String id, IServerApplicationPaths appPaths, CancellationToken cancellationToken)
   at Jellyfin.Plugin.YoutubeMetadata.Providers.YoutubeDL.YTDLSeriesImageProvider.GetImages(BaseItem item, CancellationToken cancellationToken)
   at MediaBrowser.Providers.Manager.ProviderManager.GetImages(BaseItem item, IRemoteImageProvider provider, String preferredLanguage, Boolean includeAllLanguages, CancellationToken cancellationToken, Nullable`1 type)
ankenyr commented 2 years ago

That is not a dumb question, I need to udpate the readme and @TheFrenchGhosty reminded me of it when I pushed out the latest. I just have not had a chance to. Yt-dlp needs to be in the container and currently it does not automatically download it. I would like to add that as a feature but have not investigated how to do so yet. Right now your options are manually adding it into the container like so

$ docker exec -it -u root jellyfin bash
$ curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /bin/yt-dlp
$ chmod a+rx /bin/yt-dlp
$ apt update && apt install --no-install-recommends --no-install-suggests python3

or adding it to the image

FROM linuxserver/jellyfin:nightly
RUN apt-get update && apt-get install -y \
    python3-pip
RUN python3 -m pip install -U yt-dlp
P-Storm commented 1 year ago

This helped me with the error and installing yt-dlp.