Syncplay Shared Playlist Draft Specification (Last updated by Etoh 2015-02-01) Specify number in room -- C = Client-side P = Both client and server side, so needs protocol P* = Client sending new version of room playlist --- User inputs (GUI) for users who can control rooms: #1. [P] Set which episode in the list is currently being played (will change subscribed users in room to that file, seeked to 0:00, unless they specify that it is no item then it will temporarily disable playlist functionality) #2. [P*] Add item(s) to playlist (drag and drop, click for browse, add current file, add stream) #3. [P*] Delete items from playlist #4. [P*] Change order of playlist items (drag and drop, if possible) #5. [P*] Load a playlist from a file (might not be in first release) #6. [C] Set it to change automatically when you change file (invokes #1) --- User inputs (GUI) for all users: #7. [C] Opt whether or not to follow playlist (default state configurable) #8. [C] Specify list of directories that Syncplay should use to search for files (if you try to add a file not in an existing playlist, it will ask if you want to add that folder) #9. [C] Allow user to specify a specify file to play for a given playlist item (even if this is not in usual folder, doesn't match expected filename) #10. [C] Specify replacement patterns for filename recognition (might not be in first release, will be underscore insensitive) #11. [C] Save a playlist to a file (might not be in first release) --- Server-side and protocol notes: #12. Files are referred to by a GUID, not simply their filename. #13. Try to be as Unicode-friendly as possible. #14. Every room can have up to one playlist. #15. Playlists should be at least somewhat persistent, so if everyone gets disconnected it doesn't forget everything. #16. People entering the room need to be told of current playlist (could be empty) and item (could be none). #17. People in the room need to be informed of changes to the playlist and what file is being played (if any)