xbmc/xbmc — pull request #1108 by Montellese (2012-06-30 12:29:51+00:00)
Title: add a tagging system for movies

A few nights ago I had a discussion with @jmarshallnz concerning movie sets and what a pain in the ass they are because they require special handing all over the place. There has been a plan to reduce the set feature to a single set per movie (TheMovieDb only provides one set per movie and will keep it that way) but as users always start screaming when you take something away from them we decided that we should first introduce a more flexible (but also more separated) tagging system for movies (and possibly for other media types).
This PR adds a "tag" and "taglinkmovie" table to the videodb which allows to set as many tags for a movie as the user wants (as it is currently possible with sets). Additionally there's a new "Tags" node in the video library with a "New tag..." button to create a new tag and "Add movies" and "Remove movies" context menu entries in the tags node to allow users to manually add/remove movies from a specific tag. Apart from additional smartplaylist implementation for tags there's no further integration of tags yet i.e. they are not available to skinners in the movie view etc.

I'm throwing this out there to widen the discussion which took place between jmarshall and me. Currently the GUI-side integration of tags into the library is very movie-specific but could (more or less) easily be extended to tvshows and musicvideos (seasons and episodes probably don't make that much sense but I'm sure some users would request it).

For the users the advantage of tags over sets is that they can create/modify them in the GUI and don't need custom NFOs to get them in there in the first place. A disadvantage would be that tags are not scraped but not sure if that would make sense anyway as tags are pretty user-specific IMO.

The advantage for us developers is that we can simplify the code for sets by degrading it to one set per movie (I've already done the necessary work in another branch) which will make both SQL queries and some special handlings in the GUI easier.