The A.R.M. (Automatic Ripping Machine) detects the insertion of an optical disc, identifies the type of media and autonomously performs the appropriate action:
- DVD / Blu-ray -> Rip with MakeMKV and Transcode with Handbrake
- Audio CD -> Rip and Encode to FLAC and Tag the files if possible.
- Data Disc -> Make an ISO backup
It runs on Linux, it’s completely headless and fully automatic requiring no interaction or manual input to complete it’s tasks (other than inserting the disk). Once it completes a rip it ejects the disc for you and you can pop in another one.
I uploaded the scripts to GitHub under the MIT license. As of version 1.1.0 (which pulls in muckngrind4’s changes) the ARM can rip from multiple drives simultaneously, and send push notifications to your phone when it’s complete using Pushbullet or IFTTT.
Instructions to get it installed on Ubuntu 14.04 or 16.04 LTS follows.
ARM Equipment & Hardware
Blu-Ray Hardware and VMware Settings
You will need a server. I am using my Datacenter in a Box Build and run the ARM on Ubuntu Linux 16.04 LTS under VMware. At first I tried using an external USB Blu-Ray drive but the VM didn’t seem to be able to get direct access to it. My server case has a slim-DVD slot on it so I purchased the Panasonic UJ160 Blu-Ray Player Drive because it was one of the cheaper Blu-Ray drives.
I wasn’t sure if VMware would recognize the Blu-Ray functions on the drive but it does! Once physically installed edit the VM properties so that it uses the host device as the CD/DVD drive and then select the optical drive.
I kept getting this error while trying to rip a movie:
MSG:3031,0,1,”Drive BD-ROM NECVMWar VMware IDE CDR10 1.00 has RPC protection that can not be bypassed. Change drive region or update drive firmware from http://tdb.rpc1.org. Errors likely to follow.”,”Drive %1 has RPC protection that can not be bypassed. Change drive region or update drive firmware from http://tdb.rpc1.org. Errors likely to follow.”,”BD-ROM NECVMWar VMware IDE CDR10 1.00″
After doing a little research I found out DVD and Blu-Ray players have region codes that only allow them to play movies in the region they were intended–by default the Panosonic drive shipped with a region code set to 0.
Notice that North America is not 0.
Looking at http://tdb.rpc1.org/ it looks like it is possible to flash some drives so that they can play videos in all region codes. Fortunately before I got too far down the flash the drive path I discovered you can simply change the region code! Since I’m only playing North American movies I set the region code to 1 using:
sudo apt-get install regionset
sudo regionset /dev/sr0
You can only change this setting 4 or 5 times then it gets stuck so if you’re apt to watch movies from multiple regions you’ll want to look at getting a drive that you can flash the firmware.
Install MakeMKV, Handbrake, ABCDE and At
sudo add-apt-repository ppa:heyarje/makemkv-beta
sudo add-apt-repository ppa:stebbins/handbrake-releases
sudo add-apt-repository ppa:mc3man/xerus-media
sudo apt update
sudo apt install makemkv-bin makemkv-oss
sudo apt install handbrake-cli libavcodec-extra
sudo apt install abcde flac imagemagick glyrc cdparanoia
sudo apt install at
sudo apt install python3 python3-pip
apt-get install libdvd-pkg
Mount Samba/CIFS Media Share
If you’re ripping to the local machine skip this section, if you’re ripping to a NAS like I am do something like this…
In FreeNAS I created a media folder on my data share at \\zfs\data\media
sudo apt-get install cifs-utils
\\zfs\data\media /mnt/media cifs rw,user,auto,suid,username=your_cifs_username,password=your_cifs_password 0 0
Once that’s in the file mount the folder and create an ARM and an ARM/raw folder.
sudo mkdir /mnt/media
sudo mount /mnt/media
sudo mkdir -p /mnt/media/ARM/raw
Install ARM Scripts
Create a folder to install the Automatic Ripping Scripts. I suggest putting them in /opt/arm.
git clone https://github.com/ahnooie/automatic-ripping-machine.git arm
pip3 install -r requirements.txt
ln -s /opt/arm/51-automedia.rules /lib/udev/rules.d/
ln -s /opt/arm/.abcde.conf /root/
cp config.sample config
You should look over the config file to make sure it suits your needs, if you want to add Android or iOS push notifications that’s where to do it.
Figure out how to restart udev, or reboot the VM (make sure your media folder gets mounted on reboot). You should be set.
Automatic Ripping Machine Usage
- Insert Disc.
- Wait until the A.R.M. ejects the disc.
Test out a movie, audio cd, and data cd and make sure it’s working as expected. Check the ouput logs at /opt/arm/logs and also syslog if you run into any issues. If you run into trouble feel free to post an issue here.
Install MakeMKV License
MakeMKV will run on a trial basis for 30 days. Once it expires you’ll need to purchase a key or while it’s in BETA you can get a free key… I would love to build this solution on 100% free open source software but MakeMKV saves so much time and is more reliable compared to anything else I’ve tried. I will most likely purchase a license when it’s out of beta.
Grab the latest license key from: http://www.makemkv.com/forum2/viewtopic.php?f=5&t=1053
Edit the /root/.MakeMKV/settings.conf and add a line:
app_Key = "whatever_the_latest_key_is"
How it Works?
When UDEV detects a disc insert/eject as defined by /lib/udev/rules.d/51-automedia.rules it runs the wrapper which in turn runs /opt/arm/identify.sh which identifies the type of media inserted and then calls the appropriate scripts. (if you ever need it this is a great command get get info on a disk):
udevadm info -q env -n /dev/sr0
Video Discs (Blu-Ray/DVD)
All tracks get ripped using MakeMKV and placed in the /mnt/media/ARM/raw folder as soon as ripping is complete the disk ejects and transcoding starts with HandBrakeCli transcoding every track into /mnt/media/ARM/timestamp_discname. You don’t have to wait for transcoding to complete, you can immediately insert the next disk to get it started.
There is some video file renaming that needs to be done by hand. The ARM will name the folder using the disc title, but this isn’t always accurate. For a Season of TV shows I’ll name them using FileBot and then move them to one of the Movie or TV folders that my Emby Server looks at. Fortunately this manual part of the process can be done at any time, it won’t hold up ripping more media. The Emby Server then downloads artwork and metadata for the videos.
If an audio track is detected it is ripped to a FLAC file using the abcde ripper. I opted for the FLAC format because it’s lossless, well supported, and is un-proprietary. If you’d prefer a different format ABCDE can be configured to rip to MP3, AAC, OGG, whatever you want. I have it dropping the audio files in the same location as the video files but I could probably just move it directly to the music folder where Emby is looking.
Data Disks (Software, Pictures, etc.)
If the data type is ISO9660 then a script is run to make a backup ISO image of the disc.
Morality of Ripping
Two Evils: Piracy vs. DRM
I am for neither Piracy or DRM. Where I stand morally is I make sure we own every CD, DVD, and Blu-Ray that we rip using the ARM.
I don’t advocate piracy. It is immoral for people to make copies of movies and audio they don’t own. On the other hand there is a difference between Piracy and copying for fair use which publisher’s often wrongly lump together.
What really frustrates me is DRM. It’s waste of time. I shouldn’t have to mess with region codes, and have to use software like MakeMKV to decrypt a movie that I bought! And unfortunately the copy-protection methods in place do nothing to stop piracy and everything to hinder legitimate customers.
For me it doesn’t really even matter because I don’t really like watching movies anyway–there’s not much more painful than sitting for an hour to get through a movie. I just like making automatic ripping machines.
Well, hope you enjoy the ARM.