Jellyfin Forum
Multiple users, separate library, no files shown - Printable Version

+- Jellyfin Forum (https://forum.jellyfin.org)
+-- Forum: Support (https://forum.jellyfin.org/f-support)
+--- Forum: Troubleshooting (https://forum.jellyfin.org/f-troubleshooting)
+--- Thread: Multiple users, separate library, no files shown (/t-multiple-users-separate-library-no-files-shown)



Multiple users, separate library, no files shown - zilexa - 2023-10-28

I have been using Jellyfin Server for a few years now, with only 1 user.
The library and folder setup is simple:
Library "Shows" with folder path: data/Shows/ (this folder contains 1 folder for each TV Show, the folder names and subfolder names (S01, S02 etc) are created automatically by Sonarr).
Library "Movies" with folder path: data/Movies/ (this folder contains 1 folder for each Movie, the names created automatically by Radarr)

Now I have created a 2nd user called "Friend". 
The goal is to simply select a couple of Shows from my storage (data/Shows/) for this user. So I created a 3rd library:
Library "Friend Shows" with folder path: data/Show/Sometvshowtitle/

In the Friend user account settings, I only selected access for this library.
In the 1st user account settings, I unselected this library, only "Shows" and "Movies" are selected.

The problem:
Library "Friend Shows" still shows a generic icon, even if I run a scan. And when I login with this user, I see "Friend Shows" but it doesn't have any content.

How do I fix this? Did I do something wrong or did I miss a step?
When I check the log, it says it found a duplicate path! And then shows a clear error/crash of a task:

Code:
[2023-10-29 00:36:51.513 +02:00] [INF] [99] Emby.Server.Implementations.IO.LibraryMonitor: Stopping directory watching for path "/data/Shows"
[2023-10-29 00:36:51.514 +02:00] [INF] [99] Emby.Server.Implementations.IO.LibraryMonitor: Stopping directory watching for path "/data/Movies"
[2023-10-29 00:36:51.519 +02:00] [INF] [146] Emby.Server.Implementations.ScheduledTasks.TaskManager: Queuing task "RefreshMediaLibraryTask"
[2023-10-29 00:36:51.520 +02:00] [INF] [146] Emby.Server.Implementations.ScheduledTasks.TaskManager: Executing "Scan Media Library"
[2023-10-29 00:36:51.520 +02:00] [INF] [146] Emby.Server.Implementations.Library.LibraryManager: Validating media library
[2023-10-29 00:36:51.522 +02:00] [INF] [146] Emby.Server.Implementations.Library.LibraryManager: Found duplicate path: "/data/Shows/Will & Grace"
[2023-10-29 00:36:51.541 +02:00] [INF] [146] Emby.Server.Implementations.Library.LibraryManager: Found duplicate path: "/data/Shows/Will & Grace"
[2023-10-29 00:36:51.588 +02:00] [INF] [97] Emby.Server.Implementations.Library.LibraryManager: Found duplicate path: "/data/Shows/Will & Grace"
[2023-10-29 00:36:52.183 +02:00] [ERR] [97] MediaBrowser.Providers.TV.EpisodeMetadataService: Error in "ffprobe"
MediaBrowser.Common.FfmpegException: ffprobe failed - streams and format are both null.
  at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, Boolean forceEnableLogging, CancellationToken cancellationToken)
  at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, Boolean forceEnableLogging, CancellationToken cancellationToken)
  at MediaBrowser.Providers.MediaInfo.FFProbeVideoInfo.ProbeVideo[T](T item, MetadataRefreshOptions options, CancellationToken cancellationToken)
  at MediaBrowser.Providers.Manager.MetadataService`2.RunCustomProvider(ICustomMetadataProvider`1 provider, TItemType item, String logName, MetadataRefreshOptions options, RefreshResult refreshResult, CancellationToken cancellationToken)
[2023-10-29 00:36:52.345 +02:00] [ERR] [97] MediaBrowser.Providers.TV.EpisodeMetadataService: Error in "ffprobe"
MediaBrowser.Common.FfmpegException: ffprobe failed - streams and format are both null.
  at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, Boolean forceEnableLogging, CancellationToken cancellationToken)
  at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, Boolean forceEnableLogging, CancellationToken cancellationToken)
  at MediaBrowser.Providers.MediaInfo.FFProbeVideoInfo.ProbeVideo[T](T item, MetadataRefreshOptions options, CancellationToken cancellationToken)
  at MediaBrowser.Providers.Manager.MetadataService`2.RunCustomProvider(ICustomMetadataProvider`1 provider, TItemType item, String logName, MetadataRefreshOptions options, RefreshResult refreshResult, CancellationToken cancellationToken)
