Sensible-cinema is a program that allows you to do pre-programmed scene selection (i.e. "mute out" or "bleep out" scenes) on arbitrary media players like netflix online, vlc, etc. Currently it takes as input a list of known "skip-worthy" scenes. It then tracks the player you are using, and mutes or blanks out the system screen appropriately, during the scenes specified. Currently it works out of the box with the hulu and VLC players on windows. It isn't hard to add new players,and probably wouldn't be too hard to add more operating systems. The concept isn't novel: http://www.imdb.com/swiki/special?ParentalGuideHelp "scene description" http://en.wikipedia.org/wiki/Edit_decision_list == How to use == Start playing your movie in its player, then startup sensible-cinema thus: C:\> jruby -S sensible-cinema It prompts you for a scene description file (ex: bambi.yml), and also for a player description file (ex: hulu_full_screen_with_total_length_over_an_hour.yml). Sensible-cinema will now run in a console window, screen tracking the player to monitor its position, and react appropriately. It is presumed that you'll then minimize the console window and proceed to enjoy the movie. You could also specify those same two filenames on the command-line, if desired, ex: C:\> jruby -S sensible-cinema mute_list.yml player_description.yml You'll know that it's working if, when you change the time of your player (ex: dragging it to a new spot in the playback), the screen output in sensible-cinema's console should change to match the new time. == How to install == First you'll need to install jruby (in case you haven't already), from http://www.jruby.org Make sure you check the box "add it to my path" or something similar to that. Next install the gem by either opening up the command window or hitting windows+r (run) and typing C:\> jruby -S gem install sensible-cinema it's jruby only currently (since jruby allows for proper thread concurrency, has an easy GUI, and feels actually sane on windows). It could theoretically be ported to MRI 1.9.2, if anybody wanted to do so. Also if anybody would be interested in porting this to Linux I'd be happy to collaborate. You can test that it's installed by running it (see above) and selecting the "example_scene_list.yml", and choosing the hulu player. It will proceed do a few "demo" mutes and blank outs. == Programming Your Own Scene Description File == To program sensible-cinema, you create a scene description list it can use. An Edit Decision List (EDL) looks something like this trivial example: mutes: "01:00:00" : "01:01:02.5" # mute from exactly one hour to one hour, one minute, two seconds and a half will be muted. blank_outs: "01:00:00" : "01:01:02.5" # also blank out (overlay with blank window) the same. Here's one with more detail http://github.com/rdp/sensible-cinema/blob/master/zamples/scene_lists/example_scene_list.yml Basically your job is to save an appropriate file like that somewhere, then start sensible-cinema and instruct it to use your new file. To create it, basically you notice something you want to add to the list, add it, then go back a few seconds in your media player, and it should now be muted/blanked out automatically. So here is a way to create your scene description file. First create a new file [2], and select it in sensible-cinema (even though it's still blank). Now use sensible-cinema and select the new file you just created. Now "preview" the movie, and as you do, you're going scenes to the file, and then test your additions. As you watch and hit a questionable scene, go back to several seconds before it using your player's controls. When you encounter the scene again, track its beginning and ending time. One way to do this is to, just before and just after the scene, hit the space bar *in the sensible-cinema window*. Hitting the space bar outputs the current time. If you hit it twice, once before and once after, you should now have two reasonably accurate "timestamps" displayed. Add the beginning and ending times to your scene description file (changes will be automatically picked up), then review your additions by rewinding your player and letting it play through the scene in question again. It should now skip it appropriately. If not, adjust your timestamps and try again. Once you're done then you can contribute your scene description file if desired, back to the project [1]. [1] http://github.com/rdp/sensible-cinema/issues [2] The easiest way to do this is to start sensible-cinema, then instead of choosing an existing file, right click and choose "New -> Text Document" Now rename it (leaving it as .txt). "Right click -> Open" to open it in an editor. Now also select that same file in sensible-cinema. Another easy way is to "right drag" an existing file then rename it and edit that one. == FAQ == Q. Can I watch movies this way on my TV, not just on my computer? A. Not yet. And maybe. Currently you'll either need to attach your computer to your TV (buy some long cables, or a new graphics card, etc.) or get some computer that you can move closer to the TV and do the same (ex: buy a used older laptop with s-video out, use that). If you're really aggressive you could run an ethernet cable from your computer, as well [1]. I'd be happy to do a linux port of sensible-cinema if anybody requests it for their dedicated TV computer. There has also been some work toward getting your computer to stream "live" to your wii/ps3/xbox. github message me if you're interested in trying it out! Q. What movies does this work with? A. Any that you program it for :) (Assuming the player is compatible, which most probably are.) Q. What movies are freely available to watch online? A. Not many are available free (hulu, youtube have a few), though Netflix has quite a few with its default subscription. Plus you can watch your existing DVD's, or rent or borrow DVD's and watch them using sensible-cinema. Q. Why does my mouse bounce up and down while sensible-cinema is going? A. This enables your player to keep its on-screen time tracker, which in turn allows sensible-cinema to track where you're at. Message me if this bugs you too much and we'll see what we can do for it. Q. Why does it seem really laggy at time detection at the beginning? A. It takes it awhile to warm up its digit detection. Ping me if you would like to see this improved speed-wise. [1] http://ps3mediaserver.org/forum/viewtopic.php?f=6&t=5731#p34279 == Thanks == Thanks to Jarmo for the win32-screenshot gem, the mini_magick gem authors, jruby guys, etc. Made programming this actually somewhat a pleasure. == License == See the LICENSE file for licensing, usage terms (gplv3). == Related == http://imdb.com tends to have reasonably good lists of what occurs in movies (find a movie, click on "parent's guide" on the left). Sometimes it even lists the time signatures for events (ex: "Labyrinth" http://www.imdb.com/title/tt0047673/parentalguide) which you could use to translate into a sensible-cinema compatible list. == Feedback == Feedback, including feature requests, welcome. http://github.com/rdp/sensible-cinema http://github.com/rdp me