sensible-cinema 0.7.3 → 0.7.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
+
|