Moviebot is a Slack robot that automates the rip and encode of movie DVDs and Blu-rays. Moviebot watches your disc drive and, behind the scenes, uses MakeMKV and Handbrake to stir up beautiful m4v's. Meanwhile you sit on your couch and chat up moviebot, to pick tracks, and rename and move around completed movies. (Let the kids swap discs.)
Encoding (the Handbrake step) can happen in the cloud or locally. Cloud encodes are parallel to each other, and essentially run at the speed your drive can rip. For instance, cloud encoding a season of a TV show is finished shortly after the last episode is ripped, while local encoding might take another 24 hours.
Note: The following refers to an older Slack setup, using a deprecated API. Will update this text soon.
Warning: Please observe your country's laws regarding commercial entertainment. You may or may not be able to make backup copies of movies you own.
A conversation in your Slack channel.
moviebot
Waking up.
Automatic detection of discs.
moviebot
Ooh, a new disc.moviebot
There's only one show-length track, so I'm going to start ripping it now.
1: Games_of_Nonces_t00.mkv [1:53:51, 26.0G]moviebot
Starting to rip "Games_of_Nonces_t00.mkv" (with 309G free space).moviebot
Finished ripping of "Games_of_Nonces_t00.mkv" (took 47m:51s).moviebot
@channel Ejecting! Feed me another!
Ready for more work once ripping is complete.
moviebot
Starting the encode of "Games_of_Nonces_t00.m4v" (with 284G free space).moviebot
Ooh, a new disc.This disc contains the following tracks:
- What_Happens_In_A_Place_t00.mkv [1:41:13, 23.7G]
- What_Happens_In_A_Place_t01.mkv [1:10:45, 15.2G]
You can tell me to "rip 1[,2,3,..]" or "rip all" or "eject".
@channel (see above)jeremy
movie rip 1moviebot
Starting to rip "What_Happens_In_A_Place_t00.mkv" (with 280G free space).moviebot
Finished ripping of "What_Happens_In_A_Place_t00.mkv" (took 44m:33s).moviebot
Finished encoding of "Games_of_Nonces_t00.m4v" (took 1h:48m).
Encoding happens independently of ripping, queue any number of discs.
moviebot
@channel Ejecting! Feed me another!moviebot
Starting the encode of "What_Happens_In_A_Place_t00.m4v" (with 250G free space).moviebot
Finished encoding of "What_Happens_In_A_Place_t00.m4v" (took 1h:33m).jeremy
movie spacemoviebot
I have 269G of free space!jeremy
movie listmoviebot
Here are your completed shows:
- A Fine Afternoon
- Games_of_Nonces_t00
- What_Happens_In_A_Place_t00
Organize your finished movies while others are in-flight.
jeremy
movie title 2 3moviebot
OK, I renamed "Games_of_Nonces_t00" to "Game of Nonces".moviebot
OK, I renamed "What_Happens_In_A_Place_t00" to "What Happens in a Place".jeremy
movie archive weepies 1 2moviebot
OK, added "A Fine Afternoon" to my archive queue.moviebot
OK, added "Game of Nonces" to my archive queue.moviebot
Moved "A Fine Afternoon" to weepies (took 58s).moviebot
Moved "Game of Nonces" to weepies (took 43s).
# git clone git@github.com:jeremywohl/moviebot.git
or
# git clone https://github.com/jeremywohl/moviebot.git
Run bundler.
# bundle install
Copy the sample config.
# cp config.rb.samp config.rb
Open up config.rb
and edit MOVIES_ROOT. Files are in one of three stages: ripping, encoding, and done, and you can watch them move from one to the next. Here's a sample tree.
You'll need plenty of space -- high bit-rate Blu-rays will need 50GB to rip and compress.
You'll probably want to setup a new Slack team for you or your family/cohorts. Go do that.
Create a Slack bot user and copy the API token into config.rb
.
Look over the rest of config.rb
, though the defaults are probably suitable.
Start 'er up.
# ./start
At this point, you should see action in your Slack desktop client or web page.
moviebot
Waking up.
Now throw a disc into your optical drive. After it works a bit you should see some results.
moviebot
Ooh, a new disc!
Finally, when you need to shut it down:
# ./stop
TODO. For now, type movie help
in Slack (or using whatever prefix you chose).