====== Ideas ====== * [[architecture]] * [[ui_design]] * [[data_model]] ====== Idea Dump ====== General unfiled stuff goes here---it's probably a mess! ==== Plugin architecture ==== Plugins need to be able to hook into various parts of the system in various ways. Among them are * Registering metadata/groups of metadata keys * Grabbing metadata from various websites; e.g. IMDB. * Adding tabs to the "details" notebook widget * Adding viewable columns to the main list view, complete with cell renderers * Adding special actions for tags * Adding sections to the "searches" treeview * Adding right-click/menu->tools actions * (or?) Adding actions to the multi-select action combo * Register callbacks for events such as update of metadata by another plugin? ==== Stuff ==== 1. Database layer. * Stores all information about a given film/TV episode. o Base info = filename, location. Title defaults to filename - extension. Or possibly some clever string hackery to guess correct title, e.g. remove extension, swap all '.' for ' ', cut at first non alphanumeric/space character. o Available information defined by template, e.g. series, season, episode number, ep name needed for TV shows. o Video information? E.g. codec, bitrate etc. Plugins! * Stores tag information. 2. API layer. * Includes a plugin architecture. o Default plugins: searching, fetching info from imdb. Maybe some tag styles. + Search. Simple title vs. all search to start with. Advanced search to filter by any of the available fields, linking consecutive ors. + Saved searches to function as playlists. Dynamic; search gets re-run when the playlist is selected, so it's always up to date. # Do we need the ability to have static playlists? A static playlist would simply be a list of titles, regardless of the search that got you there in the first place. So could have a 'static' tickbox when saving the playlist that would save the search as said list of titles instead and thus be static. Conflicts if you rename the titles of course... would want to search by filename instead. + Tag styles would show an icon rather than a word in the list of tags. Other styles might include ability to bold the row if the film is part of a particular tag (e.g. unwatched). * Wrapper for all useful functions so that you can easily create a different front-end... e.g. webapp. Should also be able to swap out the database backend. Ability to use a database via the network is a must, otherwise, include SQLite. * Watch folders; automatically watch a set of folders and add all new media with a particular tag, such as 'new'. (Have that tag as a saved search by default.) Obv have an option to change the default tag/not have a default tag. User-defined recheck period, default to on application start? Then options for whatever we deem sensible. 3. GUI layer. * Either use the desktop default application for launching the video, or ability to define a program. * Should be able to import whole folders of video easily. Would be really nice if you could apply tags before importing. E.g. select the folder, then have the ability to add new tags/apply old ones to all before hitting the 'import' button. Or even add all to a playlist... feature creep! Also want some form of batch tagging in general, e.g. tickboxes by the side of the films, can tick then choose 'tag' and pick various. * Need to be able to choose which columns to show, which to order by etc. I believe this is done by GTK anyway? * List of items, more detail box at top or bottom which will hold extended information for the selected item. Would be nice if you could grab the gnome thumbnails etc in place of a fetched image from imdb etc. * Sidebar with saved searches/playlists at the top, and a collection of tags at the bottom. Tag cloud might be nice, probably plugin material. I'd vote keeping the GUI as bare bones as possible and having most functionality as plugins so it can be swapped all over the place. We'd want to keep the code separate anyway, so might as well. :P Would also find holes in our plugin arch pretty easily!