sensible-cinema 0.7.3 → 0.7.4
Sign up to get free protection for your applications and to get access to all the features.
- data/README +41 -33
- data/TODO +18 -30
- data/VERSION +1 -1
- data/bin/sensible-cinema +6 -7
- data/lib/overlayer.rb +2 -2
- data/zamples/players/how_to_create_a_new_player_description.txt +10 -14
- data/zamples/scene_lists/example_scene_list.yml +6 -2
- metadata +2 -2
data/README
CHANGED
@@ -1,14 +1,17 @@
|
|
1
|
-
Sensible-cinema is a program that allows you to do
|
2
|
-
or "bleep out"
|
1
|
+
Sensible-cinema is a program that allows you to do pre-programmed scene selection (i.e. "mute out"
|
2
|
+
or "bleep out" scenes) on arbitrary media players like netflix online, vlc, etc.
|
3
3
|
|
4
|
-
Currently it takes as input a list of known "skip-worthy" scenes
|
5
|
-
It then tracks the player you are using,
|
4
|
+
Currently it takes as input a list of known "skip-worthy" scenes.
|
5
|
+
It then tracks the player you are using, and mutes or blanks out the system screen appropriately,
|
6
6
|
during the scenes specified.
|
7
7
|
|
8
|
-
Currently it
|
9
|
-
add new players,and probably wouldn't be
|
8
|
+
Currently it works out of the box with the hulu and VLC players on windows. It isn't hard to
|
9
|
+
add new players,and probably wouldn't be too hard to add more operating systems.
|
10
10
|
|
11
|
-
The concept isn't
|
11
|
+
The concept isn't novel:
|
12
|
+
|
13
|
+
http://www.imdb.com/swiki/special?ParentalGuideHelp "scene description"
|
14
|
+
http://en.wikipedia.org/wiki/Edit_decision_list
|
12
15
|
|
13
16
|
== How to use ==
|
14
17
|
|
@@ -16,21 +19,21 @@ Start playing your movie in its player, then startup sensible-cinema thus:
|
|
16
19
|
|
17
20
|
C:\> jruby -S sensible-cinema
|
18
21
|
|
19
|
-
It
|
20
|
-
and
|
22
|
+
It prompts you for a scene description file (ex: bambi.yml),
|
23
|
+
and also for a player description file (ex: hulu_full_screen_with_total_length_over_an_hour.yml).
|
21
24
|
|
22
|
-
|
25
|
+
Sensible-cinema will now run in a console window, screen tracking the player to monitor its position,
|
26
|
+
and react appropriately.
|
23
27
|
|
24
|
-
|
28
|
+
It is presumed that you'll then minimize the console window and proceed to enjoy the movie.
|
25
29
|
|
26
|
-
|
27
|
-
|
30
|
+
You could also specify those same two filenames on the command-line, if desired, ex:
|
31
|
+
|
32
|
+
C:\> jruby -S sensible-cinema mute_list.yml player_description.yml
|
28
33
|
|
29
34
|
You'll know that it's working if, when you change the time of your player (ex: dragging it to a new spot
|
30
35
|
in the playback), the screen output in sensible-cinema's console should change to match the new time.
|
31
36
|
|
32
|
-
It is presumed that you'll then minimize the console window and enjoy the movie.
|
33
|
-
|
34
37
|
== How to install ==
|
35
38
|
|
36
39
|
First you'll need to install jruby (in case you haven't already), from http://www.jruby.org
|
@@ -49,9 +52,9 @@ choosing the hulu player.
|
|
49
52
|
|
50
53
|
It will proceed do a few "demo" mutes and blank outs.
|
51
54
|
|
52
|
-
== Programming Your Own Scene
|
55
|
+
== Programming Your Own Scene Description File ==
|
53
56
|
|
54
|
-
To program sensible-cinema,
|
57
|
+
To program sensible-cinema, you create a scene description list it can use.
|
55
58
|
|
56
59
|
An Edit Decision List (EDL) looks something like this trivial example:
|
57
60
|
|
@@ -70,20 +73,20 @@ then start sensible-cinema and instruct it to use your new file.
|
|
70
73
|
To create it, basically you notice something you want to add to the list, add it, then go back a few seconds
|
71
74
|
in your media player, and it should now be muted/blanked out automatically.
|
72
75
|
|
73
|
-
So here is a way to create your scene
|
76
|
+
So here is a way to create your scene description file.
|
74
77
|
First create a new file [2], and select it in sensible-cinema (even though it's still blank).
|
75
|
-
Now select the new file you just created
|
76
|
-
Now "preview" the movie, and as
|
78
|
+
Now use sensible-cinema and select the new file you just created.
|
79
|
+
Now "preview" the movie, and as you do, you're going scenes to the file, and then test your additions.
|
77
80
|
As you watch and hit a questionable scene, go back to several seconds before it using your player's
|
78
|
-
controls. When you
|
79
|
-
hit the space bar *in the sensible-cinema window*.
|
80
|
-
|
81
|
-
|
81
|
+
controls. When you encounter the scene again, track its beginning and ending time. One way to do this
|
82
|
+
is to, just before and just after the scene, hit the space bar *in the sensible-cinema window*.
|
83
|
+
Hitting the space bar outputs the current time. If you hit it twice, once before and once after,
|
84
|
+
you should now have two reasonably accurate "timestamps" displayed.
|
85
|
+
Add the beginning and ending times to your scene description file (changes will be automatically picked up),
|
82
86
|
then review your additions by rewinding your player and letting it play through the scene in question again.
|
83
87
|
It should now skip it appropriately. If not, adjust your timestamps and try again.
|
84
88
|
|
85
|
-
|
86
|
-
Once you're done then you can contribute your scene list if desired, to the project [1].
|
89
|
+
Once you're done then you can contribute your scene description file if desired, back to the project [1].
|
87
90
|
|
88
91
|
[1] http://github.com/rdp/sensible-cinema/issues
|
89
92
|
[2] The easiest way to do this is to start sensible-cinema, then instead of choosing an existing file,
|
@@ -102,19 +105,23 @@ A. Not yet. And maybe. Currently you'll either need to attach your computer to
|
|
102
105
|
There has also been some work toward getting your computer to stream "live" to your wii/ps3/xbox.
|
103
106
|
github message me if you're interested in trying it out!
|
104
107
|
|
105
|
-
Q. What movies
|
108
|
+
Q. What movies does this work with?
|
109
|
+
|
110
|
+
A. Any that you program it for :) Assuming the player is compatible, which most probably are.
|
111
|
+
|
112
|
+
Q. What movies are freely available to watch online?
|
106
113
|
|
107
|
-
A. Not many are available free (hulu, youtube have a few),
|
108
|
-
Plus you can watch your existing DVD's
|
114
|
+
A. Not many are available free (hulu, youtube have a few), though Netflix has quite a few with its default subscription.
|
115
|
+
Plus you can watch your existing DVD's, or rent or borrow DVD's and watch them using sensible-cinema.
|
109
116
|
|
110
|
-
Q. Why does my mouse bounce up and down while
|
117
|
+
Q. Why does my mouse bounce up and down while sensible-cinema is going?
|
111
118
|
|
112
119
|
A. This enables your player to keep its on-screen time tracker, which in turn allows sensible-cinema to track where
|
113
120
|
you're at. Message me if this bugs you too much and we'll see what we can do for it.
|
114
121
|
|
115
122
|
Q. Why does it seem really laggy at screen detection at the beginning?
|
116
123
|
|
117
|
-
A. It takes it awhile to warm up. Ping me if you
|
124
|
+
A. It takes it awhile to warm up its digit detection. Ping me if you would like to see this improved speed-wise.
|
118
125
|
|
119
126
|
== Thanks ==
|
120
127
|
|
@@ -127,8 +134,9 @@ See the LICENSE file for licensing, usage terms (gplv3).
|
|
127
134
|
|
128
135
|
== Related ==
|
129
136
|
|
130
|
-
http://imdb.com (click on "parent's guide"
|
131
|
-
|
137
|
+
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).
|
138
|
+
Sometimes it even lists the time signatures for events occur (ex: "Labyrinth" http://www.imdb.com/title/tt0047673/parentalguide)
|
139
|
+
which you could use to translate into a sensible-cinema compatible list.
|
132
140
|
|
133
141
|
== Feedback ==
|
134
142
|
|
data/TODO
CHANGED
@@ -4,30 +4,27 @@
|
|
4
4
|
|
5
5
|
release ruby-y-y why not, it's interesting
|
6
6
|
"Linux compat anyone?"
|
7
|
+
utube nuki
|
8
|
+
generations first profanidade...
|
7
9
|
|
8
|
-
==
|
10
|
+
== random backlog ... based on user request..remember: just local files for my own needs...==
|
9
11
|
|
10
|
-
|
11
|
-
utube nuki
|
12
|
-
generations profanidade
|
12
|
+
blank overlay "and you are one awesome klingon"
|
13
13
|
|
14
|
-
screencast
|
15
|
-
bundle fewer imagemagick binaries
|
14
|
+
screencast of something helpful.
|
16
15
|
|
17
|
-
|
18
|
-
"**g" (Hulu near beginning)
|
19
|
-
"may g** have mercy on your soul"
|
20
|
-
Data when they crash into the earth
|
16
|
+
optimize imdb: http://www.imdb.com/board/bd0000042/thread/58361958?d=58361958, english friendlier url's
|
21
17
|
|
22
|
-
|
18
|
+
bundle fewer imagemagick binaries
|
23
19
|
|
24
20
|
just plow forward, to "grab" available ideas...
|
25
21
|
|
26
22
|
netflix
|
27
23
|
|
28
24
|
add my own stuff to imdb...
|
25
|
+
antz to imdb...
|
29
26
|
|
30
|
-
imdb parser
|
27
|
+
imdb parser...somehow
|
31
28
|
|
32
29
|
make it into a real live full functional app...like fully fully functional and good (for use, not editing), mostly with the drop down lists uh guess.
|
33
30
|
|
@@ -39,7 +36,7 @@ advertise like to lay men, to try to popularize
|
|
39
36
|
|
40
37
|
with VLC non full screen, it does the annoying mouse thing needlessly (which doesn't bug as much these days...)
|
41
38
|
|
42
|
-
youtube non full screened...hmmm
|
39
|
+
youtube/hulu non full screened...hmmm
|
43
40
|
|
44
41
|
overlay with wav file (would work for VLC, could also "click to mute" for the others...)
|
45
42
|
|
@@ -56,9 +53,7 @@ a web runnable? Why not?
|
|
56
53
|
|
57
54
|
blank out with a user specifiable color (?)
|
58
55
|
|
59
|
-
Auto mute commercials?
|
60
|
-
|
61
|
-
rruby.net rubyy.net
|
56
|
+
Auto mute/blank commercials?
|
62
57
|
|
63
58
|
new github username
|
64
59
|
|
@@ -74,11 +69,6 @@ overlay alpha transparent pic
|
|
74
69
|
Have a "list of all known movies (url's)" and be able to open (IE et al) to the correct part, and start playing them, and they work...
|
75
70
|
|
76
71
|
magnify video parts (?)
|
77
|
-
overlay with transparent gif?
|
78
|
-
|
79
|
-
OCR
|
80
|
-
pop it up only every so often (?)
|
81
|
-
after commercials?
|
82
72
|
|
83
73
|
user customizable levels...
|
84
74
|
maybe even "I don't like ones that are x, y, z", or "boring level x"
|
@@ -86,18 +76,16 @@ user customizable levels...
|
|
86
76
|
user-assignable "confidence" (how much time to 'wrap' surround the mutes, etc. to accomodate for slow computers/laggy internet/different players/poor input)
|
87
77
|
|
88
78
|
auto-assignment of EDL's to media:
|
89
|
-
DVD's
|
90
|
-
|
91
|
-
|
92
|
-
|
79
|
+
DVD's (right click...)
|
80
|
+
web browser plugin?
|
81
|
+
auto start on DVD insertion (?)
|
82
|
+
and show appropriate scene-lists available based on title/md5 of something?
|
93
83
|
|
94
84
|
Programmatically do all of the above, by driving a player with its real API.
|
95
85
|
VLC
|
96
|
-
Allow it to
|
97
|
-
See if burnable to DVD
|
98
|
-
web interface?
|
99
|
-
auto start on DVD insertion (?)
|
100
|
-
and show appropriate scene-lists available based on title/md5 of something?
|
86
|
+
Allow it to record to mp4's somewhere.
|
87
|
+
See if burnable to DVD/CD ...
|
88
|
+
(use web interface?)
|
101
89
|
|
102
90
|
never do unless paid:
|
103
91
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.7.
|
1
|
+
0.7.4
|
data/bin/sensible-cinema
CHANGED
@@ -40,19 +40,18 @@ else
|
|
40
40
|
sleep 4
|
41
41
|
else
|
42
42
|
if !File.exist? scene_list.to_s
|
43
|
-
scene_list = FileChooser.choose_file("SELECT SCENE
|
43
|
+
scene_list = FileChooser.choose_file("SELECT SCENE DESCRIPTIONS FILE", __dir__ + "/../zamples/scene_lists")
|
44
44
|
end
|
45
45
|
unless scene_list
|
46
|
-
puts "error: have to specify a scene
|
46
|
+
puts "error: have to specify a scene descriptions file\n or specify \"test\" on the command line if you just want to snapshot your player"
|
47
47
|
exit 1
|
48
48
|
end
|
49
|
-
puts 'Selected scene
|
50
|
-
overlay = OverLayer.new(scene_list)
|
51
|
-
|
49
|
+
puts 'Selected scene descriptions file ' + File.basename(scene_list) + " (#{scene_list})", ''
|
50
|
+
overlay = OverLayer.new(scene_list)
|
52
51
|
end
|
53
52
|
|
54
|
-
player_description = ARGV.shift
|
55
|
-
if !File.exist?(player_description
|
53
|
+
player_description = ARGV.shift.to_s
|
54
|
+
if !File.exist?(player_description)
|
56
55
|
player_description = FileChooser.choose_file("SELECT PLAYER (optional)", __dir__ + "/../zamples/players")
|
57
56
|
end
|
58
57
|
|
data/lib/overlayer.rb
CHANGED
@@ -87,7 +87,7 @@ class OverLayer
|
|
87
87
|
@mutex = Mutex.new
|
88
88
|
@cv = ConditionVariable.new
|
89
89
|
@file_mtime = nil
|
90
|
-
|
90
|
+
check_reload_yaml
|
91
91
|
@start_time = Time.now_f # assume they want to start immediately...
|
92
92
|
if minutes
|
93
93
|
self.set_seconds self.class.translate_string_to_seconds(minutes)
|
@@ -112,7 +112,7 @@ class OverLayer
|
|
112
112
|
start = translate_string_to_seconds(start)
|
113
113
|
endy = translate_string_to_seconds(endy)
|
114
114
|
if start == 0 || endy == 0
|
115
|
-
p 'warning--possible error in the scene
|
115
|
+
p 'warning--possible error in the scene descriptions file some line not parsed! (NB if you want one to start at time 0 please use 0.0001)', start, endy unless $DEBUG
|
116
116
|
# drop it in bitbucket...
|
117
117
|
else
|
118
118
|
new[start] = endy
|
@@ -1,21 +1,17 @@
|
|
1
|
-
Basically to create a player description you tell it the window title and the coordinates
|
1
|
+
Basically to create a player description you tell it the window title and the coordinates
|
2
|
+
of the "clock" as it plays, including the digits
|
2
3
|
|
4
|
+
Use the others are examples
|
3
5
|
|
4
|
-
|
6
|
+
Some tips:
|
5
7
|
|
6
|
-
use WinCheat to
|
7
|
-
run scene-skipper with
|
8
|
-
use Paint.net to examine the dumped graphic and get coords
|
9
|
-
|
10
|
-
you can specify "test" in place of the "mutes_list.yml" to have it just the player_description.yml and exit
|
11
|
-
it will screen capture your segment to your current working directory.
|
12
|
-
|
13
|
-
Paint.net is quite handy.
|
8
|
+
use WinCheat to help with window names (under "Text") (alt+tab helps, too, since it displays titles).
|
9
|
+
run scene-skipper with 'test' for the scene description filename: it will dump a screenshot using the player description
|
10
|
+
use Paint.net to examine the dumped graphic and get coords (invert it to get easy negative coords).
|
14
11
|
|
15
12
|
NB that the clock coords can have negative start offsets, which mean "distance from the bottom right corner"
|
16
13
|
|
17
|
-
|
18
|
-
|
19
|
-
NB that you can specify "desktop" for the window name meaning full screen.
|
14
|
+
NB that you can specify "desktop" for the window name, meaning full screen. This is easier, though not necessarily better,
|
15
|
+
than finding out the real way.
|
20
16
|
|
21
|
-
Post back with difficulties or questions.
|
17
|
+
Post back with difficulties and/or questions.
|
@@ -1,6 +1,4 @@
|
|
1
1
|
# comments can go after the # on each line
|
2
|
-
title: Forever Strong
|
3
|
-
source: Hulu # these aren't required fields -- mutes and blank_outs are
|
4
2
|
mutes:
|
5
3
|
2.0 : 3.0
|
6
4
|
4.0 : 5.0 # mute from second 4 to second 5
|
@@ -18,3 +16,9 @@ blank_outs:
|
|
18
16
|
"00:15" : "00:18" # blank from second 15 to 18
|
19
17
|
01:01 : "01:02.0" # blank from one minute one second to one minute two seconds, etc.
|
20
18
|
1:00:00 : 1:00:30 # note also that if you blank something out it isn't muted unless you *also* add it to the mute list, above. Message me if you want that changed.
|
19
|
+
|
20
|
+
title: Forever Strong
|
21
|
+
source: Hulu # these aren't required fields -- mutes and blank_outs are
|
22
|
+
something_else: "for now you can add whatever categories you want, like what_it_would_now_be_rated
|
23
|
+
what_aspects_were_not_able_to_be_removed, url, DVD label, etc, though in reality the only required ones are mutes and blank_outs"
|
24
|
+
|