[2023-10-29 00:36:52.515 +02:00] [ERR] [99] MediaBrowser.Providers.TV.EpisodeMetadataService: Error in "ffprobe"
MediaBrowser.Common.FfmpegException: ffprobe failed - streams and format are both null.
  at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, Boolean forceEnableLogging, CancellationToken cancellationToken)
  at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, Boolean forceEnableLogging, CancellationToken cancellationToken)
  at MediaBrowser.Providers.MediaInfo.FFProbeVideoInfo.ProbeVideo[T](T item, MetadataRefreshOptions options, CancellationToken cancellationToken)
  at MediaBrowser.Providers.Manager.MetadataService`2.RunCustomProvider(ICustomMetadataProvider`1 provider, TItemType item, String logName, MetadataRefreshOptions options, RefreshResult refreshResult, CancellationToken cancellationToken)
[2023-10-29 00:36:52.682 +02:00] [ERR] [99] MediaBrowser.Providers.TV.EpisodeMetadataService: Error in "ffprobe"
MediaBrowser.Common.FfmpegException: ffprobe failed - streams and format are both null.
  at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, Boolean forceEnableLogging, CancellationToken cancellationToken)
  at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, Boolean forceEnableLogging, CancellationToken cancellationToken)
  at MediaBrowser.Providers.MediaInfo.FFProbeVideoInfo.ProbeVideo[T](T item, MetadataRefreshOptions options, CancellationToken cancellationToken)
  at MediaBrowser.Providers.Manager.MetadataService`2.RunCustomProvider(ICustomMetadataProvider`1 provider, TItemType item, String logName, MetadataRefreshOptions options, RefreshResult refreshResult, CancellationToken cancellationToken)
[2023-10-29 00:36:52.848 +02:00] [ERR] [95] MediaBrowser.Providers.TV.EpisodeMetadataService: Error in "ffprobe"
MediaBrowser.Common.FfmpegException: ffprobe failed - streams and format are both null.
  at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, Boolean forceEnableLogging, CancellationToken cancellationToken)
  at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, Boolean forceEnableLogging, CancellationToken cancellationToken)
  at MediaBrowser.Providers.MediaInfo.FFProbeVideoInfo.ProbeVideo[T](T item, MetadataRefreshOptions options, CancellationToken cancellationToken)
  at MediaBrowser.Providers.Manager.MetadataService`2.RunCustomProvider(ICustomMetadataProvider`1 provider, TItemType item, String logName, MetadataRefreshOptions options, RefreshResult refreshResult, CancellationToken cancellationToken)
[2023-10-29 00:36:53.005 +02:00] [ERR] [97] MediaBrowser.Providers.TV.EpisodeMetadataService: Error in "ffprobe"
MediaBrowser.Common.FfmpegException: ffprobe failed - streams and format are both null.
  at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, Boolean forceEnableLogging, CancellationToken cancellationToken)
  at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, Boolean forceEnableLogging, CancellationToken cancellationToken)
  at MediaBrowser.Providers.MediaInfo.FFProbeVideoInfo.ProbeVideo[T](T item, MetadataRefreshOptions options, CancellationToken cancellationToken)
  at MediaBrowser.Providers.Manager.MetadataService`2.RunCustomProvider(ICustomMetadataProvider`1 provider, TItemType item, String logName, MetadataRefreshOptions options, RefreshResult refreshResult, CancellationToken cancellationToken)
[2023-10-29 00:36:53.162 +02:00] [ERR] [95] MediaBrowser.Providers.TV.EpisodeMetadataService: Error in "ffprobe"
MediaBrowser.Common.FfmpegException: ffprobe failed - streams and format are both null.
  at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, Boolean forceEnableLogging, CancellationToken cancellationToken)
  at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, Boolean forceEnableLogging, CancellationToken cancellationToken)
  at MediaBrowser.Providers.MediaInfo.FFProbeVideoInfo.ProbeVideo[T](T item, MetadataRefreshOptions options, CancellationToken cancellationToken)
  at MediaBrowser.Providers.Manager.MetadataService`2.RunCustomProvider(ICustomMetadataProvider`1 provider, TItemType item, String logName, MetadataRefreshOptions options, RefreshResult refreshResult, CancellationToken cancellationToken)
[2023-10-29 00:36:53.318 +02:00] [ERR] [97] MediaBrowser.Providers.TV.EpisodeMetadataService: Error in "ffprobe"
MediaBrowser.Common.FfmpegException: ffprobe failed - streams and format are both null.
  at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, Boolean forceEnableLogging, CancellationToken cancellationToken)
  at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, Boolean forceEnableLogging, CancellationToken cancellationToken)
  at MediaBrowser.Providers.MediaInfo.FFProbeVideoInfo.ProbeVideo[T](T item, MetadataRefreshOptions options, CancellationToken cancellationToken)
  at MediaBrowser.Providers.Manager.MetadataService`2.RunCustomProvider(ICustomMetadataProvider`1 provider, TItemType item, String logName, MetadataRefreshOptions options, RefreshResult refreshResult, CancellationToken cancellationToken)
