There were some discussions about external usb or networked storages that not available all the time but there is no solution to handle this kind of sources. PMS management of unavailable files is correct, so when a media is not available (either it's on unplugged usb drive or on a disconnected network storage) it won't report it as a deleted file, but this is not true when we talk about displaying the library in a client. Because unavailable media shouldn't be displayed as a normal playable file. The clients should "hide" of "flag" or "ask for plugging in/mount" for these unavailable media sources.
For example there should be a request like "http://localhost:32400/library/sections/#id/available/all" this means PMS should report only the available files on connected network drives or plugged usb storages and local media that exists. There are many of people who store their videos/movies/pictures on external drives that not all time connected. But PMS not allows to "hide" or filter this unavailable sources after adding to its library. I know PMS is not like a simple "media serving device" that displays the directories of the plugged in device but this way it will satisfies those users who would like to see only the connected/available content of their whole library.
Currently I have two PMS running. (one for remote streaming and one notebook for local streaming) At my home I have a NAS that stores some movies and two external drivers that stores other pictures and movies. This two drivers are moving between my places. Sometimes one of them stays plugged in in my remote PMS and the other with my notebook. So now I defined both of my external drivers on both of the PMSs as different sections and the NAS share in the notebook's PMS. Now when I access any of my PMS from my iPod Touch to stream to an ATV I see all of my movies and sections like I can play it and I don't see if its available for playing or not.
So there is two approach to overcome to this problem:
- implement the available flag for media files in the library. This way the clients can "hide" or display a status for the unavailable content if the user requests.
- when an unavailable media file is played on the client it should ask the user to plug in or mount the necessary drive/share on the server.
Both way need the available flag that would be a great improvement for Plex. Hope I can see this in an upcoming version of PMS and in its clients.
If any of the devs have interest or comment for this solution I'm happy to help with any more explanation of my idea or discussing on how I imagine the implementation. (I'm a developer as well :) )
P.s.: sorry for my english, I hope it's understandable.
No one interested in this? To support pluggable devices a manageable/easy way?
I have a few friends (not all on Mac) who are not using Plex because of this kind of media handling. They store their media on different disks that are plugged in a SATA dock when needed. I don’t want PMS to handle specially this kind of stuff when scanning the media. (the current process is perfect!) But it should allow the client to filter out CURRENTLY unavailable media. As I know the internals, it’s not a big change in the process how PMS handle the media, it’s only an extension for the current way.
Thanks for responding and sorry for my late respond, but I was very busy...
Yes this is almost I need with some extra. :) As I wrote the server handles this situation perfectly with the media manager, because it only marks a media deleted when the drive is available and the media is not there. I think to make the client hide this "not deleted but not available" media the server needs to provide this "middle" state: "it's not there, but maybe it'll available".
So I think I'm asking the followings:
- Server: provide this state
- MediaManager: should visually make a difference between normal and missing
- Client: option to hide missing media or on play it should display an alert to plug in the needed drive (label?, path?) or just "it's currently not available" instead of trying to play unsuccessfully...
- DLNA server: it should be configurable to hide missing media from the clients as well
I think myplex shouldn't be modified to achieve this because if a client access myplex it directly connects with the selected remote server.
**1.** The PMS should feed clients information about scanned-but-missing files. That's a worthwhile API enhancement even without any further changes, as it allows clients to make better decisions about what to display and should be as simple as adding a field to the existing records.
**2.** Add a more descriptive message when playback fails. I think this would be generally useful, though possibly difficult to implement as the existing channel for server->client error communication is fairly limited. But it would be nice if instead of a generic "Playback Failed" message it said something like "File not found: /path/to/foo.avi" or "Unable to transcode" or whatever the actual problem was.
**3.** Forbid playback if a file is missing. I'm not sure about this one -- I think you probably want to continue the attempt-to-play behavior. Currently this is the behavior:
[list=1][*]File not available[*]Attempt playback[*]Playback fails[*]Attach disk[*]Attempt playback[*]Playback succeeds[/list]
But if the client was updated to forbid playing unavailable files you'd have this behavior:
[list=1][*]File not available[*]Attempt playback[*]Playback forbidden[*]Attach disk[*]**Wait for PMS scan**[*]File marked as available[*]Attempt playback[*]Playback succeeds[/list]
And I don't think you want to introduce that additional "wait for PMS scan" delay.
Thank you! I can't organize my thoughts that clearly... :)
**1.** Yes I'd like and mean exactly as you summarized
**2.** I think it doesn't necessary beacause if a client can start a playback, it means that the client doesn't hide the unavailable content, it can request the current status of the media. This could be implemented through the HTTP API with a "querystatus" or similar call. This way there wouldn't be compatibility issues because this request could happen optionally before the actual playing which can be processed the same way as now. Older clients won't request status but nothing else changes.
**3.** This is not necessary again because it only needs to alert the user and asks for plug in the disk (or make the media available at a certain location) or display what was the reason of the failure and ask to refresh the library manually (if it's necessary). I think most of the plex users can get familiar with this approach. It simplifies the whole thing and I won't introduce an other delay... phew... :)
I try to summarize what kind of changes could be needed for implementing this:
**1.** server needs to monitor the media availability
**2.** HTTP API needs to be extended with two capability:
- on media listing requests it needs to contain the media availability flag (avail/unavail/deleted/....)
- implement a "querystatus" or similar api call to get detailed status of a media file. This should return something like this: availability: playable/unavailable/deleted/..., description: it should contains the problem description if any
**3.** modify clients to handle the "availability flag" and on playing it needs to query the server by the new call to display a proper response on failure
That's a good plan -- existing clients could continue as the do now and new clients could ask for confirmation/extended status explicitly. That would be backwards compatible and not terribly difficult to implement in the WebDAV model that Plex uses.
It's not clear to me how the PMS would determine that the necessary disk isn't mounted, as opposed to the file actually being removed. Are you assuming that all "not available" files are the result of temporarily removed disks? How does the PMS know what disk to ask for? I must be misunderstanding what you want.
Also bear in mind that a scan -- even a quick scan -- can take tens of minutes in large libraries. So the PMS probably should be able to recover from the "not available" condition without a new scan.
Plex media manager can currently decide if a media is deleted or just not available. (look trash mechanism, the way PSM decide if a media is deleted or not) If you unplug an external drive and refresh media library it won't sign those media deleted (it's just missing, althoug it has no visual mark for this state) So Plex Media Manager already has this mechanism implemented but not on a immediately basis.
On the client side as I mentioned is shouldn't ask the user to plug in disks (it was a wrong way in our discussion) it should only display that the media is missing (not available) and display the path where is should located and then the user can decide to skip this media or plug in the disk or make the available by mounting a network drive (by the user) and refresh the library manually. For example on the requester there should be a "refresh library" and a "skip" button to make easier to manage this not forcing the user to go back to the home screen for refreshing the library. For the first implementation this should be enough and later the users will push this forward into more handy implementations by their needs.
On the PMS side it should only check the source paths. If a source is not available then all the media it contains is not available. I think that's how the current trash mechanism works in PMS so maybe it only needs to be extended to serve this info on API requests. This way it greatly limits the scans and this looks efficient on a large library as well. This whole stuff shouldn't handle things like linked folders on linux and other magic on the file system. This is for those who store their media on external disks (like me) and want to plug in when they need them and don't want to keep them online all the time and want proper information when something can't be played.