[2023-10-29 00:36:53.482 +02:00] [ERR] [95] MediaBrowser.Providers.TV.EpisodeMetadataService: Error in "ffprobe"
MediaBrowser.Common.FfmpegException: ffprobe failed - streams and format are both null.
  at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, Boolean forceEnableLogging, CancellationToken cancellationToken)
  at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, Boolean forceEnableLogging, CancellationToken cancellationToken)
  at MediaBrowser.Providers.MediaInfo.FFProbeVideoInfo.ProbeVideo[T](T item, MetadataRefreshOptions options, CancellationToken cancellationToken)
  at MediaBrowser.Providers.Manager.MetadataService`2.RunCustomProvider(ICustomMetadataProvider`1 provider, TItemType item, String logName, MetadataRefreshOptions options, RefreshResult refreshResult, CancellationToken cancellationToken)
[2023-10-29 00:36:56.126 +02:00] [INF] [100] Emby.Server.Implementations.ScheduledTasks.TaskManager: "Scan Media Library" Completed after 0 minute(s) and 4 seconds
[2023-10-29 00:36:56.126 +02:00] [INF] [100] Emby.Server.Implementations.ScheduledTasks.TaskManager: ExecuteQueuedTasks
[2023-10-29 00:36:56.148 +02:00] [INF] [97] Emby.Server.Implementations.IO.LibraryMonitor: Watching directory "/data/Shows"
[2023-10-29 00:36:56.150 +02:00] [INF] [95] Emby.Server.Implementations.IO.LibraryMonitor: Watching directory "/data/Movies"



RE: Multiple users, separate library, no files shown - TheDreadPirate - 2023-10-28

My first guess is permissions. Make sure that the jellyfin user has read and execute permissions to the library folders and read permissions to the files.

If you want to create a sort of curated library for your friend, you can use symlinks in the curated library to point to folders in your existing library. You can limit what your friends library has, but also not have to waste space.


RE: Multiple users, separate library, no files shown - Deleted User - 2023-10-28

i think you need different parent paths

if on linux, try this

since your main shows is data/Shows

make a new folder at data/FriendShows

then link paths from data/Shows to data/FriendShows that you want to share

cd data/FriendShows; ln -s "../Shows/Will & Grace" "Will & Grace"


im not sure of a native jellyfin way to achieve what you want and i didn't try this because i would have to reconfigure my docker which i am not inclined to do at this time


RE: Multiple users, separate library, no files shown - zilexa - 2023-10-28

(2023-10-28, 11:04 PM)TheDreadPirate Wrote: My first guess is permissions.  Make sure that the jellyfin user has read and execute permissions to the library folders and read permissions to the files.

If you want to create a sort of curated library for your friend, you can use symlinks in the curated library to point to folders in your existing library.  You can limit what your friends library has, but also not have to waste space.

The first user has no issues.
When the friend user is set to "enable access to all libraries", it does see all content without a problem --> no permissions issue.
Also note the log I added, it shows a clear error and crash, not related to permissions.

I definitely do not want to mess with local folder structure or filesystem. If that is needed, I assume the feature "multiple users" is simply not what I thought it was.. not being able to simply select folder paths to specific tv shows to only share specific shows with a secondary user.

But the error message "duplicate path" must be an indication of misconfiguration. I just don't understand how. I only added the one mentioned path to "Friend Shows" library.


RE: Multiple users, separate library, no files shown - zilexa - 2023-10-29

Quote:im not sure of a native jellyfin way to achieve what you want and i didn't try this because i would have to reconfigure my docker which i am not inclined to do at this time

I am really shocked about this. You are right. The only way to do something as easy as sharing a few items of your library with someone else, is to mess up your folder structure and create symlinks.
Not sure why we have users, libraries and paths if this doesn't allow me to simply share some library items. Now I need to create new paths and new libraries.

And I will need to use terminal commands to do this Flushed-face while we have such a pretty GUI, I will need terminal every time I want to share a show, season, episode or movie Weary-face


RE: Multiple users, separate library, no files shown - Deleted User - 2023-10-29

perhaps it could be a feature request to the access control section to allow specific items

at this time, it would be *possible* to use parental controls to block access to specific items in the library based on tags
- though that is far more cumbersome and really what is needed is the opposite, 'allow access to only these tags'

i use multiple users but they all have their own library entry with their own root path on the drive
- user A has access to 'Movies'+'User A Movies', only User A has access to 'User A Movies', etc and so on for User B, C, D

but i have never considered specific movies for specific users, perhaps that is why it isn't implemented because nobody else has either

at least in the interim you have a workable solution