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 its tasks (other than inserting the disk). Once it completes a rip it ejects the disc for you and you can pop in another one.
Automatic Ripping Machine Features
- Determines if disc is Video, Data, or Audio
- If video get the Title
- Determine if it’s a TV or Movie
- Rip using MakeMKV
- Send rip to Handbrake and eject disc asynchronously
- When done transcoding tell Emby to rescan library, or send notifications using PushBullet or IFTT
- If audio CD – rip to mp3 or flac using abcde and eject
- If data disc make an ISO backup
- Can rip from multiple optical drives simultaneously
- Completely headless design–no graphical interface. The only interaction is inserting the disc and it takes it from there, ejecting it when done.
- Can send push notifications to your phone using Pushbullet or IFTT.
Free Software
I uploaded the scripts to GitHub under the MIT license. Since then quite a few contributors have made many improvements. Now the ARM has been rewritten in Python and has a number of options to customize the way different people handle media.
It was originally designed for headless Ubuntu LTS, but people have gotten it to work on other distributions.
ARM Equipment & Hardware
Blu-Ray Hardware and VMware Settings
A WARNING ABOUT SOME BLU-RAY DRIVES
Most Blu-Ray drives have an anti-feature called “riplock” where it will purposefully cripple the read-speed on DVDs and Blu-Rays to around 2X to 4X instead of the advertised drive speed (I believe this to be false advertising). If you have a normal 5 1/4″ drive bay I suggest getting the LG WH16NS40 16X blu-ray drive since it is known to not be speed limited. LG seems to be one of the better drive manufacturers in my experience.
You will need a server. You can use Ubuntu on bare metal or run it under VMware (some have gotten it to work under Proxmox). I am using my Datacenter in a Box Build and run the ARM on Ubuntu Linux 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. Unfortunately my server case only has a slim-DVD slot on it so I’m using an LG BT30N (these can be found on eBay).
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.
Regions…
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
Please follow the instructions in the README.md file in the GitHub repository.
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 TrueNAS I created a media folder on my data share at \\truenas\data\media
sudo apt-get install cifs-utils
Edit /etc/fstab
\\truenas\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
Configure ARM Settings
Configuring ARM is not for the faint of heart. You probably should know Linux really well… and the distros keep changing things around so use the recommended distributions and versions in the README file.
You should look over the config file to make sure it suits your needs, if you want to add Android or iOS push notifications, trans-coding options, subtitle options, etc. that’s where to do it.
Figure out how to restart udev, or even better, reboot the ARM server (make sure your media folder gets mounted on reboot). You should be set.
How to use the Automatic Ripping Machine
- Insert Disc.
- Wait until the A.R.M. ejects the disc.
- Repeat
Test out a movie, audio cd, and data cd and make sure it’s working as expected. Check the logs. 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 ended up purchasing a license key for myself.
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"
Get an OMDB API Key
Next you’ll want to get an OMDB API key and put it in your ARM config file. A free key will let you do 1,000 API queries a day which should be more than enough: http://www.omdbapi.com/apikey.aspx
How it Works?
When UDEV/systemd detects a disc insert 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)
For video discs the first step is ARM tries to obtain the disc title. If it’s a blu-ray it can often be extracted from the disc, if it’s a DVD we calculate a hash of the DVD and then query Windows Media Metaservice (which is what Windows Media Player queries when a disc is inserted) to get the title.
Once the title is obtained we send that to the OMDB API which will tell us whether the video is a Movie, or a TV Show. If the video is a Movie ARM can usually determine the main title feature, and rip that. And optionally rip all the other titles into an Extras folder. Once done ARM can automatically tell Emby to rescan the library. If the video is a TV Show ARM will rip all the titles and you’ll need to use Filebot to rename the shows.
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.
Most of the time everything just works, but in some cases if ARM can’t determine the title some video file renaming 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.
Audio CDs
If an audio track is detected it is ripped to a FLAC file (or mp3 or whatever you want) 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 ARM determines there is no video on the disc, then a simple script is run to make a backup ISO image of the disc.
What about the stuff that fails?
So, I built the ARM with the 80/20 rule in mind. My goal was it to automate 90% of my rips. There are always oddball discs that don’t quite work right or need to be handled manually. Here’s a good article with a comparison of ripping software by the TheSweetBits that will do that job.
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.
So is this something you buy? I’ve been frustrated with some of my DVDs not working in my iMac DVD player. Maybe this is the answer.
Unfortunately you can’t buy it, you have to build it. I have the same frustration, some of my movies won’t play in a DVD/Blu-Ray player. Sometimes they’ll play but the chapters are all out of order. My theory is the newer movies get updated with newer technology so you have to keep buying newer players every year to keep up. My Automatic Ripping Machine processes them fine so far.
Your process seems pretty neat, I’ve been looking for a way to automate. I stumbled across this:
GitHub: https://github.com/JasonMillward/Autorippr
Install: http://docs.jcode.me/autorippr/
For movies and TV series, it seems to take your method one step further. Maybe you should take a look at it and it could improve your setup possibly…
I’m currently testing it, but running into a couple of issues, but it could be because I’m running it in VM on top of Windows…
So just an update, I wrote a script to install the above autorippr to make it easier and I did get it functioning. Now I just wish we could somehow combine your project and the one I referenced. Because the other project only handles movies/tv series and automates the naming function that yours does not. But your process handles CD’s and data discs. So if we could somehow combine them, it would be amazing!!!
Just a thought…
Good find, Steven! It looks like Jason’s Autoripper is pretty advanced … taking a quick look at his setup all you’d need to do to combine them is edit my identify.sh script on line 13 and replace the call to “/opt/arm/video_rip.sh” with “python /whereveryouhaveitinstalled/Autorippr/autorippr.py –all –silent ”
Let me know if you try it!
Question about your script, do you have to transcode? Or is there a way you can disable it? The reason I ask is because I don’t want to compress, I want to store it lossless. I haven’t yet tried your script, but thinking about doing so soon. Because I have a feeling I may have to name things manually after all anyways…
Have you thought of building an install script? I built one for Autorippr, I could also build one for yours…
In video_rip.sh comment out this line to prevent it from Transcoding. That will result in the raw MakeMKV files.
# echo /opt/arm/video_transcode.sh $DEST $ID_FS_LABEL $TIMESTAMP | batch
Is FileBot not going to be a fully automatic solution for renaming?
An install script would be great, feel free to do a pull request on GitHub for your install script and if it looks okay to me I’ll merge it in.
Tired using this and it keeps kicking the disc out (dvd). Sometimes it will use make mlb but doesn’t pick up the correct tracks and just does the extras.
Hi, Cliff. Sorry it’s not working right. Does the ejecting disc issue happen on every DVD or just a certain ones? Is this a clean (undamaged) disc? It should rip every track including the main track. Can you try ripping manually in MakeMKV to see if it works there? If it fails in MakeMKV it’s likely an issue with decryption, or a damaged disc. If it works manually can you post the output of /opt/arm/log and I’ll see if I spot anything that could determine where the issue is. Also after inserting the disc post the output of “udevadm info -q env -n /dev/sr0” — my script uses udev parameters to decide what to do so it’s possible the disc isn’t identifying itself properly, it may be identifying itself as a disc type I’ve never come across before so my script doesn’t account for it, or it could be your particular DVD drive can’t read that information (I’m just shooting in the dark here). Feel free to post any info I could use to help troubleshoot it.
I am testing a fresh install of 16.04. Thanks for the reply.
Any idea how I can run separate scripts for /dev/sr0 and /dev/sr1
Actually someone else modified the scripts to support multiple devices. He should be doing a GitHub pull request soon so if you can hang tight it will be merged in soon… if you can’t wait, UDEV is already passing in the device as DEVNAME aso you can change the scripts yourself so that every reference from /dev/sr0 to ${DEVNAME} … so for example on data_rip.sh you’ll need to change:
makemkvcon mkv dev:/dev/sr0 all $DEST -r
to
makemkvcon mkv dev:${DEVNAME} all $DEST -r
You’ll also want to make sure every command where I didn’t specify a device (like eject, abcde, etc.) is passed the ${DEVNAME} parameter.
Hi, Cliff. I just merged in the Pull Request from muckngrind4 which adds multi-drive support.
Thanks. I will check it out.
So I am up and running with the new settings. Great work! Now my only problem is who’s script to use in the back end. Yours or Don Melton’s. Don’s creates a little bigger file then yours.
I have ran into a unique problem. I have videos that are .avi format and the disc is formatted as a UDF. So far the ARM keeps kicking the disc out. Looks like it doesn’t know how to handle the file since it’s looking to send UDF’s to the MakeMKVCON. Can you help me write a IF statement to copy the avi files to the destination folder?
Can you insert the disc with an AVI on it and run
udevadm info -q env -n /dev/sr0 (or whatever your device is)
and paste the output here? You might need to comment out the eject command in the script. I’m hoping we can find some way to differentiate your UDF AVI discs and UDF movie discs.
DEVLINKS=/dev/disk/by-uuid/1002062420554446 /dev/dvdrw /dev/disk/by-label/Mar\x2031\x202016 /dev/cdrw /dev/dvd /dev/disk/by-path/pci-0000:00:1f.2-ata-2 /dev/disk/by-id/ata-PLDS_DVD+_-RW_DS-8ABSH_23HW67363943P51UDA00 /dev/cdrom
DEVNAME=/dev/sr0
DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sr0
DEVTYPE=disk
ID_ATA=1
ID_ATA_SATA=1
ID_ATA_SATA_SIGNAL_RATE_GEN1=1
ID_BUS=ata
ID_CDROM=1
ID_CDROM_CD=1
ID_CDROM_CD_R=1
ID_CDROM_CD_RW=1
ID_CDROM_DVD=1
ID_CDROM_DVD_PLUS_R=1
ID_CDROM_DVD_PLUS_RW=1
ID_CDROM_DVD_PLUS_R_DL=1
ID_CDROM_DVD_R=1
ID_CDROM_DVD_RAM=1
ID_CDROM_DVD_RW=1
ID_CDROM_MEDIA=1
ID_CDROM_MEDIA_DVD_R=1
ID_CDROM_MEDIA_SESSION_COUNT=2
ID_CDROM_MEDIA_SESSION_NEXT=2
ID_CDROM_MEDIA_STATE=appendable
ID_CDROM_MEDIA_TRACK_COUNT=2
ID_CDROM_MEDIA_TRACK_COUNT_DATA=1
ID_CDROM_MRW=1
ID_CDROM_MRW_W=1
ID_FOR_SEAT=block-pci-0000_00_1f_2-ata-2
ID_FS_LABEL=Mar_31_2016
ID_FS_LABEL_ENC=Mar\x2031\x202016
ID_FS_TYPE=udf
ID_FS_USAGE=filesystem
ID_FS_UUID=1002062420554446
ID_FS_UUID_ENC=1002062420554446
ID_MODEL=PLDS_DVD+_-RW_DS-8ABSH
ID_MODEL_ENC=PLDS\x20DVD+\x2f-RW\x20DS-8ABSH\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20
ID_PATH=pci-0000:00:1f.2-ata-2
ID_PATH_TAG=pci-0000_00_1f_2-ata-2
ID_REVISION=AD11
ID_SERIAL=PLDS_DVD+_-RW_DS-8ABSH_23HW67363943P51UDA00
ID_SERIAL_SHORT=23HW67363943P51UDA00
ID_TYPE=cd
MAJOR=11
MINOR=0
SUBSYSTEM=block
TAGS=:systemd:seat:uaccess:
USEC_INITIALIZED=1159718
Thanks, Cliff. Unfortunately UDF data discs and video discs are indistinguishable in udev as far as I can tell. However, I think, that all video DVDs, have a VIDEO_TS folder, so the script might be able to check for the existence of a VIDEO_TS folder and if it has one send it to MAKEMKV, if not to the data rip script. I’m not sure if there’s a similar method to determine whether a Blu Ray disc is data or video, if there is it should be an easy modification to the identify.sh script. I’ll try to dig up a few of my Blu Ray discs this weekend to see if there’s a way to distinguish those from data blu-rays.
You might also want to add the device name into abcde commandline too, so
abcde
goes to
abcde -d $DEVNAME
As I had a slight issue when my external drive decided to get device name /dev/sr1 rather than /dev/sr0
Thanks, for the heads up Martin. Pulled in Derek’s fix: https://github.com/ahnooie/automatic-ripping-machine/commit/eb9555f3d2d68f2b92d707f9098f2fcd84e69a7e
Hi, Cliff. Thanks for your patience. I was able to confirm all DVDs have a VIDEO_TS and all BluRays should have a BDMV folder so I’ve added a check to distinguish video from data for UDF formatted discs. https://github.com/ahnooie/automatic-ripping-machine/pull/5/files Thanks, Ben
Thanks Ben. I will check it out soon.
Hi Ben, I’d like to use your ARM on a dedicated hardware. Can you suggest some simple and cheap hardware that can run in a minimalistic case (so it doesn’t get too hot in the case but has enough power for transcoding BluRays)?
Hi, Reinhard. I’m using this build: https://b3n.org/supermicro-x10sdv-f-build-datacenter-in-a-box/ it’s using a Xeon D-1540 SOC CPU that provides the power of a Xeon but runs cool. I got the 8 core version but you can also get that motherboard in a 6C, 4C or 2C to save money. I think the Xeon D series is a good balance between running cool without losing performance (which is what would happen if you went down to Atom class). The case I got is meant for NAS and only has a slot for one optical drive so you may want to find a different case (maybe one that can hold multiple drives) for it depending on your needs.
Very handy bit of integration you have done. For a cheap but slow dedicated box to run it on I wonder of you could use a Raspberry PI ? It would be slow compared to a Xenon etc, but it has the advantage it is cheap and uses little power and runs cool…
Hi, Rob. I’m not sure that MakeMKV or Handbrane can run on an ARM processor. You’ll probably be better off with x86 architecture, I haven’t tried it myself but maybe the: Intel Compute Stick I’m not that familiar with Handbrake’s settings but you might be able to change the preset from “High Profile” to “Normal” to save time encoding… I honestly can’t tell the difference in quality between the two.
I’m really frustrated. Your ARM does not work with my DVDs. I’ve “The Simpsons” and “Elsa the Snow Queen” here and when inserting the DVDs they get ejected immediately. Lost in space I’ve set the region code to 2 (I come from germany), which seems to be not necessary. Looking with udevadm there is no ID_FS_TYPE and no ID_FS_LABEL for these video DVDs. But a self-burned DVD-R show these attributes. What’s wrong there?
Hi, Reinhard. So far I have not run across a single DVD without IF_FS_TYPE. My wife happens to have “Frozen” on DVD (which she thinks is the North American version of “Elsa the Snow Queen”, I just popped it in and it does have the ID_FS_TYPE. I wonder if the ID_FS_TYPE field is named something else in some regions? If the variable is a different name I can add that to the check, or if it’s missing entirely I can change the script to use another method to identify the type like checking for the existence of a VIDEO_TS or BDMV folder to identify it as a video.
Can you do me a quick favor and post the log that gets created when you insert The Simpsons or Elsa the Snow Queen? It should be in /opt/arm/logs and probably is called empty.log if it’s not picking up a ID_FS_LABEL. Can you also make sure makemkv is able to rip it successfully? Use this command replacing /dev/sr0 with your device: makemkvcon mkv dev:/dev/sr0 all “/tmp/” –minlength=120 -r
Here’s a sample of the log I want:
Deleting 0 old log files:
DEVLINKS=/dev/disk/by-uuid/2014-01-21-12-23-52-00 /dev/disk/by-id/ata-VMware_Virtual_IDE_CDROM_
Drive_10000000000000000001 /dev/cdrom /dev/disk/by-label/FROZEN /dev/dvd /dev/dvdrw /dev/cdrw /
dev/disk/by-path/pci-0000:00:07.1-ata-2
DEVNAME=/dev/sr0
DEVPATH=/devices/pci0000:00/0000:00:07.1/ata2/host1/target1:0:0/1:0:0:0/block/sr0
DEVTYPE=disk
ID_ATA=1
ID_ATA_FEATURE_SET_PM=1
ID_ATA_FEATURE_SET_PM_ENABLED=1
ID_BUS=ata
ID_CDROM=1
ID_CDROM_BD=1
ID_CDROM_CD=1
ID_CDROM_CD_R=1
ID_CDROM_CD_RW=1
ID_CDROM_DVD=1
ID_CDROM_DVD_PLUS_R=1
ID_CDROM_DVD_PLUS_RW=1
ID_CDROM_DVD_PLUS_R_DL=1
ID_CDROM_DVD_R=1
ID_CDROM_DVD_RAM=1
ID_CDROM_DVD_RW=1
ID_CDROM_MEDIA=1
ID_CDROM_MEDIA_DVD=1
ID_CDROM_MEDIA_SESSION_COUNT=1
ID_CDROM_MEDIA_STATE=complete
ID_CDROM_MEDIA_TRACK_COUNT=1
ID_CDROM_MEDIA_TRACK_COUNT_DATA=1
ID_FOR_SEAT=block-pci-0000_00_07_1-ata-2
ID_FS_LABEL=FROZEN
ID_FS_LABEL_ENC=FROZEN
ID_FS_TYPE=udf
ID_FS_USAGE=filesystem
ID_FS_UUID=2014-01-21-12-23-52-00
ID_FS_UUID_ENC=2014-01-21-12-23-52-00
ID_MODEL=VMware_Virtual_IDE_CDROM_Drive
ID_MODEL_ENC=VMware\x20Virtual\x20IDE\x20CDROM\x20Drive\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20
ID_PATH=pci-0000:00:07.1-ata-2
ID_PATH_TAG=pci-0000_00_07_1-ata-2
ID_REVISION=00000001
ID_SERIAL=VMware_Virtual_IDE_CDROM_Drive_10000000000000000001
ID_SERIAL_SHORT=10000000000000000001
ID_TYPE=cd
MAJOR=11
MINOR=0
SUBSYSTEM=block
TAGS=:uaccess:seat:systemd:
USEC_INITIALIZED=1419132
identified udf
found FROZEN on /dev/sr0
identified udf as video
Obtained Title Frozen (2014)
…
Thanks,
Ben
Thanks for your reply. You’re right, the correct ID_FS_LABEL is “FROZEN”, also here in Germany. I’ve tested a bit more. My host system is OpenMediaVault 3 (based on Debian 8), aka OMV. Running udevadm on host system returns ID_FS_LABEL/TYPE for some video DVDs (like “Rio” and “Dora the Explorer”), but not for all (like Frozen or The Simpsons, where these information are missing). Inside OMV I’ve setup Virtualbox and a guest machine using Xubuntu. When passthrough the DVD drive to the guest, all is fine!?!? Inside the virtual machine I can query ID_FS_LABEL/TYPE for “Frozen” and “The Simpsons” via udevadm. But not on host!? That’s weired having a virtual machine installed to run ARM instead of running it on host directly.
It seems, that there is no way to let headless Debian 8.6 read these encrypted DVDs. On Ubuntu 16.04 all is fine and get can ID_FS_LABEL from the related DVDs so you scripts can work. But I’ve found a workaround:
root@baldur:~# dd if=/dev/sr0 of=dvd.iso bs=512k count=1
1+0 Datensätze ein
1+0 Datensätze aus
524288 Bytes (524 kB) kopiert, 1,47543 s, 355 kB/s
root@baldur:~# blkid -p dvd.iso
dvd.iso: UUID=”2014-02-13-13-08-58-00″ LABEL=”FROZEN” TYPE=”iso9660″ USAGE=”filesystem”
root@baldur:~# dd if=/dev/sr0 of=dvd.iso bs=514k count=1
1+0 Datensätze ein
1+0 Datensätze aus
526336 Bytes (526 kB) kopiert, 1,38484 s, 380 kB/s
root@baldur:~# blkid -p dvd.iso
dvd.iso: UUID=”2014-02-13-13-08-58-00″ LABEL=”FROZEN” TYPE=”udf” USAGE=”filesystem”
As you can see, when reading raw 514kB of the DVDs which do not return ID_FS_LABEL under Debian, one can get label and type from this block. So, a solution could be to replace the grep for ID_FS_LABEL from udevadm with above snippet.
Good find, Reinhard. Before looking at implementing the blkid for Debian, I’m wondering if you need to install some extra codecs or decryption libraries. Do you have these packages installed? https://wiki.debian.org/MultimediaCodecs and https://wiki.debian.org/CDDVD#DVD and https://packages.debian.org/sid/utils/libdvd-pkg
G’day mate.
Having a little problem with the final copy.
Ive set the armpath to /armtemp/ and rawpath to /raw/ as I wanted to keep all the “working” files local, then media_dir is the mounted samba share from my actual media (plex) server.
I seem to send up with a properly named folder in /armtemp/ but thats it. The first DVD I tried was American Beauty (hey, im starting a whole collection alphabetically) the folder /armtemp/American Beauty/ has three random mkv files in it.
Can you paste the output of the log so I can see where it is failing? It should be in /opt/arm/logs/
Sure, they are installed in the latest version from backports repository. But as I’ve said, the libdvdcss2 seems to be needed only if you want to play a DVD in a movie player on desktop. “Native” access on the shell bypasses this library so it does not seem to be needed.
When there is little time, I’ll try this approach and if makemkv can handle these DVDs now, when your scripts are able to detect the correct content type.
Sounds good, let me know what happens. If it doesn’t we can look into adding the blkid for Debian (if you would like feel free and make the change and do a pull request and I’ll merge it in–I’d just want some logic in there to check to make sure the OS is debian or a flag to enable blkid identification method).
I assume you just want the last ‘bit’?
x264 [info]: Weighted P-Frames: Y:2.7% UV:0.9%
x264 [info]: ref P L0: 62.1% 12.1% 18.1% 7.5% 0.2%
x264 [info]: ref B L0: 84.4% 13.8% 1.8%
x264 [info]: ref B L1: 94.9% 5.1%
x264 [info]: kb/s:1054.98
[02:00:25] ac3-decoder done: 0 frames, 0 decoder errors, 0 drops
[02:00:25] ac3-decoder done: 0 frames, 0 decoder errors, 0 drops
[02:00:25] mux: track 0, 252948 frames, 1334155422 bytes, 1054.88 kbps, fifo 4096
[02:00:25] mux: track 1, 474279 frames, 202596954 bytes, 160.19 kbps, fifo 8192
[02:00:25] mux: track 2, 316187 frames, 485663232 bytes, 384.00 kbps, fifo 4096
[02:00:25] libhb: work result = 0
Encode done!
HandBrake has exited.
Nothing here…
STAT: AMERICAN_GANGSTER transcoded in 5 hours, 32 minutes and 14 seconds.
Pushbullet notifications not enabled
IFTTT notifications not enabled
I’ve uploaded the full log here: http://dsotp.net/misc/americangansta.txt
The thing that did occur to me was perhaps Plex’s scanner killed the copy? Although I can copy manually,
cp American\ Gangster\ \(2008\)/ /mnt/media/American\ Gangsta\ \(2008\)/ -r
But a ‘regular’ user and Sudo can copy/write to the network drive fine.
Is having /armtemp/%movie title%/Random file name.mkv, Random file name.mkv, Random file name.mkv correct?
Also, now that I’ve finally had a chance to look at the files – Random file name.mkv and Random file name.mkv (which are actually title00.mkv and title01.mkv) are just two copies of the file, one twice the size of the other)
I think it’s working properly. It will drop files named {title}{nn}.mkv file in a folder, the individual files will be named the title name found on the disk (which is often just “title”) plus the ripped track number, and the folder is named the “video title (year)” if it can determine the title and year, otherwise it will be named the label on the disc which may or may not resemble the name of the video. What I will usually do is create an “Extras” sub-folder for the movie and move all the bonus tracks in there.
Ahh – ok, so it doesnt seem to be making the Extras folder. I noticed with American Gangsta, it had two copies on the ‘Making of’ as title01 and title 02.
I wonder if the script could be amended to rename the main feature file?
Or an option to not do any extras?
There is already is an option to not rip extras. In the config file set MAINFEATURE=true and RIPMETHOD=”backup” and you’ll get just the main feature.
When ripping all tracks it isn’t smart enough to know which titles are extras, I have to manually make an extras folder and move the bonus features in there.
Ahh – righto.
And thanks for the tip re: backup/mainfeature
And one last one. I assume DVD_VIDEO is the result of getmovietitle.py just not finding anything?
Is “DVD_VIDEO” the name of the folder it put the Titles in? If so yes. If getmovietitle.py can’t get a match then it grabs the label off the DVD. Sometimes the label on the DVD resembles the name of the video, sometimes it’s something generic or random. The movie industry has very little, if any consistency in how they label discs which is why we went to the getmovietitle.py method.
I want to rip to mp3 and flac. Any idea how to do it?
Hi, Cliff. Make two abcde config files, say /root/.abcde.mp3.conf and /root/.abcde.flac.conf and set the OUTPUTTYPE in each file to mp3 and flac respectively. Then on identify.sh find this line:
abcde -d “$DEVNAME”
And change it to:
abcde -d “$DEVNAME” -c /root/.abcde.mp3.conf
abcde -d “$DEVNAME” -c /root/.abcde.flac.conf
Hi Reinhard, gute Arbeit! I also run a OMV, mine is still version 2.2.13 based on kernel 3.16. I would think about upgrading my OMV if it is confirmed that the automatic ripping machine works with it. I would also be interested in how to run a virtual machine on the OMV. On my other PCs (and Mac) I run Lubuntu.
I stumbled across an awesome thing today which needs more spreading: mp3fs. This is a package that mounts a flac-folder as mp3. Just rip to flac and then mount the folder via mp3fs if you need the mp3. This way it is always in sync! https://khenriks.github.io/mp3fs/
That’s creative!
@Benjamin (bvrulze) I think I’ll implement another solution. I’m going to use Docker for some add-ons for OMV (VirtualBox consumes too much ressources in my opinion) and with Docker it’s also able to use Ubuntu as “client” OS in Docker container. It’s a hard way to get ARM running in this environment and I think I’ve got a first solution (without working email notification), but I’m still not happy and working on it.
Hey Reinhard, I also had this solution in mind and successfully installed the docker GUI and “pulled” a handbrake-cli image for usage with docker. But I have no idea how to use this since I have no experience with docker. Ryecoaaron from the OMV forum told me that docker is more for “running services” and he uses handbrake inside a VM (http://forum.openmediavault.org/index.php/Thread/12552-Is-it-possible-to-install-handbrake-cli-on-omv/).
I have added a pull request to add additional functionality :D
Adds support for Plex File naming and MakeMKV Profiles! It’s working great in my setup!
Merged in your PR, thanks RandomNinjaAtk!
Any idea on how to make the 5.1 surround the default track? Don Melton’s script does it.
Hi, Cliff. If you pull down master (I should warn you that master has had a lot of changes recently and has not been fully tested so it may be a bit buggy, we’re hoping to get a few more features in and have it fully tested for a stable release in the next month or two) we’ve added an “HB_ARGS” parameter to the config file so you can put in your own HandBrake arguments, I’m not sure what needs to be put in but maybe this thread would help https://www.reddit.com/r/techsupport/comments/14wa9h/handbrake_experts_cli_question/ (perhaps “-a 3 2 1” ?)
The problem is I don’t know if the 5.1 audio track is always the 3rd track. I only have a mono-speaker (stereo and surround give me a headache) so it’s not something I even thought about, but if we need to make code changes I’m all for getting that feature in as I’m sure most people would want that ability.
If this doesn’t work we can take a look at what Don Melton is doing, or even add an option to call his scripts for transcoding, I’m not sure if he’s using HB or something else for transcoding.
Ben
Thanks for the reply Ben. I looked at this information before I wrote on this page and asked this question. I came to same conclusion that I am not sure it’s always the 3rd track. I am not too good with the scripts but early on I was calling his scripts with your scripts. But updating your scripts and his was a headache to keep them working. i like your scripts but his are pretty advanced and calls for surround as the first audio track. Thanks for the help.
Firstly, awesome guide and kudos to all of the work you’ve put in. I tried the install this evening. Everything seemingly went well with the install, however, I’ve put in two separate DVDs and got the same error shortly after putting the disc in the drive: ‘Scsi error – MEDIUM ERROR:UNRECOVERED READ ERROR’. I have this running on an Ubuntu 16.04 virtualbox on a Windows 10 host. I can run MakeMKV on the same disc with no issues on the host and extract the entire movie.
Any idea what might be going on here? The discs are not scratched and play just fine in various players. Thanks for any assistance.
Hi, Brad. The ARM is now using HandBrake instead of MakeMKVs to rip DVDs (MakeMKV is still used for BluRays), can you see if trying to rip it manually using HandBrakeCLI produces any errors? Also, can post your config file and the output log (under /opt/arm/log?)
Ben, If the script is altered to RIP first using MakeMKV and then convert the existing file, you can solve this because you can use MakeMKV’s profile to select the audio desired, ie 5.1 or 2.0 or combination of both…
Now I love this as I have a big music and dvd/bluray library I would like to digitize and will definitely try this out especially if I can get multi drives to work.
I would love to see the reverse as an option, if I had an ISO I could burn it using multi burners, as I do filming for schools and have to produce 50+ DVDs at times of the year and it could same me a huge amount of time burning 5 at a time and being able to utilize the same system for ripping and burning would save me a bunch of cash as well
Auto-burning is a completely separate type of process so I wouldn’t add it to the auto-ripping machine, but it should be much simpler, you would probably just need to figure out what the command line is to burn an ISO and write a script to check a folder and if an ISO is present, burn it for each new disk that’s inserted.
Also what are the minimum specs required for this as I have a few old PC’s kicking around and would love just to RIP and not convert for now
Requirements should be very minimal if you’re not transcoding. You probably want a x86 or x64 CPU, even an old one should work, and 1GB memory (512 might work). You technically should be able to transcode on older hardware, it would just take a long time.
How would one go about adding multi language and subtitles to my file that comes out of handbrake?
Should just be a matter of customizing HB_ARGS in your /opt/arm/config file.
Here is what mine looks like which brings in subtities from every language, but makes the default subtitle track the one in my native language only when people are speaking a foreign language, and all English audio tracks (my wife likes to watch the directors cuts), you can probably just use what I have below and remove “–audio-lang-list eng” to pull in all languages.
HB_ARGS=”–native-language eng –subtitle scan,1,2,3,4,5,6,7,8,9,10 –subtitle-default=1 –subtitle-forced=1 –audio-lang-list eng –all-audio”
Also, see: https://handbrake.fr/docs/en/latest/cli/cli-guide.html
Thank you so much for the reply. I was not sure where to start looking, if it was MakeMKV or Handbrake that i needed to adjust. One last question, Is there a easier way to handle TV shows? When they get ripped they just get placed in the movies folder and then I have to watch the first video in the folder and compare that to the DVDs to be sure they are labeled correctly. The raw folder sometimes keeps the disk number and season number. Sorry for the questions I’m not a programmer but I have tied looking at the code but its over my head.
You’re welcome. TV Shows are pretty much impossible to handle automatically. Sometimes as you saw the disc has properly labled season and episodes but it’s not consistent, sometimes even different dics in the the same TV show won’t be consistent with each other in their naming conventions, then you might also have to deal with pilot episodes, sometimes the episodes are in a different order than airdate. So for now TV Shows have to be handled manually. I use http://www.filebot.net/ which makes naming TV episodes pretty easy. @muckngind4 on Github has spent quite a bit of research on this and is working on some changes to make the TV Workflow a little easier but it’s not going to be fully automatic.
So, I tried this over the weekend and it seemed to fail, I don’t know if it was something I did or didn’t do.
Does this need to run on a Server OS of Ubuntu or can it run on the desktop version ?
Is there any way of seeing if it is working, I couldn’t see any files being generated or log files
I tried both CD and DVD and I could see the files in Mnt folder but nothing was generated elsewhere that I could see
From my experience, using a desktop install of Ubuntu seams to causing problems with detecting the disk being inserted. What you can do is run Virtual Box and then passthrough on the drives and install Ubuntu server 16.04.
its only a spare PC, ill just reload the server OS on and try it
Running on a Desktop with Ubuntu 16.04 with no problems..
So Ive managed to get the ARM to work and it rips my DVD/music fine to the default folder /mnt/media… I tried to change the path in the config file but it says I don’t have permission to save it, I followed the instructions perfectly but I can’t change any of the file permissions or files in /opt or /mnt/media
Solved it, DOH
How can I see what’s in the trans coding queue? it seems to have one stuck in there as all new disks log files end with “sending to trans coding queue” or something similar. Worked great for about 5-6 disks and then the boy (17) tried putting in like 2 or 3 disks that he wants to use that have been scratched to high heaven. Since then new disks will RIP but not transcode or move to final storage location
Hi, Craig. The ARM uses the “batch” command to queue up transcoding, you can use “atq” to view the transcode queue or ps aux and grep for Handbrake process. According to the batch man page it will hold off on running a new transcode job until the system load average drops below 1.5, I did it this way to prevent too many transcode jobs from running at the same time, it could be that you have a long running transcode process (some videos can take a long time on slower hardware…I’m not sure if a scratched disk would cause it to go slower but it could I suppose), or something else is putting load on the server to keep the average above 1.5 which would prevent any new transcode jobs from executing.
You can use atrm [job number] to remove jobs from the queue or you may need to kill the video_transcode.sh script. If all else fails a reboot should clear it.
As always thanks so much for your quick replies … I think it’s because I am doing too much with low end hw lol (It’s more fun to blame the teen) hopefully last question, I have a few in the raw folder that did not transcode (still shows sent to transcoding in the log) but atq returns nothing. (I did have 4 that completed over night) Would it be easier to delete them or is there a script/command I can just kick off to put them back in the queue?
Again, you have been amazing for support on this. I’m fairly technical but new to linux (even though most of my stuff at home now runs on linux)
disregard .. forgot to sudo atq the system is just slow (hardware issue) I need to see if I can beef it up or put on a different machine. Thanks again
You’re welcome, glad you enjoy it! So it’s working through the queue very slowly? You could try changing the HB_PRESET in the config from “High Profile” to “Normal” and that should speed up transcoding a little. The quality will be slightly less but you probably won’t even notice.
This worked great on my ESXi host but I would like to give it a try on my Proxmox server. Has anybody here been able to get it to work in a VM or Container under Proxmox?
I haven’t tried it under Proxmox, if you try it let me know how it turns out!
I have stumbled upon a quick way to encode movies up to 1000+ fps using my gtx 960m in my all in one PC. I’m not sure if there is a way to integrate this into your project but if you could, it would speed up encoding times greatly. https://github.com/stax76/staxrip
Wow, that’s impressive! I’ll look into it.
Anyway to get MakeMKV to work past the 30 days. I put a new key in the file and it still won’t work.
It should work, make sure you’re putting it in /root/.MakeMKV/settings.conf and not update.conf, also app_Key is case sensitive, and there must be quotes around the key.
I ended up purchasing a key so I don’t have to pop it in every time it expires.
Ben
Thanks, this is awesome.
A couple thoughts:
1. I find ‘watch ls -al /media//arm/raw/*’ useful for tracking makemkv progress
2. It might be fun to try and modify this with a hardware transcoding option via ffmpeg. Now to find some time for fun…If I ever do, I’ll let you know
3. staxrip looks cool except for that pesky .net
Thanks again for your awesome work on this.
If you do get ffmpeg working we can add it as a transcoding option. Handbrake does make it easy to do some neat things like only transcode only audio tracks in native language, get all the subtitles but only make the forced subtitle the default, identify the main feature of a movie, etc.
I just realized it runs on .net, so that kinda kills that idea. But maybe there would be useful tech there.
.NETis a possibility with .NET Core being open sourced. But it would add another language dependency to the ARM.
It looks like Handbrake supports some HW acceleration such as Intel QuickSync (might need a Skylake CPU) that the staxrip project takes advantage of… https://handbrake.fr/news.php?article=37 One thing I have read in various forums is that while hardware accelerated encoding is faster, the quality isn’t quite as good. Probably not noticeable but something to consider.
I can’t tell a difference when Plex does it, except of course for the efficiency.
I’ll have to look into handbrake hardware acceleration. My Google skills did not net me the link you found, so I didn’t think it was possible.
Thanks. Old instructions I found had me putting .MakeMKV/settings in my home directory. Once I put it in root it worked fine.
Anyone having problems with hard drive space being eaten up? I am on Ubuntu 14.4 and my drive is down to 13gb from 120gb. My saved movies are going to an external drive. I cleaned all my apt-get clean, autoclean and autoremove.
I have noticed my BD backups aren’t being deleted when I use mainfeature. Check your raw folder for files that may not have been deleted.
I think cleanup isn’t working right if you do mainfeature with BluRay right now. I am working an a 3D MVC support pull request (if Ben will have it), and I noticed that the script is using rmdir, but not deleting the individual files first. rmdir can’t delete a non-empty folder, so we should probably use rm -rf here.
A question for Ben: What is the reason for the “backup” restriction for BD main feature?
Based on my usage of the Handbrake GUI, I have always been able to do with with an mkv. Based on this, I modified the scripts to allow it and it seems to be working fine. The reason it matters is for 3D support, where I want to rip 3D including the MVC channel, transcode from that mkv for 2D and remote playback, and then keep the mkv file for 3D playback via Kodi on Raspberri Pi.
So far, it all seems to be working, I just want to test a bit more before doing a pull request.
Yep, I’d be happy to accept that PR Marty as long as my 2D rips keep working. |:-) Also if you don’t mind fixing the rmdir while you’re there that would be great. I don’t actually use mainfeature myself since my wife likes to have all the extra tracks. I didn’t write that part, but I thought the reason for the backup restriction on main feature is because Handbrake is being used to identify the main feature and it doesn’t know how to do it with MKVs. Is that not the case? If you want to ask the question on a GitHub issue and mention @muckngrind4 he might be able to respond with a better answer since he wrote that part.
I’ve already fixed the cleanup code in my scripts, so I’ll include that in the PR.
I’m guessing the restriction is historical, like perhaps Handbrake didn’t used to be able to do it. It definitely seems to be working now.
Is there a way to make this a simple install script? I need to run it from a LiveUSB as when installing the OS on the PC I want use it will not see all my CD drives due to the SATA card I have in there using the LiveUSB sees them all and works fine. any ideas ?
Sorry for the lack of pull requests. I ran into a couple minor things I want to clean up, but I’ve been very busy at work. Hopefully I’ll find some time soon.
On a side note, the ‘-e qsv_h264’ option did not cause HandBrakeCLI to choke at the very least. Everything I read online says it is a Windows only option, so I’m somewhat expecting that it is mapping over to the standard h264 option in linux, but I’ll examine transcode times and logs to verify.
I’m curious, what sort of transcode times are you generally getting for a DVD?
Well, that answers that: https://github.com/HandBrake/HandBrake/pull/648
It’s nice that the command line flag doesn’t break things, at least I can prepare my arm config to try this out when I have time, or when 1.1.0 rolls out, whichever comes first.
Hello,
I know that this is an old(er) post but I am having trouble with the notification section… I’ve tried both the IFTTT and Pushbullet keys but I’m not being notified of anything. Any help will be greatly appreciated.
Never mind both have started working randomly…
Good to hear. |:-)
Hello,
how can I change the audio language, cause while ripping after the coppy process, he removes all the different languages, and I will keep them.
thank you
BR
Bernd
First of all,
Thank you for all your work and support.
I’ve set this up on a fresh Ubuntu 16.04 install and am having some trouble
Audio discs work as expected
Both DVD and Blu-ray fail as described below:
Files appear in /mnt/media/ARM/raw folder as expected
These files appear to be complete
Directories for the discs are created at mnt/media/ARM are created including extras subdirectories as applicable.
The issue is that no files are in the directory.
Once ‘transcoding’ is complete the directories in the /mnt/media/ARM/raw folder are removed.
Hi, Russell. That seems odd, can you try manually running MakeMKV to see if it can rip a disk? Also any log info in /opt/arm/log?
Hi, Ben, and thanks for the great work to get this to where it is.
Can you elaborate on the way that the transcode process is called and how it determines whether or not to run a job?What system load average are you leveraging, and can I adjust it?
atq shows no information yet the media is still in the “raw” directory, and I have opted to NOT transcode files. So, they should only go through the copy/move/rename piece and I wouldn’t expect system load to impact this.
Hi, Mark. It just uses batch and the default behavior is to start the process when the system load falls below 0.8. The system load shouldn’t impact not transcoding… unfortunately it’s something I don’t test for since I always transcode so it’s possible it’s not working correctly with transcoding disabled.
Line 32 in notify.sh has a typo – it says “Pusover notifications” and should be “Pushover notifications”
Is there any documentation on how to use this feature?
I’ve run into a pretty nasty issue.
If I use the default config and put all media under a common root directory, everything seems to move through the process very cleanly and end up where it should.
I have updated the file paths so that there is a “staging” file tree for the rips, transcoding, and Unidentified media. But I have a different tree that’s used for media once completed and identified properly. The logs show the content being moved from the staging areas to the final location, and the -DIRECTORY- gets created, but the mkv file never appears in the destination as it should.
How can I at least troubleshoot this?
All storage is located on a remote server being accessed via NFS. And the actual disk is the same even though it’s being mounted through different mount points on the target server. Shares are exported with the same “rw,no_root_squash” options, and as stated – the directory gets created so it should not be a rights issue.
Hi, Mark. That’s hard to say, can you try it locally just to eliminate the remote storage as a possible problem?
I think I figured it out… I was NFS mounting a directory on a remote server and then was trying to access a subdirectory that was actually a different drive mounted underneath. NFS doesn’t share content from subdirectories that are mount points.
@RandomNinjaAtk
Mate did you end up posting the Auto Rippr install script anywhere? Could be super useful.
Benjamin, First off, Great work. I am using it on a dedicated server my self with a few tweaks to allow handbrake to use 2 different settings based on the disc. I do have a problem/concern that i was hoping you may have solved already. On some Blu-Rays like Gods of Egypt, The disc will have an obscene number of title tracks that are 24 or more gigs a piece. While i know the physical limit of the disc can’t be that big, studios apparently use it as a deterrent to ripping. Is there a way to only have the script rip the first largest track on the disc? Usually that is the one with the movie in it. Thanks again for cobbling this together.
Hi, Louis. I like to rip all tracks so my solution is I have lots of TB of storage. But there is a feature to rip only the main feature.. something like MAIN_FEATURE=true which may help, it should be in the config. You may need to play with whether or not it uses the BACKUP_METHOD as well.
Any documentation surrounding the audio portion of this? Took me a while to figure out that the output directory is controlled by the “.abcde.config” file in the /opt/arm directory and isn’t controlled by a variable like most other things in the config file.
I want to output mp3 but don’t know how your scripts are configured to call flac. Should I somehow update how abcde is called to get it to rip directly to mp3 files?
I tried modifying the abcde call in identify.sh to include a “-o mp3” but it threw errors and never ran.
Hi, Mark. This page has some sample config files for mp3. http://www.andrews-corner.org/linux/abcde/abcde_mp3.html
Hi Ben,
I just wanted to leave you a note to say how much I appreciated your DIY. While I didn’t build a fancy dedicated server to run the ARM on I was able to re-purpose a old AMD dual core Athlon X64 machine and it runs great. I had recently replaced my wife’s desktop PC with a laptop and rather than sending this old PC to the scrap head I thought I would see if it could run the software and while it isn’t very fast at ripping DVDs (I haven’t got a Blueray reader yet), it handles the task just fine. I also installed Emby and have since converted to Emby Premier. With this setup I am able to watch my video collection on my Fire TV sticks, XBOX ONE and XBOX 360 as well as access my collection from outside of the house. I am very happy with the results and so is my family. At some point I may consider upgrading the system to a faster processor with a lot more drive capacity but for a starter ARM system this computer worked out fine. If other people are wondering about hardware I would tell them to give their old PCs a try. If it has at least a dual core processor, 4GB of RAM and several hundred gigs of drive space, you will have enough to play with.
You’re welcome, Christopher. And thanks for sharing your hardware configuration. How do you like those Fire TV sticks? I don’t have a TV but I’m thinking about getting one if there’s a way it can access Emby.
The Fire sticks work great on the bedroom TVs. We watch HULU, Netflix, CBS All Access and Amaxon in addition to Emby. For the price they are a great package. I do have a question for you that relates back to ARM. I was trying to rip all of the Lord of the Rings movies and there were no problems with Fellowship and Two Towers but I got to Return of the King and though the rip worked the transcoding does not. I did some Googling and found that other folks have had the same issue and it has to do with the resulting file size coming close or exceeding 2GB (the original rip is over 7GB). It looks like there is a way to tell Handbrake to deal with this but I am not sure exactly how to do that. I was wondering if I could pass the change to the ARM config file in the line HB_ARGS=”
Hey Benjamin, really cool project right here.
I’m working on an extension of this which involves getting a robotic arm to physically move a disk from a stack, put it in a drive, run your program, and remove it afterwards.
I already have python scripts that work perfectly for the loading and unloading, so I’ve been messing around with the identify.sh script, calling my python scripts right after/before the disk ejects.
I’ve run into a fairly major hurdle at this point. The script runs fine when I physically press the tray button, but it doesn’t seem to run when I want to close the disk drive from the terminal (e.g. “eject -t (drivepath)”).
Looking closely into the log file, there does seem to be some weird behavior when I physically press the button. It seems to rip a CD successfully once, then try to rip again, not recognize the disk, and then eject.
I’m having a bit of a hard time understanding what’s going on.
I’ve attached the pastebin dump of a clean log of just one disk.
https://pastebin.com/yf17VYzc
I’m still investigating the issue with the reverse eject close tray command, but I’ve realized that the script is running twice (and failing the second time) when you do one rip because the udev rule action parameter is “CHANGE” which means it triggers on the load AND also on the eject. (I believe it tries to identify the disk type when the disk has already been ejected.)
Does anyone’s script run successfully if you run “eject -t /dev/sr0”?
With a disk loaded in the tray of course
I’m really sorry for the multiple posts, but my question actually boils down to one point.
Is it possible to run identify.sh manually on a disk drive?
Hi, David. Unfortunately you can’t run identify.sh manually, it has to be run from udev so that the udev parameters are available since udev has has info about the disc that the ARM uses. This has been sort of problematic since systemd/udev is a pain to work with so We may change this behavior in the future, but currently it’s getting values that I don’t know how to get any other way.
Are you running this on Ubuntu 16.04 LTS? There are some issues with 17.04 and 17.10. (I am planning on supporting 18.04 LTS when it comes out).
Ben,
What values are you getting via the automatic kickoff of identify.sh that you can’t get manually? The automated routine merely launches identify.sh and does not pass any command line arguments. Running it manually should be perfectly fine, especially if you update it to take a command argument of the drive (which isn’t hard to do).
There are multiple environment variables that udev gives identify.sh so that it can identify the drive such as: $DEVNAME, $ID_CDROM_MEDIA_TRACK_COUNT_AUDIO, $ID_FS_TYPE…
I think there are two ways I could solve this issue:
1. Remove the udev rule and instead add a second argument to identify.sh that provides the drive path (as you mentioned). Get the aforementioned variables by reading in the output that “udevadm info -q env -n /dev/sr0” gives you.
I’m having some difficulty with that as the output of that udevadm info command does not seem to include variables such as $ID_CDROM_MEDIA_TRACK_COUNT_AUDIO…
2. Using udevadm trigger. This seems like it would be the cleanest solution that would require the least amount of modification to identify.sh. For some reason I’m unable to trigger identify.sh with that command, so I’m still looking into that…
I’ll keep on grinding away at this…
I’m running 16.04. I’m thinking about possible mods to identify.sh. See comment below.
David,
If you follow the logic of the process, loading a disc causes the system to launch arm_wrapper.sh with no variables. arm_wrapper.sh launches identify.sh with a single variable (the path to the config file).
UDEV creates an environment variable called DEVNAME when it detects that a disc has been inserted into a drive. When identify.sh is called, it is able to pick up this variable and use it in the udevadm command to get variables about the disc that’s in the drive.
If you run udevadm monitor –property –udev and then insert various discs, you’ll see the attributes that it picks up when they are loaded in.
I wouldn’t be concerned about not getting any information in the $ID_CDROM_MEDIA_TRACK_COUNT_AUDIO variable unless you’ve actually inserted a music disc.
As far as modifying the identify.sh script, all that needs to be done is to detect whether the command line variable is a path to the config file or a device name. This can be simplified to look for a SPECIAL first command line variable (like “manual”) and then read in the value of a SECOND command line variable as the path to device to use.
Hey
This all works very well for me. Mainly ripping dvds.
Congrats on such a nice little project.
Runs really well in ESXi
One thing I would like to change is preset. I previously had created a custom preset when i was ripping and i discovered that you cant import this as such but can only load it from the handbrake cli. see –preset-import-file
Anyway I cheated a bit by simply using the default “High Profile” profile and then changing the HB_ARGS to modify the generated file to include my updated x264 settings, all audio in it’s native codec such as ac3 or dts etc. and all english subs etc. This works well as i think this gets processed last so it overwrites the values from the profile. I have verified this with mediainfo
The issue is that the built in profiles also adds a default aac track which i would like to exclude and cannot figure out a way to do this. ie. when i overwrite settings it works well but the aac track is an addition from the High Profile and there isn’t a way to say “actually don’t add that crappy aac track”
If you knew of a way to load a custom profile from within your scripts that would solve it for me.
Otherwise perhaps you have a good idea for me to try.
TIA
I dug a little more and basically removed the profile from the equation entirely by editing the video_transcode.sh script.
Still have some issues to iron out but basically it means I am using a custom command line in lieu of generic profiles.
I will update if anyone is interested once i get some more time to sort it out
One last reply.
I think i sorted it out, the audio issues were related to a typo.
Thanks again for the great scripts. Time to get busy converting all of the children’s dvds and import them into plex
Thanks, I think I’m starting to understand the architecture a bit better.
I originally thought that ALL udev variables came from the environment variables that were first passed in by the udev rule kicking in when a drive is loaded.
To be clear, you are saying that the drive path DEVNAME is the only environment variable that is being used, and the rest of the disk info is caught on line 39 of identify.sh: ” udevadm info -q env -n “$DEVNAME” >> “$LOG” ” (I originally thought this line was only used to print disk info to the log for debugging purposes)
To make this work, I would simply need to specify a DEVNAME variable for identify.sh.
I’m not sure I understand your last two sentences. Can’t I just add a second variable and call it using $2 considering the config path is called using $1?
David,
In thinking about this more, I think the solution is somewhere in between what you’re thinking and what I was thinking…
Check for the existence of a second command line variable and use it as the device to run against. The first command line variable should probably always be the location of the config file since there are things in there that need to be used even when run manually.
Since the script is run using bash, you can use:
if [ $# -eq 2 ]; then
CONFIG = $1
DEVICE = $2
fi
This will set the variables as needed based on there being two command-line variables.
Oh ok, I see, your solution keeps the original udev rule functionality. I was just going to eliminate that. I’ll work on it tomorrow and see where I get to.
It might be useful to be able to “turn the automated piece on and off”, too. For example: When doing a bulk import of media, most items should rip correctly. An odd disc here or there might need to be run manually with different settings. In this scenario, it might be nice to have a CONFIG setting that turns the automation completely off, or possibly off for a specific device. That would allow you to use it in an automated fashion -OR- a manual fashion, depending on your needs.
There are a number of other config settings that should probably be added to the main config file as well – either a direct pointer to the abcde config file, or parameters that can be used to -generate- an abcde config file for use by the ripping machine. It took me quite a while to make my way through the various different pieces to get to where I could modify the abcde config file so that it would rip MP3 and not FLAC.
Hey Mark,
Really sorry for not getting back to this sooner. A ton of stuff came up during the last two weeks which stopped me from working on this.
I did follow the advice above (except I just added an else statement where it assigned Config to the first command line variable), but I’m still running into an issue.
I get one error at the elif line at around 117 (when it identifies audio and lauches abcde:
line 117: ((: > 0 : syntax error: operand expected (error token is “> 0 “)
It seems like the variable $ID_CDROM_MEDIA_TRACK_COUNT_AUDIO doesn’t exist. To do a test, right after the udevadm info line, I make it echo the aforementioned variable into the log and a blank line showed up.
If I run udevadm info -q env -n /dev/sr0 I do indeed get a non zero value for the above variable
I believe udevadm info is sending the disk info to the log, but it’s not giving identify.sh access to that same exact disk info.
How would I go about getting identify.sh to parse what udevadm info -q env -n /dev/sr0 throws out? A combination of cat and something else? I’m a bit out of my league in terms of bash coding…
David,
Have you tried running the udevadm command within the script and using the “-x” flag to export the variable information to the shell?
Ok I have a question:
I wanted to use this BUT I don’t want makemkv to rip EVERY track with most discs. Specifically I wanted to have it ignore any track that is 50% bigger than another track that meets my min length requirements.
SO, I wrote my own scripts but I seriously don’t understand how your udev rule tells your script WHICH dvd drive is being loaded…can you explain how that gets into the bash script logic?
Hi, techpilot. The $DEVNAME environment variable is set by UDEV and it contains the optical drive, also not sure if it’s exactly what you want but you can set MAIN_FEATURE=true and it will only rip the main feature of a movie.
I turned off the UDEV rule on my machine, and put `udevadm info -q env -n /dev/sr0 -x` in the beginning of the notify.sh and it ran fine. So, the “-x” piece would seemingly be the piece you need so that the results of the udevadm command will set environment variables.
The block command is surrounded by backticks in the script – they don’t show up when you insert them into a post.
Are there any better ways to identify movie titles? The python script is terrible and most movies get named incorrectly. This puts me in a position of having to do a LOT of manual work to rename folders and files before placing them in my Plex system.
Specifically, the python script (which queries Windows Media, seemingly an undocumented database) gets the year of release wrong almost all the time.
Hi, Mark. I wish… there really isn’t anything like the CDDB database for movies that I’ve found, the only thing I’ve come across is for blue-rays you can get it off an XML file on the disk, and for DVDs I don’t know of any way other than the Windows Media API. One thing that may cause the issue you’re having with the year is the release year of the movie is sometimes a year ahead of the DVD. I don’t know if there’s a way to truly make it automatic… either someone needs to step up and make a CDDB like service for movies (which is less likely to be successful because you don’t have a large number of people ripping movies like you did with CDs) or make some sort of interface where the ARM gives you the top 5 matches.
Also, the OMDB API which the python script relies on has not been accepting queries without a paid key lately so that may be part of the problem. When it’s accepting free queries I get about a 90% success rate, but there are still a few movies I have to rename manually.
If you do have some better ideas or find a better way to get a match let me know and I’ll try to incorporate them.
Ben
Thanks for the response, Ben.
TMDB is a pretty good online database for movies, but the problem is more one of being able to get data from the DVD itself to use in a query. As you mentioned, BluRay discs have some information buried in a text file that can be extracted – regular DVD’s do not. Disc titles are not always useful, either. As an example, The Terminator, Special Edition has a disc title of something like TERMSE. I had another disc with a title of PI30NNW1. Good Day For It is titled GDFI_DVD. Plenty of not-terribly-helpful titles out there. :)
Filebot can already leverage TMDB to attempt to get and use the correct naming of a movie. I wonder if there’s a way to just let Filebot do the work?
Ben,
I am running in to a problem with your Identify script. For some reason, it doesn’t mount the Blu-Ray drive to mnt like your script looks for, I have 2 drives (sr0,sr1) everything else is able to see the drives but since the identify script doesn’t work, the movies keep getting dropped in the unidentified folder.i have included the email output that root gets from the script and the identify portion of the log. I did add the -x to udevadm as suggested in a earlier comment. Let me know if there is another script I should be looking at to resolve this. I am also running Ubuntu 16.04 with the latest patches as of this post. Thanks in advance.
/opt/arm/config
/opt/arm/identify.sh: line 109: ((: > 0 : syntax error: operand expected (error token is “> 0 “)
Starting Identify Script…
Deleting 0 old log files:
DEVLINKS=’/dev/disk/by-path/pci-0000:00:12.2-usb-0:1:1.0-scsi-0:0:0:0 /dev/dvdrw /dev/disk/by-uuid/8D332D2ED82ED803 /dev/disk/by-id/usb-HL-DT-ST_BD-RE_WH16NS40_0000000000006417-0:0 /dev/disk/by-label/THE_FORCE_AWAKENS /dev/cdrw’
DEVNAME=’/dev/sr1′
DEVPATH=’/devices/pci0000:00/0000:00:12.2/usb1/1-1/1-1:1.0/host7/target7:0:0/7:0:0:0/block/sr1′
DEVTYPE=’disk’
ID_BUS=’usb’
ID_CDROM=’1′
ID_CDROM_BD=’1′
ID_CDROM_BD_R=’1′
ID_CDROM_BD_RE=’1′
ID_CDROM_CD=’1′
ID_CDROM_CD_R=’1′
ID_CDROM_CD_RW=’1′
ID_CDROM_DVD=’1′
ID_CDROM_DVD_PLUS_R=’1′
ID_CDROM_DVD_PLUS_RW=’1′
ID_CDROM_DVD_PLUS_R_DL=’1′
ID_CDROM_DVD_R=’1′
ID_CDROM_DVD_RAM=’1′
ID_CDROM_DVD_RW=’1′
ID_CDROM_MEDIA=’1′
ID_CDROM_MEDIA_BD=’1′
ID_CDROM_MEDIA_SESSION_COUNT=’1′
ID_CDROM_MEDIA_STATE=’complete’
ID_CDROM_MEDIA_TRACK_COUNT=’1′
ID_CDROM_MEDIA_TRACK_COUNT_DATA=’1′
ID_FOR_SEAT=’block-pci-0000_00_12_2-usb-0_1_1_0-scsi-0_0_0_0′
ID_FS_LABEL=’THE_FORCE_AWAKENS’
ID_FS_LABEL_ENC=’THE_FORCE_AWAKENS’
ID_FS_TYPE=’udf’
ID_FS_USAGE=’filesystem’
ID_FS_UUID=’8D332D2ED82ED803′
ID_FS_UUID_ENC=’8D332D2ED82ED803′
ID_INSTANCE=’0:0′
ID_MODEL=’BD-RE_WH16NS40′
ID_MODEL_ENC=’BD-RE\x20\x20WH16NS40\x20′
ID_MODEL_ID=’5678′
ID_PATH=’pci-0000:00:12.2-usb-0:1:1.0-scsi-0:0:0:0′
ID_PATH_TAG=’pci-0000_00_12_2-usb-0_1_1_0-scsi-0_0_0_0′
ID_REVISION=’1.00′
ID_SERIAL=’HL-DT-ST_BD-RE_WH16NS40_0000000000006417-0:0′
ID_SERIAL_SHORT=’0000000000006417′
ID_TYPE=’cd’
ID_USB_DRIVER=’usb-storage’
ID_USB_INTERFACES=’:080250:’
ID_USB_INTERFACE_NUM=’00’
ID_VENDOR=’HL-DT-ST’
ID_VENDOR_ENC=’HL-DT-ST’
ID_VENDOR_ID=’1234′
MAJOR=’11’
MINOR=’1′
SUBSYSTEM=’block’
TAGS=’:systemd:seat:uaccess:’
USEC_INITIALIZED=’100461620′
/dev/sr1
identified udf
found THE_FORCE_AWAKENS on /dev/sr1
identified udf as video
Obtained Title The Force Awakens (2016)
got to here
HAS_NICE_TITLE is true
video title is now The Force Awakens (2016)
video type is fail
Video Title is The Force Awakens (2016)
Hi, Louis, there’s a discussion of this on GitHub, the OMDb API is no longer free (now costs $1/month), and that’s what the ARM was relying on to identify whether the video was a movie or TV show …when that fails it drops it into unidentified.
Basically, ARM drops everything into Unidentified now. I have written a “handling” script that leverages Filebot to rename the media files correctly and then move them into my Plex media directories so the media server sees them. What I’ve found with Filebot is that the filename of the media itself is important for matching. The more words in the title you have in the filename, the better it matches on the first try.
My script leverages the name of the directory that the files are dropped into to rename the file itself, then Filebot attempts to identify the file based on its name. I was previously getting about a 50/50 split with accurate matches. I now get closer to about 90/10. And I’ve coded in a “Repair” option that allows me to manually override the directory and filename directly, even after it has been migrated into a holding directory. That way, I can look the movie up myself and give it the correct naming so that Plex will import it correctly.
Wow, would you mind sharing your script?
I’d be happy to, once it’s complete and commented appropriately. I’m still tuning it, and will be making more changes so that it will work for more folks (I use a promotion model to go from Unidentified -> Renamed -> Approved -> Imported).
Ben,
Let me know if you can’t decrypt this. I don’t want to post in clear text because I want you to tinker and test before possibly making it part of your git repository.
If you think it’s good to go after testing on your system, feel free to add it in.
—–BEGIN PGP MESSAGE—–
Version: BCPG C# v1.6.1.0
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
=UIEq
—–END PGP MESSAGE—–
I encounter the exact same problem as Reinhard. It seems indeed to be the case that protected DVDs cannot be read on headless Debian Jessie systems. There is also an unsolved question on SuperUser. I will try to implement Reinhard’s solution and see how it goes.
I would also be interested in testing this script.
HELP! Complete newbie fumbling his way through his first vm and first linux experience. I’m going on two weeks, and I think I am really close!
I would like to use a custom HandBrake preset for H.265 that I setup in the GUI (ghb). I have exported to a .json file. How do I get A.R.M. to use this custom setting? The files rip with MKV just fine, and if I use the standard config file, they will transcode to H.264…but I want H.265 with a quality of 18 and HandBrake does not appear to have a preset for that.
When I run HandBrakeCLI -z, the custom preset is not listed. I have tried modifying line 91 of the video_transcode.sh, replacing “–preset..” with –preset-import-file “~/.config/ghb/TechSpot_DVD.json” -i…” I received an error that -i was missing (it wasn’t)
I also tried modifying the config file settingfrom: HANDBRAKE_CLI=HandBrakeCLI to: HandBrakeCLI –preset-import-file “~/.config/ghb/TechSpot_DVD.json” and I tried changing from: HB_PRESET=”High Profile” to: HB_PRESET=”TechSpot_DVD”, I always get an error in the log that it can’t find TechSpot_DVD.
In both of the above cases, I tried –preset-import-file and –preset-import-gui. Neither worked. I also tried with “~” and with “/home/ubuntu/…” None of those worked, either.
Can this be done? Do I need to place the .json file in a different folder? Is there a different file I need to modify (ex: some HandBrake file so with the .json text)?
Below is a snippet of the log file:
Encode done!
HandBrake has exited.
Transcoding file title01.mkv
[20:22:05] hb_init: starting libhb thread
[20:22:05] thread 7f49e9e51700 started (“libhb”)
Preset import failed, file (“home/ubunto/.config/ghb/TechSpot_DVD.json”)
HandBrake 1.0.4 (2017040900) – Linux x86_64 – https://handbrake.fr
4 CPUs detected
Please help! I think I am sooooo close! :)
Larry,
The proper way to invoke what you’re asking using purely HandBrakeCLI would be to have:
[code]–preset-import-file=”/path/to/preset.json” –preset=”My preset”[/code]
on the command line. So, try setting the profile to the name of your custom preset and then pass the [code]–preset-import-file=”/path/to/preset.json”[/code] portion as an additional command-line argument from the config file.
I am having a tough time getting all of this to work. It may be my hardware setup. I have 3 internal DVD and 1 external BD. When I drop 4 discs in, folders are created and most of the time the logs say the movie has been sent to the transcode quue. Randomly, one of the movies may get transcoded. Most of the time, nothing – especially blu ray. Is there a way to see the HB queue? Please be specific on HOWTO – I’m a*NIX newbie LOL. Any other ideas? Thank you!
Larry,
Check your “CONFIG” file and see if you have SKIP_TRANSCODE set to “TRUE”. You should also look at the setting for MAINFEATURE as setting this to TRUE will skip transcoding on all but one file (when it does transcode).
Thank you for the quick reply, Mark!
I tried a fresh config file and a fresh video_transcode.sh. This did not help. I all four combinations of mkv/backup with main feature on and off. I rebooted the VM and Windows each time.
I seem to consistently get this error in the log file of any blu ray:
MSG:5069,128,0,”Backup failed”,”Backup failed”
MSG:5080,516,0,”Backup failed.”,”Backup failed.”
STAT: TRON_LEGACY ripped in 0 hours, 0 minutes and 7 seconds.
/opt/arm/video_transcode.sh “/media/sf_ARM/ARM/MKV//Tron – Legacy (2010)_20170802_195024” “Tron – Legacy (2010)” “true” “fail” 20170802_195024
TRON_LEGACY sent to transcoding queue…
HandBrake does not transcode it, though.
This is an external blu-ray. Do you think that would make a difference?
Any ideas what the MSG’s mean?
Thank you!
Larry,
Look further up in the log file – I suspect you’ll see an entry that says something about the Shareware features of MakeMKV being disabled because your key is no longer valid. You’ll need to update the key from the MakeMKV web site in order to get it work again. The previous key expired on Sunday.
Hello Benjamin,
This is a great programme, is there a way to put some feedback on the screen like the bar that goes across the screen, no need to be accurate – just to indicate something is happening – such as “Ripping your DVD” and “Transcoding your DVD”?
Hi, Richard. Thanks, it’s possible but I’m not sure how to go about adding that, feel free to create an issue on the github page for this feature.
Serious question: Why?
This is intended to be a headless (no monitor) system that requires no user intervention. I could see developing a web application for it that would allow monitoring and control from a remote device, but that’s a project in and of itself.
Hello Mark,
Thanks for the reply – I’m building a standalone media server which is accesses by web browser and one of the requirements is to rip dvds and put them into the library. (The user and I are well aware of the legal aspects of this and only legally acquired material would be ripped!)
Understood.
In my limited experience, media servers are similar in that they, too, are headless. Hence, the web access method. So, I still see no need to try and build a system to put notifications on the screen. You -COULD- (if you’re using Linux) use the console notifications to pop generic messages to the screen of things like “Starting content rip”, “Completed disc rip”, etc.
If you’re looking for some sort of very basic progress indicator, maybe consider using something like Pushbullet which can put notifications into the Chrome browser extension. Mod the scripts (like I did) to send notifications of different things. I use Pushover notifications to send info through to my IFTTT app on my phone. When a disc is done ripping, I get a notice (good time to go change discs). When the transcoding is complete and all content has been moved to its final resting place (which is never the media library), I know that I can get my content renamed and imported.
I don’t see that I’m X% complete on any given task or disc, but I’m ok with that as long as I know the work is getting done (and I know it’s working because I hear the drives working).
Thanks for the feedback, I’ll look at the Linux console notifications approach (I’m using Debian).
Hi, I am happy to say: everything was finally PERFECT! And then, I ran out of disk space on my VM. I started to go through resizing and gpart, etc…but I figured building a new VM would be faster and probably cleaner.
I am on my 2nd attempt to get this to work :( I have followed the steps, with no errors. All of the folders are there. I have not changed the config files, etc.
When I insert any disk…nothing happens. It’s almost like udev isn’t firing. I have rebooted multiple times.
Any ideas?
Thank you!
Larry
Did you get it working Larry? It’s hard to say, nothing in your system logs? Can you test ripping a disk manually using MakeMKV or Handbrake manually from the command line to make sure that’s working?
Hi there!
Great tool. I’ve installed it on a (old….) system where I run Lubuntu on. I did fit a BluRay drive inside of it. I did manage to get it working. Thanks for your effort.
I would like to know if there is another way to get this system running on my Freenas 11 setup. I would be able to create a VM with Bhyve on Freenas 11. In this VM I would run Ubuntu 16.04 LTS. However I cannot add the BluRay drive as an device. Not sure if this question is for you or in the Freenas community.
Hi, Wim. That would be really cool if you could get that to work in FreeNAS, I don’t think it’s currently possible. My guess is bhyve doesn’t have the ability to do this so I’d start there. If bhyve can do it, it should be fairly trivial to add this to the VM on the command line in FreeNAS, or for the FreeNAS devs to add it to the GUI.
I’ve run into a problem which I’d be grat6eful for your help. I now get a DVD ejected almost straightaway after inserting it. The log extract is below which implies MakeMKV is either unli9censed, or out of date. I entered the beta license key but no change, and reinstalled to version 1.10.6 (beta) Linux x64 (I am running Ubuntu 16.04 x64). Still no change. I then purchased a paid key, again no change. Finally I removed the arm directory and linked files, reinstalled the whole app but to no avail, I can’t think of anything else – any assistance gratefully received.
Log:
*** Start config parameters ****
Timestamp: Sat, 26 Aug 2017 16:30:29 +0100
ARM_CHECK_UDF=true
GET_VIDEO_TITLE=true
SKIP_TRANSCODE=false
RAWPATH=”/mnt/media/ARM/raw/”
MEDIA_DIR=”/mnt/media/ARM/Media/Movies/”
LOGPATH=”/opt/arm/logs/”
LOGLIFE=1
SET_MEDIA_PERMISSIONS=false
CHMOD_VALUE=777
SET_MEDIA_OWNER=false
CHOWN_USER=
CHOWN_GROUP=
MINLENGTH=”600″
RIPMETHOD=”mkv”
MKV_ARGS=””
HB_PRESET=”High Profile”
DEST_EXT=mkv
HANDBRAKE_CLI=HandBrakeCLI
MAINFEATURE=false
HB_ARGS=”–subtitle scan -F”
PLEX_SUPPORT=false
EMBY_REFRESH=false
EMBY_SUBFOLDERS=true
EMBY_SERVER=””
EMBY_PORT=”8096″
EMBY_CLIENT=”ARM”
EMBY_DEVICE=”ARM”
EMBY_DEVICEID=”ARM”
EMBY_USERNAME=””
EMBY_USERID=””
IFTTT_EVENT=”arm_event”
LOG=$LOGPATH$LOGFILE
*** End config parameters ****
Starting Identify Script…
Deleting 0 old log files:
DEVLINKS=/dev/dvd /dev/disk/by-id/ata-MATSHITADVD-RAM_UJ875AS_aE01466B /dev/disk/by-path/pci-0000:00:1f.2-ata-1 /dev/disk/by-uuid/2011-11-25-15-52-25-00 /dev/cdrom /dev/disk/by-label/TTSS /dev/dvdrw /dev/cdrw
DEVNAME=/dev/sr0
DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sr0
DEVTYPE=disk
ID_ATA=1
ID_ATA_SATA=1
ID_ATA_SATA_SIGNAL_RATE_GEN1=1
ID_BUS=ata
ID_CDROM=1
ID_CDROM_CD=1
ID_CDROM_CD_R=1
ID_CDROM_CD_RW=1
ID_CDROM_DVD=1
ID_CDROM_DVD_PLUS_R=1
ID_CDROM_DVD_PLUS_RW=1
ID_CDROM_DVD_PLUS_R_DL=1
ID_CDROM_DVD_R=1
ID_CDROM_DVD_RAM=1
ID_CDROM_DVD_RW=1
ID_CDROM_MEDIA=1
ID_CDROM_MEDIA_DVD=1
ID_CDROM_MEDIA_SESSION_COUNT=1
ID_CDROM_MEDIA_STATE=complete
ID_CDROM_MEDIA_TRACK_COUNT=1
ID_CDROM_MEDIA_TRACK_COUNT_DATA=1
ID_FOR_SEAT=block-pci-0000_00_1f_2-ata-1
ID_FS_LABEL=TTSS
ID_FS_LABEL_ENC=TTSS
ID_FS_TYPE=udf
ID_FS_USAGE=filesystem
ID_FS_UUID=2011-11-25-15-52-25-00
ID_FS_UUID_ENC=2011-11-25-15-52-25-00
ID_MODEL=MATSHITADVD-RAM_UJ875AS
ID_MODEL_ENC=MATSHITADVD-RAM\x20UJ875AS\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20
ID_PATH=pci-0000:00:1f.2-ata-1
ID_PATH_TAG=pci-0000_00_1f_2-ata-1
ID_REVISION=1.00
ID_SERIAL=MATSHITADVD-RAM_UJ875AS_aE01466B
ID_SERIAL_SHORT=aE01466B
ID_TYPE=cd
MAJOR=11
MINOR=0
SUBSYSTEM=block
TAGS=:uaccess:seat:systemd:
USEC_INITIALIZED=2955549
net.ifnames=0
identified udf
found TTSS on /dev/sr0
identified udf as video
Obtained Title Tinker Tailor Soldier Spy (2012)
got to here
HAS_NICE_TITLE is true
video title is now Tinker Tailor Soldier Spy (2012)
video type is fail
Starting video_rip.sh
Video Title is Tinker Tailor Soldier Spy (2012)
Ripping video TTSS from /dev/sr0
Using mkv method of ripping.
MSG:1005,0,1,”MakeMKV v1.10.6 linux(x64-release) started”,”%1 started”,”MakeMKV v1.10.6 linux(x64-release)”
DRV:0,2,999,1,”DVD+R-DL MATSHITA DVD-RAM UJ875AS 1.00″,”TTSS”,”/dev/sr0″
DRV:1,256,999,0,””,””,””
DRV:2,256,999,0,””,””,””
DRV:3,256,999,0,””,””,””
DRV:4,256,999,0,””,””,””
DRV:5,256,999,0,””,””,””
DRV:6,256,999,0,””,””,””
DRV:7,256,999,0,””,””,””
DRV:8,256,999,0,””,””,””
DRV:9,256,999,0,””,””,””
DRV:10,256,999,0,””,””,””
DRV:11,256,999,0,””,””,””
DRV:12,256,999,0,””,””,””
DRV:13,256,999,0,””,””,””
DRV:14,256,999,0,””,””,””
DRV:15,256,999,0,””,””,””
MSG:5021,260,1,”This application version is too old. Please download the latest version at http://www.makemkv.com/ or enter a registration key to continue using the current version.”,”This application version is too old. Please download the latest version at %1 or enter a registration key to continue using the current version.”,”http://www.makemkv.com/”
STAT: TTSS ripped in 0 hours, 0 minutes and 7 seconds.
/opt/arm/video_transcode.sh “/mnt/media/ARM/raw//Tinker Tailor Soldier Spy (2012)_20170826_163031” “Tinker Tailor Soldier Spy (2012)” “true” “fail” 20170826_163031
TTSS sent to transcoding queue…
Start video transcoding script
transcoding with a nice title
directory already exists… adding timestamp
Transcoding all files.
STAT: transcoded in 0 hours, 0 minutes and 0 seconds.
Pushbullet notifications not enabled
IFTTT notifications not enabled
Pusover notifications not enabled
*** Start config parameters ****
Timestamp: Sat, 26 Aug 2017 16:30:38 +0100
ARM_CHECK_UDF=true
GET_VIDEO_TITLE=true
SKIP_TRANSCODE=false
RAWPATH=”/mnt/media/ARM/raw/”
MEDIA_DIR=”/mnt/media/ARM/Media/Movies/”
LOGPATH=”/opt/arm/logs/”
LOGLIFE=1
SET_MEDIA_PERMISSIONS=false
CHMOD_VALUE=777
SET_MEDIA_OWNER=false
CHOWN_USER=
CHOWN_GROUP=
MINLENGTH=”600″
RIPMETHOD=”mkv”
MKV_ARGS=””
HB_PRESET=”High Profile”
DEST_EXT=mkv
HANDBRAKE_CLI=HandBrakeCLI
MAINFEATURE=false
HB_ARGS=”–subtitle scan -F”
PLEX_SUPPORT=false
EMBY_REFRESH=false
EMBY_SUBFOLDERS=true
EMBY_SERVER=””
EMBY_PORT=”8096″
EMBY_CLIENT=”ARM”
EMBY_DEVICE=”ARM”
EMBY_DEVICEID=”ARM”
EMBY_USERNAME=””
EMBY_USERID=””
IFTTT_EVENT=”arm_event”
LOG=$LOGPATH$LOGFILE
*** End config parameters ****
Starting Identify Script…
Deleting 0 old log files:
DEVLINKS=/dev/disk/by-path/pci-0000:00:1f.2-ata-1 /dev/cdrw /dev/dvd /dev/cdrom /dev/disk/by-id/ata-MATSHITADVD-RAM_UJ875AS_aE01466B /dev/dvdrw
DEVNAME=/dev/sr0
DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sr0
DEVTYPE=disk
ID_ATA=1
ID_ATA_SATA=1
ID_ATA_SATA_SIGNAL_RATE_GEN1=1
ID_BUS=ata
ID_CDROM=1
ID_CDROM_CD=1
ID_CDROM_CD_R=1
ID_CDROM_CD_RW=1
ID_CDROM_DVD=1
ID_CDROM_DVD_PLUS_R=1
ID_CDROM_DVD_PLUS_RW=1
ID_CDROM_DVD_PLUS_R_DL=1
ID_CDROM_DVD_R=1
ID_CDROM_DVD_RAM=1
ID_CDROM_DVD_RW=1
ID_FOR_SEAT=block-pci-0000_00_1f_2-ata-1
ID_MODEL=MATSHITADVD-RAM_UJ875AS
ID_MODEL_ENC=MATSHITADVD-RAM\x20UJ875AS\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20
ID_PATH=pci-0000:00:1f.2-ata-1
ID_PATH_TAG=pci-0000_00_1f_2-ata-1
ID_REVISION=1.00
ID_SERIAL=MATSHITADVD-RAM_UJ875AS_aE01466B
ID_SERIAL_SHORT=aE01466B
ID_TYPE=cd
MAJOR=11
MINOR=0
SUBSYSTEM=block
SYSTEMD_READY=0
TAGS=:uaccess:systemd:seat:
USEC_INITIALIZED=2955549
net.ifnames=0
drive seems empty, not ejecting
I’ve seen this sort of thing before and it came down to an issue with the keyfile.
Check this file: /root/.MakeMKV/settings.conf
There should be a line that says app_Key=
The string that follows the equal sign needs to be encapsulated in quotation marks. So the line would look something like this:
app_Key=”ABCDEFabcdef123456ABCDEF123456″
The alphanumeric string is your key file.
Thanks – that seems to have solved the issue – for some reason the settings.conf, update.conf and screen.conf files were all under the /home directory in .MakeMKV. I copied them all to the root/.MakeMKV/ directory and all seems OK.
Hello all, noob here to automatic ripping. I have a perplexing problem. I have installed Ubuntu 16.04.3 LTS running in Virtualbox on my mac (Sierra 10.12.5). I have followed your install instructions step by step. I have setup optical to use host device (Asus blu-ray). I have installed all the software, edited the config file to point to local folders on the host (shared via virtual box to Ubuntu). that is the only change i made in config. I have installed makemkv, handbrake, python, pip, libraries, at, etc. When i test each individual component, they all seem to be working. I can use udevadm command and it reads my DVD (testing with “The Departed DVD).
However, when i insert the disk, i get nothing! No logs in /opt/arm/logs and no indication that udev is firing off the /etc/init.d/51-automedia.rules. And yes, i did implement the soft link as described in your instructions. How do i troubleshoot when i can’t find any logs to review? I know this is probably something very simple – human error or typo somewhere – but would appreciate any suggestions on how i can get udev to at least kick off the first script?
I read through all of the comments above and it appears that it may be that my particular setup just won’t read the DVD properly – but i’m sure its something simple that i’m missing?
Thanks in advance for the help!
the_greenhorn
Ok, i found out my problem. I read the REAME.md file and there was another command in that file that isn’t in the instructions listed above:
cp /opt/arm/[email protected] /etc/systemd/system/
Once i did this then it started working. Now trying to resolve why makemkv won’t read any DVD i throw at it. Same DVD’s work fine in my host with makemkv (Mac Sierra). But at least i can see the script working and now i have an empty.log file to read! I’m sure it probably has something to do with encryption libraries needed.
Thanks!
the_greenhorn
I had the same problem. At first, I thought it was the MKV license (I finally figured out that I had to create the .conf file and add the app key line in the file in order for it to be read). I was still having problems, and created a new config file from the copy and it worked. Then I added 1 change at a time to see where it broke. I eventually made all the changes again, and it kept working. Either the config file was corrupt, or I made some kind of syntax error (forgot to add a # to a remark???). I found one line in a previous config copy where I added quotes (“) around and argument that was inside the quote of the HB_ARG= quotes…this made sense :) It got to the 2nd quote (which was the first quote of an argument, and failed. So, don’t add quotes within quotes. I know that’s coding 101, but I did it any way. Best of luck!
I’m wondering if anyone else is having the following issue:
Once a disc has finished ripping, my drive will eject it only to close the drive tray again within 3-4 seconds, after which it rips the disc again.
Unless I am supervising the process closely and snatch the disc out of the drive, this creates an infinite ripping loop.
Obviously this wouldn’t happen with laptop style drives which do not have the capability of automatically closing the drive tray.
amazing blog and project thank you.
i haven’t attempted it yet and was wondering:
do you think i could run arm on ubuntu 16.04 lts on virtualbox on windows 7 64bit?
this is exclusively for dvds.
p.s.
are subtitles ripped as well? can they be added in the mkv files?
overall i suppose my concerns are whether there would be performance and compatibility bottleneckd caused by the VM software.
many thanks
I had a problem getting the DVD ripper to work from this article until I noticed what seems to be a line missing between lines 7 and 8 of the commands, this line is in the readme.md file on github but not in the article above and it solved the problem:
cp /opt/arm/[email protected] /etc/systemd/system/
If this has been picked up befoire my apologies.
Hello … I love this thing (concept at least) I’m doing a fresh install of ubutnut server 16.04 lts …. I can’t seem to get past getting this error
Everything passes and installs but it still reads 8.1.1 and not 9.0.1 … despite it installing 9
—————————————-
Command “python setup.py egg_info” failed with error code 1 in /tmp/pip-build-o3ym7ztc/pycurl/
You are using pip version 8.1.1, however version 9.0.1 is available.
You should consider upgrading via the ‘pip install –upgrade pip’ command.
fausto@Auto-Box:/opt/arm$ pip install –upgrade pip
Requirement already up-to-date: pip in /home/fausto/.local/lib/python2.7/site-packages
cool project
cheers
Tim
Hi, Tim. Try pip3 instead of pip
Cool, that’s getting better, now just getting this :
Command “python setup.py egg_info” failed with error code 1 in /tmp/pip-build-zZwnxT/pycurl/
huh … ok…. seems it wanted this
pycurl*
EUreka….. !!! this line is missing in the how too above, but in the README file:
cp [email protected] /etc/systemd/system/
awesome
thanks
OK … so this is working great . Here’s my question, is there a way to set up makemkv to tip all of the video, including the extras in separate video files?
Great scripts, thanks
Hi, Tim. Set the parameter MAINFEATURE=false and it will rip everything into separate files. You may also need to play with the MINLENGTH value (minimum number of seconds a video has to be for the ARM to rip it).
Ben,
I thought the MAINFEATURE piece only worked with BluRay, and only if BD’s were set to backup mode and not straight rip? I have my minlength set to 600 (ten minutes) and will always get “everything” that matches that criteria. With newer BluRay’s, this is actually problematic because of playlist obfuscation where it tries to rip all of the various combinations that are on the disc specifically caused to confuse ripping programs. Sometimes I get three or four files from a BD, sometimes I get 40. And they’re all just about the EXACT same size because of playlist obfuscation.
I don’t use backup mode for BluRay’s… Maybe that’s why mine works as it does?
rip not tip
So i tried that and the log read something about MAINFEATURE=being set to TRUE and didn’t rip anything. So i reset it and it worked again… and promptly lost the original log (sorry)… also, where is the MINLENGTH set …. i couldn’t find it…. thanks for the help
MINLENGTH parameter in the sample configuration file: https://github.com/ahnooie/automatic-ripping-machine/blob/master/config.sample at line 60.
DUH!! …sorry
Hi Ben,
Thanks so much for this! For some reason every time I run this it always saves the log file as “empty.log” and puts my final transcoded product into “Unidentified” even though in the log files it shows “identified udf as video”, although it is also showing “video type is fail”. Any suggestions? I’ve tested multiple dvds.
Thanks a lot,
Trevor
Hi, Trevor. The ARM is failing to identify the video because the OMDB API that ARM uses to identify the video type is no longer free and now requires an API key. See: https://github.com/ahnooie/automatic-ripping-machine/blob/master/README-OMDBAPI.txt Had we known this would happen we would have developed against a different API but didn’t know at the time. We may try to change this to use another API that is free in the future but haven’t gotten around to it yet. The only way to get that part working now is to purchase an API key from OMDBAPI, unfortunately.
Hello,
Sorry for the poor writing in my last couple posts, rereading them now and wondering what was going on at work when I posted. I’ve familiarized myself with the config and followed your instructions, however i can’t seem to get it to rip anything but the main title. It’s working great at that, just doesn’t want to rip anything but the movie. ANy thoughts?
Thanks for any and all help, this really is a nice set of scripts.
T
Hi Ben,
Thanks so much for the quick reply! $1 a month seems pretty reasonable. One more question for you, I have set up my IFTTT trigger and in the logs it shows “IFTTT notification sent” yet I don’t get the email. I’ve double checked my API key is correct and my event is correctly configured. Could there possibly be something wrong with the python script? Or have you had anyone else with this issue?
Thanks a lot for the help
-Trevor
Hi Ben,
Just wanted to let you know I’ve figured out my issue, thanks for the help.
OK … so this is what I set up … sometimes it wants to do other tracks on the DVD fine … other times it will only rip the main title … I want it to rip everything.
Anyone have any thoughts?
########################
## MakeMKV Parameters ##
########################
# Minimum length of track for MakeMKV rip (in seconds)
MINLENGTH=”100″
RIPMETHOD=”mkv”
MKV_ARGS=””
##########################
## HandBrake Parameters ##
##########################
HB_PRESET=”High Profile”
DEST_EXT=mkv
HANDBRAKE_CLI=HandBrakeCLI
MAINFEATURE=false
HB_ARGS=”–subtitle scan -F”
MKV_ARGS=””
##########################
## HandBrake Parameters ##
##########################
HB_PRESET=”High Profile”
# Extension of the final video file
DEST_EXT=mkv
HANDBRAKE_CLI=HandBrakeCLI
MAINFEATURE=false
Can you provide some information on discs that DO work as you’d like and ones that DON’T? This might help to determine whether the issue is with the discs, drives, software, configuration, sun spot activity, etc.
Be specific about the discs… Titles, formats, multi-disc set, which disc, and so on. Also, be sure to point out what tracks DON’T rip that you believe should.
An alternative method would be to use the “file” command, e. g.
file -s /dev/sr0 | cut -d “‘” -f2
That gives you the LABEL on Debian as well and you don’t need to copy anything.
OK … so here’s what I got, These DVDs “The Great Escape (1998)” and “Almost Famous (2001)” ripped fine and grabbed the extras. “Tom Horn (2005)” along with the Godfather 1 2 and 3 did not. I’d expect at least the theatrical trailers as they should be just short videos. I have my min length set at 100.
THanks for the help
T
Unfortunately, I don’t remember how the Godfather movies ripped for me. I believe that it was “main feature” only. I don’t have any of the others on your list. Any other examples you want to try?
Ok … so here is the real question. Should it be ripping everything over 100 secs on every DVD or is that the nature of this software, some DVDs simply wont auto rip everything in the menu? In my mind i was expecting the entire contents of every DVD I stuck in. If this is a limitation of running this software in C.L. auto-mode, than so be it. … I just want to make sure I’m not doing something wrong to stop it.
The CLI and GUI versions of MakeMKV work the same way. Have you tried loading a GUI version on a machine and putting one of these discs into the drive to see what that version does? If you turn on some extended logging and such, you should see more details about what it recognizes and why it’s kicking certain things out.
OK .. so I’m running this on a headless server, so no GUI. Per chance do you where the config switch is to turn on extended logging for makemkv or are we talking about the arm log?
The simplest thing would be to install the GUI version on your “regular” machine and load a disc.
For the CLI version: http://www.makemkv.com/developers/usage.txt
You need to use the “-r” command line option to enable robot mode, then all of those other options become available.
Hey So …. thanks for all the help, it appears like it was a P.I.C.N.I.C problem (Problem In Chair Not In Computer)
Seems it was simply an issue of not trying the right DVD’s … I just did “Gods and Generals” and “Peacful Warrior” along with the Rocky Trilogy and got TONS of dvd extrs stuff … thanks for the help … fantastic scrips
What are the chances this would work on an Apple Mac rather that Unbuntu ??
As is? I’m guessing zero.
If you can solve all of the dependency issues for the software, you could make it work.
I’m having the same problem as Mark. I have SKIP_TRANSCODE=true (the machine I use for ripping is separate from the more powerful machine I use for Handbrake/transcoding) and because of playlist obfuscation, it takes over 12 hours to rip a disk because I get 15 copies of the same file, which of course are 25GB in size. Any suggestions for getting around this?
BTW . . . great scripts! :) Loving it!
Ben –
What can I say… Thanks so much.
I have personally implemented many of your guides in my home lab. Specifically, my two favorite, the Hyperconverged ESXi 6.5 and FreeNAS hybrid and I’ve just added a VM to that environment for ARM.
I have 2 things that I can’t quite figure out… I don’t want to configure IFTTT or Pushbullet as I have an entire email infrastructure setup in my environment.
It seems that I’m getting emails when ripping and transcoding finishes… BUT, I don’t know where they are configured.
After ripping I am getting these types of emails:
===============================
/opt/arm/config
/tmp/arm_disc_info_sr1: line 1: /dev/disk/by-path/pci-0000:02:03.0-ata-2: Permission denied
mount: /dev/sr1 is write-protected, mounting read-only
/tmp/arm_disc_info_sr1: line 1: /dev/disk/by-path/pci-0000:02:03.0-ata-2: Permission denied
warning: commands will be executed using /bin/sh
job 23 at Fri Oct 6 09:55:00 2017
===============================
I believe they are generated by the AT command that you’re using. As you can see, it doesn’t really say much, but I know enough that the ripping has finished.
Secondly, after transcoding, I get an email that looks like this (which goes on for a full 900k)…
===============================
dest /MEDIA/_Scratch/_ARM/Unidentified//The Blob (2001) variable created
Encoding: task 1 of 2, 0.34 % (0.00 fps, avg 0.00 fps, ETA 00h00m41s)Encoding: task 1 of 2, 1.09 % (0.00 fps, avg 0.00 fps, ETA 00h00m30s)Encoding: task 1 of 2, 1.54 % (0.00 fps, avg 0.00 fps, ETA 00h00m34s)Encoding: task 1 of 2, 1.79 % (0.00 fps, avg 0.00 fps, ETA 00h00m40s)Encoding: task 1 of 2, 2.41 % (0.00 fps, avg 0.00 fps, ETA 00h00m35s)Encoding: task 1 of 2, 3.04 % (0.00 fps, avg 0.00 fps, ETA 00h00m35s)Encoding: task 1 of 2, 3.47 % (0.00 fps, avg 0.00 fps, ETA 00h00m36s)Encoding: task 1 of 2, 3.79 % (0.00 fps, avg 0.00 fps, ETA 00h00m38s)Encoding: task 1 of 2, 4.16 % (0.00 fps, avg 0.00 fps, ETA 00h00m40s)Encoding: task 1 of 2, 4.42 % (0.00 fps, avg 0.00 fps, ETA 00h00m41s)Encoding: task 1 of 2, 4.92 % (0.00 fps, avg 0.00 fps, ETA 00h00m39s)Encoding: task 1 of 2, 5.09 % (0.00 fps, avg 0.00 fps, ETA 00h00m43s)Encoding: task 1 of 2, 6.03 % (0.00 fps, avg 0.00 fps, ETA 00h00m39s)Encoding: task 1 of 2, 6.59 % (0.00 fps, avg 0.00 fps, ETA 00h00m38s)Encoding: task 1
of 2, 7.48 % (0.00 fps, avg 0.00 fps, ETA 00h00m36s)Encoding: task 1 of 2, 8.56 % (0.00 fps, avg 0.00 fps, ETA 00h00m33s)Encoding: task 1 of 2, 9.98 % (0.00 fps, avg 0.00 fps, ETA 00h00m30s)Encoding: task 1 of 2, 11.64 % (0.00 fps, avg 0.00 fps, ETA 00h00m26s)Encoding: task 1 of 2, 13.36 % (0.00 fps, avg 0.00 fps, ETA 00h00m24s)Encoding: task 1 of 2, 14.65 % (0.00 fps, avg 0.00 fps, ETA 00h00m22s)Encoding: task 1 of 2, 15.95 % (0.00 fps, avg 0.00 fps, ETA 00h00m21s)Encoding: task 1 of 2, 17.37 % (0.00 fps, avg 0.00 fps, ETA 00h00m20s)Encoding: task 1 of 2, 18.89 % (0.00 fps, avg 0.00 fps, ETA 00h00m19s)Encoding: task 1 of 2, 19.54 % (0.00 fps, avg 0.00 fps, ETA 00h00m19s)Encoding: task 1 of 2, 19.96 % (0.00 fps, avg 0.00 fps, ETA 00h00m19s)Encoding: task 1 of 2, 21.59 % (0.00 fps, avg 0.00 fps, ETA 00h00m18s)Encoding: task 1 of 2, 23.16 % (0.00 fps, avg 0.00 fps, ETA 00h00m17s)Encoding: task 1 of 2, 24.64 % (0.00 fps, avg 0.00 fps, ETA 00h00m16s)Encoding: task 1 of 2,
===============================
My question is this… Can I simply modify notify.sh and create something using mutt and the variables in the current notify options for IFTTT and Pushbullet, then update the config for something like “SEND_EMAIL_NOTIFY=true”?
Second, how do I stop the above emails… LOL. The first one I think someone indicated above that the udev script was looking at “change” and not at “load”, but I’m not sure if that’s related, or how to go about updating that…
Thanks so much!
Hi, Jacob. Thanks for reading my blog over the years! The emails you are getting are most likely coming from the Linux OS, there’s nothing in ARM that would send out an email… perhaps some process reporting systemd or a logcheck process that’s sending you errors. Do you by chance have the root account on the ARM box forwarded to your real email address? You may be able to look at the headers of the email to track down the process that sends them.
As for the Permission denied, you may have found a bug, the ARM should probably mount it passing a read only flag.
For sending out emails, yes you can. You can modify the script exactly as you described using mutt or the mail command. If you think it’s something others would find useful feel free to create a PR on GitHub.
Thanks,
Ben
Thanks for the reply Ben! First off, YES, it is definitely something with atq directly that’s sending the email…
The plot thickens…
My ripping box has been idle for a week, and this morning I got 25 emails from atq around 3:25 am… All starting with the line “/opt/arm/config”… some of them only have that line, others indicate it’s trying to unmount “/dev/sda5”, which is my root partition, so that’s not good.
Any hints on where I can look to see what the heck is getting called to prompt this?
For the second piece… I’ve no idea how to do a PULL request, but I’ll try to figure that out too! Thanks for all the help!
Ben, this is all coming along so nicely!
Excited for audioeng and my own pull requests to get merged.
One quick question though… I see in video_rip.sh that you make 2 calls to video_transcode.sh… One is a straight call, the other is piped to batch… why is that? Shouldn’t the first one be sufficient?
I ask, because I needed to manually rip The Expendables 2 on my windows box, but I want to transfer the MKV files over to my linux box and use the second piece of ARM to do all the rest for me… I figured I could just pass it the right path, and variables, just as you call after the video is ripped by video_rip.sh, but the two calls to video_transcode.sh has me confused.
As always, thanks for the help!
Running into some issues with ARM. I have it installed ina VM. And when I insert a disc using the backup method. The process begins (tail -f /opt/arm/logs/empty.log) and I can follow along. Then randomly the ripping process stops, and the encoding fails. I cant quite figure out what I’m doing wrong. Below is a chunk of the log. Let me know if you need further log data.
[00:42:50] hb_init: starting libhb thread
[00:42:50] thread 7f39aa732700 started (“libhb”)
HandBrake 1.0.4 (2017040900) – Linux x86_64 – https://handbrake.fr
4 CPUs detected
Opening /output/RAW//RATATOUILLE_20171016_225309/BDMV…
[00:42:50] CPU:
[00:42:50] – logical processor count: 4
[00:42:50] hb_scan: path=/output/RAW//RATATOUILLE_20171016_225309/BDMV, title_index=1
disc.c:352: error opening file BDMV/index.bdmv
disc.c:352: error opening file BDMV/BACKUP/index.bdmv
[00:42:50] bd: not a bd – trying as a stream/file instead
libdvdnav: Using dvdnav version 5.0.1
libdvdread: Couldn’t find device name.
libdvdread:DVDOpenFilePath:findDVDFile /VIDEO_TS/VIDEO_TS.IFO failed
libdvdread:DVDOpenFilePath:findDVDFile /VIDEO_TS/VIDEO_TS.BUP failed
libdvdread: Can’t open file VIDEO_TS.IFO.
libdvdnav: vm: failed to read VIDEO_TS.IFO
[00:42:50] dvd: not a dvd – trying as a stream/file instead
[00:42:50] batch: scanning /output/RAW//RATATOUILLE_20171016_225309/BDMV/MovieObject.bdmv
[mp3 @ 0x7f39a4004540] Header missing
[mp3 @ 0x7f39a4004540] Header missing
[mp3 @ 0x7f39a4004540] Header missing
[mp3 @ 0x7f39a4004540] Header missing
Input #0, mp3, from ‘/output/RAW//RATATOUILLE_20171016_225309/BDMV/MovieObject.bdmv’:
Duration: 00:00:03.81, start: 0.000000, bitrate: 160 kb/s
Stream #0:0: Audio: mp1
44100 Hz, stereo, s16p, 160 kb/s
[00:42:50] hb_stream_open: open /output/RAW//RATATOUILLE_20171016_225309/BDMV/MovieObject.bdmv failed
[00:42:50] libhb: scan thread found 0 valid title(s)
*** Start config parameters ****
Timestamp: Tue, 17 Oct 2017 00:42:50 -0500
ARM_CHECK_UDF=true
GET_VIDEO_TITLE=true
SKIP_TRANSCODE=false
ARMPATH=”/output/movies/”
RAWPATH=”/output/RAW/”
MEDIA_DIR=”/output/movies/”
LOGPATH=”/opt/arm/logs/”
LOGLIFE=1
SET_MEDIA_PERMISSIONS=false
CHMOD_VALUE=777
SET_MEDIA_OWNER=false
CHOWN_USER=root
CHOWN_GROUP=root
MINLENGTH=”600″
RIPMETHOD=”backup”
MKV_ARGS=””
HB_PRESET=”High Profile”
DEST_EXT=mkv
HANDBRAKE_CLI=HandBrakeCLI
MAINFEATURE=true
HB_ARGS=”–subtitle scan -F”
PLEX_SUPPORT=false
EMBY_REFRESH=false
EMBY_SUBFOLDERS=true
EMBY_SERVER=””
EMBY_PORT=”8096″
EMBY_CLIENT=”ARM”
EMBY_DEVICE=”ARM”
EMBY_DEVICEID=”ARM”
EMBY_USERNAME=””
EMBY_USERID=””
NOTIFY_RIP=true
NOTIFY_TRANSCODE=true
IFTTT_EVENT=”arm_event”
LOG=$LOGPATH$LOGFILE
*** End config parameters ****
Starting Identify Script…
Deleting 0 old log files:
DEVLINKS=/dev/cdrom /dev/disk/by-path/pci-0000:02:03.0-ata-1 /dev/disk/by-id/ata-VMware_Virtual_SATA_CDRW_Drive_00000000000000000001 /dev/dvdrw /dev/dvd /dev/cdrw
DEVNAME=/dev/sr0
DEVPATH=/devices/pci0000:00/0000:00:11.0/0000:02:03.0/ata3/host2/target2:0:0/2:0:0:0/block/sr0
DEVTYPE=disk
ID_ATA=1
ID_ATA_FEATURE_SET_PM=1
ID_ATA_FEATURE_SET_PM_ENABLED=1
ID_BUS=ata
ID_CDROM=1
ID_CDROM_BD=1
ID_CDROM_BD_R=1
ID_CDROM_BD_RE=1
ID_CDROM_CD=1
ID_CDROM_CD_R=1
ID_CDROM_CD_RW=1
ID_CDROM_DVD=1
ID_CDROM_DVD_PLUS_R=1
ID_CDROM_DVD_PLUS_RW=1
ID_CDROM_DVD_PLUS_R_DL=1
ID_CDROM_DVD_RAM=1
ID_CDROM_DVD_RW=1
ID_FOR_SEAT=block-pci-0000_02_03_0-ata-1
ID_MODEL=VMware_Virtual_SATA_CDRW_Drive
ID_MODEL_ENC=VMware\x20Virtual\x20SATA\x20CDRW\x20Drive\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20
ID_PATH=pci-0000:02:03.0-ata-1
ID_PATH_TAG=pci-0000_02_03_0-ata-1
ID_REVISION=00000001
ID_SERIAL=VMware_Virtual_SATA_CDRW_Drive_00000000000000000001
ID_SERIAL_SHORT=00000000000000000001
ID_TYPE=cd
MAJOR=11
MINOR=0
SUBSYSTEM=block
SYSTEMD_READY=0
TAGS=:seat:systemd:uaccess:
USEC_INITIALIZED=1580379
drive seems empty, not ejecting
No title found.
HandBrake has exited.
Transcoding file CERTIFICATE
[00:42:51] hb_init: starting libhb thread
[00:42:51] thread 7f01f43c2700 started (“libhb”)
HandBrake 1.0.4 (2017040900) – Linux x86_64 – https://handbrake.fr
4 CPUs detected
Opening /output/RAW//RATATOUILLE_20171016_225309/CERTIFICATE…
[00:42:51] CPU:
[00:42:51] – logical processor count: 4
[00:42:51] hb_scan: path=/output/RAW//RATATOUILLE_20171016_225309/CERTIFICATE, title_index=1
disc.c:352: error opening file BDMV/index.bdmv
disc.c:352: error opening file BDMV/BACKUP/index.bdmv
[00:42:51] bd: not a bd – trying as a stream/file instead
libdvdnav: Using dvdnav version 5.0.1
libdvdread: Couldn’t find device name.
libdvdread:DVDOpenFilePath:findDVDFile /VIDEO_TS/VIDEO_TS.IFO failed
libdvdread:DVDOpenFilePath:findDVDFile /VIDEO_TS/VIDEO_TS.BUP failed
libdvdread: Can’t open file VIDEO_TS.IFO.
libdvdnav: vm: failed to read VIDEO_TS.IFO
[00:42:51] dvd: not a dvd – trying as a stream/file instead
[00:42:51] batch: scanning /output/RAW//RATATOUILLE_20171016_225309/CERTIFICATE/app.discroot.crt
[00:42:51] hb_stream_open: open /output/RAW//RATATOUILLE_20171016_225309/CERTIFICATE/app.discroot.crt failed
[00:42:51] libhb: scan thread found 0 valid title(s)
No title found.
HandBrake has exited.
Looks like you’re using the BACKUP method for BluRay? Try turning that off and see what happens.
I thought backup was required for Bluray? I’ll try switching it off tonight and will report back.
You should only need to use that option if running without it doesn’t work correctly.
I was wondering if anybody is running into an issue with slow disc read? I have this installed on a machine with 7 disc drives and whenever I put more than 3 discs in at a time I get an “invalid block size” kernel error that really slows down ripping time. Seems to be an mkv issue that I haven found in other forums that has yet to be resolved. I have tried both ubuntu 16.04 and 17.04. Any ideas to avoid this error?
Thanks,
Trevor
Are the drives on a common controller? Try a separate controller and see if it helps. You could be experiencing congestion on the controller bus.
After looking they seem to be on different controllers. All labelled scsi0-7 respectively. Is this what you are referring to?
Thanks for the quick replay.
No.
Each device will need a unique ID for itself, but all devices on a common controller would have the same ID for the controller itself. It’s common for motherboard to use a single controller bus regardless of 3,4,5, or however many device connections are available. If you have an add-on SATA card that you could move a couple of drives to, do that and then try three discs that are still connected as now along with 1-2 more connected to the new controller/card.
Gotcha, then yes, they are all on one controller and this is most likely the issue. One last question, even though discs are recognized as dvds and movies all my log files still go into “empty.log” rather than creating a new log per rip. I have entered an omdb api key but can’t seem to get the log files to be correctly named.
Log files will get unique names based on the name of the DVD/BluRay. If you’re ripping BluRay’s, and they’re going to “EMPTY.LOG”, then something is out of whack. DVD’s are harder to properly identify the name of and are more likely to end up in the wrong log file. BluRay discs should work 100% of the time.
Even without the API calls that are built into the product for the Windows Media Center calls working, I still get a fairly good percentage of DVD’s getting named correctly. Maybe Ben has changed something that’s causing issues since I lit my system up about six months ago?
Yeah even with BluRay’s I 100% of the time always get “empty.log” as the name. When looking at the logs it correctly ids the movie, as in “ID_FS_LABEL=’Movie_title'” but then doesn’t alter the logfile name. Could the naming of the log be happening before the idfs label identification? I’m not quite sure what’s happening there. I have yet to figure out my “invalid block size”/controller issue, I think the only way to solve is like Mark suggested which is to add on a PCI sata card to mitigate the traffic. Any other suggestions are greatly appreciated.
@Trevor
What kernel? If stock try something newer.
So I switched it to MKV. However, now it creates about 12 mkv files instead of one large one.
699M -rw-r–r– 1 root root 699M Oct 19 01:47 title00.mkv
1.1G -rw-r–r– 1 root root 1.1G Oct 19 02:09 title01.mkv
197M -rw-r–r– 1 root root 197M Oct 19 02:15 title02.mkv
128M -rw-r–r– 1 root root 128M Oct 19 02:19 title06.mkv
148M -rw-r–r– 1 root root 148M Oct 19 02:24 title07.mkv
189M -rw-r–r– 1 root root 189M Oct 19 02:29 title08.mkv
293M -rw-r–r– 1 root root 293M Oct 19 02:38 title09.mkv
594M -rw-r–r– 1 root root 594M Oct 19 03:11 title13.mkv
557M -rw-r–r– 1 root root 557M Oct 19 03:41 title14
Odds are that the 1.1G file is the one you want and the rest are special features or something. What disc is that specifically?
Ratatouille. When I check the files in playback mode, each one is a separate chapter of the movie… kinda annoying…
If you’re ripping that from BluRay, it should be a little over 5GB in size for a lossless rip. Something in your setup is not right if it’s splitting chapters into individual files.
So just a bit of an update. Ive tried a bunch of different settings, e.g. switching from backup to mkv, also enabling/disabling main feature=true, etc… It keeps creating about 9-10 files. So I cat * >newmovie.mkv to create on merged file. I played the file and discovered that ARM is only ripping the special features. It’s not ripping the main feature at all. I tried going through several iterations of the settings, and regardless of what I try it will only rip the special features from the disc. So i decided to throw the disc into my workstation instead of arm, and open it with makemkv. What I Found was that the main feature is file 00143.mpls. According to the empty.log, 00143.mpls was being added as title10 (angle1). Grepping the logs I see that for some reason, it couldnt save title10.mkv to the disk.
support@Javelin:/opt/arm/logs$ cat empty.log | grep 00143.mpls
MSG:3308,16777216,3,”File 00143.mpls (angle 1) was added as title #10″,”File %1 (angle %3) was added as title #%2″,”00143.mpls”,”10″,”1″
MSG:3308,16777216,3,”File 00143.mpls (angle 2) was added as title #11″,”File %1 (angle %3) was added as title #%2″,”00143.mpls”,”11″,”2″
MSG:3308,16777216,3,”File 00143.mpls (angle 3) was added as title #12″,”File %1 (angle %3) was added as title #%2″,”00143.mpls”,”12″,”3″
MSG:5003,0,2,”Failed to save title 10 to file /output/RAW//RATATOUILLE_20171018_174819/title10.mkv”,”Failed to save title %1 to file %2″,”10″,”/output/RAW//RATATOUILLE_20171018_174819/title10.mkv”
MSG:5003,0,2,”Failed to save title 10 to file /output/RAW//RATATOUILLE_20171018_214026/title10.mkv”,”Failed to save title %1 to file %2″,”10″,”/output/RAW//RATATOUILLE_20171018_214026/title10.mkv”
MSG:5003,0,2,”Failed to save title 10 to file /output/RAW//RATATOUILLE_20171021_005142/title10.mkv”,”Failed to save title %1 to file %2″,”10″,”/output/RAW//RATATOUILLE_20171021_005142/title10.mkv”
MSG:5003,0,2,”Failed to save title 10 to file /output/RAW//RATATOUILLE_20171021_102436/title10.mkv”,”Failed to save title %1 to file %2″,”10″,”/output/RAW//RATATOUILLE_20171021_102436/title10.mkv”
MSG:5003,0,2,”Failed to save title 10 to file /output/RAW//RATATOUILLE_20171021_154111/title10.mkv”,”Failed to save title %1 to file %2″,”10″,”/output/RAW//RATATOUILLE_20171021_154111/title10.mkv”
a quick grep -a10 ‘title10.mkv’ “title10.mkv” yielded the following.
MSG:1002,32,1,”LIBMKV_TRACE: Exception: Error in p->FetchFrames(2,true)”,”LIBMKV_TRACE: %1″,”Exception: Error in p->FetchFrames(2,true)”
MSG:5003,0,2,”Failed to save title 10 to file /output/RAW//RATATOUILLE_20171018_214026/title10.mkv”,”Failed to save title %1 to file %2″,”10″,”/output/RAW//RA
TATOUILLE_20171018_214026/title10.mkv”
However, this is the only occurrence of this statement in the logs in sequence to the ripping of title10. Although there are other occurrences of LIBMKV throwing an exception elsewhere.
As you can see, title10 is missing from the output.
715768 -rw-r–r– 1 root root 732940874 Oct 22 03:59 title00.mkv
1067716 -rw-r–r– 1 root root 1093336315 Oct 22 04:22 title01.mkv
201192 -rw-r–r– 1 root root 206019004 Oct 22 04:28 title02.mkv
130788 -rw-r–r– 1 root root 133926119 Oct 22 04:32 title06.mkv
150948 -rw-r–r– 1 root root 154567669 Oct 22 04:37 title07.mkv
193068 -rw-r–r– 1 root root 197698780 Oct 22 04:42 title08.mkv
299944 -rw-r–r– 1 root root 307140519 Oct 22 04:52 title09.mkv
608120 -rw-r–r– 1 root root 622709903 Oct 22 05:24 title13.mkv
572520 -rw-r–r– 1 root root 586254938 Oct 22 05:55 title14.mkv
267976 -rw-r–r– 1 root root 274405193 Oct 22 06:11 title15.mkv
Doing a little research seems to point the finger at subtitles causing libmkv to freak out… I didnt see any method to disable subtitles in makemkv (I use plex, which auto-downloads the subtitles anyway.. ) But I found this in the section for handbrake..
# Additional HandBrake arguments.
HB_ARGS=”–subtitle scan -F”
Which I changed to this…
HB_ARGS=
I started another rip to see what happens, but I’m guessing I’ll run into the same error, unless I can figure out how to tell makemkv to skip subtitles..
A) Plex doesn’t download subtitles automatically. Not sure if you’ve enabled particular settings to get it to download them, but it’s not an automatic thing.
B) HB_ARGS is for when HandBrakeCLI is called. That happens AFTER the resultant content is grabbed by MakeMKV.
In your config file, what do you have the following items set to:
GET_VIDEO_TITLE
SKIP_TRANSCODE
MINLENGTH
RIPMETHOD
MKV_ARGS
PLEX_SUPPORT
Also, what version of MakeMKV do you have installed, and have you verified that you have a current license key? I wrote a script that runs at both machine boot up and at midnight each day to acquire the current license key and insert it into the configuration file. I’ve been running like this for months with only one issue about licensing, and that’s when the MakeMKV author mucked up the license key and it expired before he said it would.
I have plex configured to autograb subtitles on demand.
GET_VIDEO_TITLE=true
# Note: RIPMETHOD must be set to “mkv” for this feature to work
SKIP_TRANSCODE=false
MINLENGTH=”600″
RIPMETHOD=”mkv”
# MKV_ARGS=”–profile=/opt/arm/default.mmcp.xml”
# Below added in attempt to disable subtitles
MKV_ARGS=”/usr/share/MakeMKV/nosubs.mmcp.xml”
# Have HandBrake transcode the main feature only. BluRay discs must have RIPMETHOD=”backup” for this to work.
PLEX_SUPPORT=false
I just installed makemkv about 10 days ago, launched the GUI to initialize the license etc.. I too am working on a script to pull the new versions and update.. However, I was just going to buy the key and save the hassle of debugging yet another script (haha)..
root@Javelin:/opt/arm# makemkvcon info
MakeMKV v1.10.7 linux(x64-release) started
Note, I’ve been mucking around with a custom XML in an attempt to disable the subs as a debugging step..
Double Note. For those of you that seem to have issues when trying to rip when inserting the disc. If you run into an issue where it cannot read the disc from sr0, verify that you have disabled the linux equivalent to autorun in GDM/KDE etc… I ran into that issue early on in the install… When GDM sees a disk it doesnt mount it to the media folder that ARM is anticipating, rather to something like ROM0 or something similar.. cant remember… I had to go into GDM and disable the autoplay functionality… There is also a way to disable it globally from a config.. but my brain is failing me at the moment.
Since this entire effort is to create a “headless” ripping system, the fact that you have various additional packages and libraries installed to support a graphical environment means that your systems is significantly “different” than what was intended. This is supported by the fact that you even had to concern yourself with things like autorun type settings. It’s entirely possible that this is ultimately the root of your problem (meaning that it wasn’t built to be a fully headless system in the first place).
Set SKIP_TRANSCODE to true for testing – make sure that you’re getting the correct initial content from MakeMKV before you pass it over to a transcoding engine.
Also, set your MKV_ARGS to blank.
Once you are reliably able to rip content from the disc like this, you can move on to other things.
ahh..that was my snafu apparently… even though i MEANT to download the server version, apparently i clicked the first available link in the server list, which is actually desktop x64… woops.. I just rebuilt the server from scratch, now im actually not able to start the ripping haha
Oct 22 14:18:56 tow systemd[1]: Starting User Manager for UID 1000…
Oct 22 14:18:56 tow systemd[1]: Started Session 2 of user support.
Oct 22 14:18:56 tow systemd[1454]: Reached target Timers.
Oct 22 14:18:56 tow systemd[1454]: Reached target Sockets.
Oct 22 14:18:56 tow systemd[1454]: Reached target Paths.
Oct 22 14:18:56 tow systemd[1454]: Reached target Basic System.
Oct 22 14:18:56 tow systemd[1454]: Reached target Default.
Oct 22 14:18:56 tow systemd[1454]: Startup finished in 23ms.
Oct 22 14:18:56 tow systemd[1]: Started User Manager for UID 1000.
Oct 22 14:19:29 tow systemd-udevd[1563]: Process ‘/bin/systemctl start [email protected]‘ failed with exit code 5.
Why is it trying to start ARM functions as a service? SYSTEMD shouldn’t be part of the process…
no idea.. removed everything, rolled back to a fresh install snapshot and did it again.. now its ripping… will have to wait and see if it skips the mainfeature again… thanks for the assist.
Im trying some of your suggestions now. However one thing I am confused about is not installing a desktop manager with Ubuntu Server LTS 16.04. Is there a specific ISO/Flavor you guys are using that I’m not? To my knowledge ULTS installs a desktop manager as part of the base installation. I
I have no GUI components on my 16.04 LTS box. I used the “server” build (no GUI) for the installation.
HI ….
So I’m not getting subtitles.
I had this in config
HB_ARGS=”–native-language eng –subtitle scan,1,2,3,4,5,6,7,8,9,10 –subtitle-default=1 –subtitle-forced=1 –audio-lang-list eng –all-audio”
I changed it to this
HB_ARGS=”–native-language eng –subtitle scan,1,2,3,4,5,6,7,8,9,10 –subtitle-default=1 –subtitle-forced=1 –all-audio”
Now I’m waiting the next video to start,
but is this correct? When I do a ps -aux|grep Hand, I get:
root 10524 195 13.2 1598780 269792 ? SNl 17:13 13:50 HandBrakeCLI -i /home/fausto/rips/raw/Up (2011)_20171024_192824/title09.mkv -o /home/fausto/rips/Up (2011)/title09.mkv –preset=High Profile
root 10659 0.0 0.0 14224 1036 pts/0 S+ 17:20 0:00 grep –color=auto Hand
am I supposed to see the whole command?
Thanks
TIm
Just tried this… not sure if it’s working …. but the HandBrakeCLI man says “–” before the commands? is this correct??
HB_ARGS=”–native-language eng –subtitle scan,1,2,3,4,5,6,7,8,9,10 –subtitle-default=1 –subtitle-forced=1 –all-audio”
Thanks
Tim
Not sure if it’s a formatting thing based on how you’re typing it in, but… all of your HB_ARGS info looks the same to me in both of your posts – I can’t tell what you believe you’ve changed.
On a related topic, how are you ripping the media in the first place? Are you ripping as MKV or BACKUP? What kind of discs (BluRay, DVD)? What are the command-line options you’re using for makemkvcon?
I use HandBrakeCLI, but not part of the ARM system. I run it on a much higher powered machine to speed things up and my command line is very simple:
HandBrakeCLI -i –preset=”HQ 1080p30 Surround” -s scan -o
It appears that different command line options may require different dashes based on what the parameter is. Notice that “preset” is –preset and “s” is -s scan.
Also, the way that my system works, I use the “-s scan” to ONLY look for forced subtitles and burn them directly into the MP4 file that I’m creating. The -s scan option basically tells HB to look only for those tracks that are present in less than 10% of the movie. Those would be where characters are speaking non-native language of pretty much any origin and will be grabbed and burned into the MP4 container.
BTW.. For BluRay, I rip to MKV, transcode to MP4 with forced subs at fairly high quality (can’t see any PQ loss on a 75″ 4K set), then transcode again to M4V and relocate the MOOV atom to the beginning of the file. For me, I see between 55% and 75% reduction in file size with ZERO quality loss.
Gotta love wordpress formatting…
The “preset” option is preceded by two dashes while the “s” option (I found that “subtitle” is incorrect… tons of digging online to get the CORRECT option names…) is preceded by a single dash.
Ben – maybe turn off the WYSIWIG editor if it’s on? Or change editors? Pretty irritating that there’s no way to control the formatting when it auto-changes things AFTER form submit. :(
“I found that “subtitle” is incorrect… tons of digging online to get the CORRECT option names…)”
Does this mean that “HB_ARGS=”–native-language eng –subtitle scan,1,2,3,4,5,6,7,8,9,10 –subtitle-default=1 –subtitle-forced=1 –all-audio””
should be HB_ARGS=”–native-language eng –s scan,1,2,3,4,5,6,7,8,9,10 –s-default=1 –s-forced=1 –all-audio”
or
HB_ARGS=”–native-language eng –s scan,1,2,3,4,5,6,7,8,9,10 –subtitle-default=1 –subtitle-forced=1 –all-audio”
I don’t really see that many options in WP, does the code
tag work for you?
Double “-” as opposed to single “-” … can someone give me the correct format
OH JEEEZ … now I see ” a single “-‘ where i posted ” – – ” two for the config. can someone verify … what is this whole thing supposed to look like. I have a great MKV’s with perfect subtitles ripped from dvd. Then through handbrake, I loose everything .. THis is what I have now. …what should I have?
# Handbrake preset profile
# Execute “HandBrakeCLI -z” to see a list of all presets
HB_PRESET=”High Profile”
# Extension of the final video file
DEST_EXT=mkv
# Handbrake binary to call
HANDBRAKE_CLI=HandBrakeCLI
# Have HandBrake transcode the main feature only. BluRay discs must have RIPMETHOD=”backup” for this to work.
# If MAINFEATURE is true, blurays will be backed up to the HD and then HandBrake will go to work on the backed up
# files. For normal DVDs, ARM will bypass MakeMKV and hand off the dvd directly to HandBrake. This will require
# libdvdcss2 be installed.
# NOTE: For the most part, HandBrake correctly identifies the main feature on movie DVD’s, although it is not perfect.
# However, it does not handle tv shows well at all. You will likely want this value to be false when ripping tv shows.
MAINFEATURE=false
# Additional HandBrake arguments.
HB_ARGS=”–native-language eng –subtitle scan,1,2,3,4,5,6,7,8,9,10 –subtitle-default=1 –subtitle-forced=1 –all-audio”
lets try that again
# Additional HandBrake arguments.
HB_ARGS=”- -native-language eng – -subtitle scan,1,2,3,4,5,6,7,8,9,10 – -subtitle-default=1 –subtitle-forced=1 – -all-audio”
ok … driving me insain …. this is what I have now
HB_ARGS=”-N eng – -all-audio -s scan 1,2,3,4,5,6,7,8,9,10 -F ”
no subtitles
Get rid of the numbers… just “-s scan”
nope still no subs
OK … now I hav
HB_ARGS=”-N eng – -all-audio -s scan -F ”
Still no subtitles
SO … in trying to sort this … I found this line commented out int the transcodd.sh file
# echo “$HANDBRAKE_CLI -i $DEVNAME -o \”${DEST}/${LABEL}.${DEST_EXT}\” –main-feature –preset=”${HB_PRESET}” –subtitle scan -F 2″ >> $LOG
looks like it’s just outputting to the logs … but its a shot in the dark…
THoughts?
You’re exactly right – it’s nothing more than a way to log what’s supposed to be going on. If that line doesn’t match the line after it (minus the echo statement and redirection to $LOG), however, then it isn’t accurate to enter that info into the log.
Can someone post a working copy of the subtitle section of their config file …. still cannon get anything subtitles.
Here’s what I have:
HB_ARGS="--native-language eng --subtitle scan,1,2,3,4,5,6,7,8,9,10 --subtitle-default=1 --subtitle-forced=1 --audio-lang-list eng --all-audio"
This should rip all subtitles, but it makes the English language subtitle track that is only used when someone is speaking a non-English language the first. (e.g. in Star Trek if someone is speaking Klingon).
Yeah …thats what I have …. but I get very nice ripped dvd’s to mkv with all subtitles …. then they are run compressed and loose all the subtitles….
So this is my entire handbrake section…. with the above line added …
AM I missing a library fro handbrake or something?
T
## HandBrake Parameters ##
##########################
# Handbrake preset profile
# Execute “HandBrakeCLI -z” to see a list of all presets
HB_PRESET=”High Profile”
# Extension of the final video file
DEST_EXT=mkv
# Handbrake binary to call
HANDBRAKE_CLI=HandBrakeCLI
# Have HandBrake transcode the main feature only. BluRay discs must have RIPMETHOD=”backup” for this to work.
# If MAINFEATURE is true, blurays will be backed up to the HD and then HandBrake will go to work on the backed up
# files. For normal DVDs, ARM will bypass MakeMKV and hand off the dvd directly to HandBrake. This will require
# libdvdcss2 be installed.
# NOTE: For the most part, HandBrake correctly identifies the main feature on movie DVD’s, although it is not perfect.
# However, it does not handle tv shows well at all. You will likely want this value to be false when ripping tv shows.
MAINFEATURE=false
# Additional HandBrake arguments.
# OLD HB_ARGS=”–native-language eng –subtitle scan,1,2,3,4,5,6,7,8,9,10 –subtitle-default=1 –subtitle-forced=1 –all-audio”
#HB_ARGS=”–all-audio -s scan -F –native-language eng”
HB_ARGS=”–native-language eng –subtitle scan,1,2,3,4,5,6,7,8,9,10 –subtitle-default=1 –subtitle-forced=1 –audio-lang-list eng –all-audio”
Well holy smokes .. it’s now working WTF
Thank you … this has been driving me nuts for days!!
Anyone have an idea why handbrake will not do movies after the script has “sent to transcode queue”? I have rebuilt my VM twice and it won’t run with all variations of skip transcode, move it backup, and main feature. A general config won’t work. I can run the cli from terminal with no errors.
Thanks everyone!
Does this work best using Ubuntu 16.04 with a GUI or will it work well with the server version.
I have only tested it with the server version. It should work with the GUI version a well but I haven’t tried it.
I believe that I had a TON of trouble when I first tried building this because I was using the GUI / Desktop version and not the Server version. The two different releases install a lot of different base libraries and such and it created a mess for me.
First off thanks Benjamin for automating this process. Secondly I was able to get this working in both the Ubuntu Desktop 16.04 LTS and Ubuntu Server 16.04 just in case someone else is wondering. Both machines were VM’s hosted via ProxMox 5.1. I was unable to get a SATA bluray drive working however I had success with a usb dvd drive. I’m hoping to get an external blu-ray drive soon and give that a try. Thanks again!
Thanks, for the info Lloyd. FYI – someone has instructions for using ARM with ProxMox (I believe using SATA drives) here: https://www.reddit.com/r/homelab/comments/7bgtu9/a_simple_solution_for_getting_automated_ripping/
Excellent script! Working flawlessly on Linux Mint 18.2 running on real hardware. Bit of a newb with HandbrakeCLI. Is there a way to shutdown the machine automatically after the encode is complete?
Hi Folks …. so the Make MKV beta just ended. Does anyone have any idea if there is a new beta license or are we simply down to buying the thing?
The BETA has not ended. The license key that was supposed to have been good through the end of November expired a couple of days early. There is a new key posted that’s good until the end of January (or at least very close). I imported the new key and ripped three BluRay discs just this morning.
oh awesome …. I see it now … thank’s Mark
73
I’ve been wanting to make something like this for years, but never found the time to do it. Thanks a ton for the help. I was able to set up an old compy I had lying around as an ARM and Plex server using Ubuntu for my sister to back up all of her DVD’s. Of course, I set it up so I can share her library too. :-) I did add a tweak to use the IMDB python library to look up the movies instead and that seemed to work better.
Is it possible to only trans-code the main feature? I would prefer to not have the extras.
So script is working wonders with my collection …. except … Seven Samurai and Run Lola Run…. Even in the raw mkv file before it gets to handbrake ….. I can’t get any audio tracks but the english commentary for Seven Samurai and I can only get the english overdub for “run lola run”. I feel as if the answer lies in the /opt/arm/default.mmcp.xml file …. but I’m not sure how to go about messing with it in order to get the correct audio.
Thanks for any ideas
Tim
Wanted to provide some info for a problem I ran into and how I solved. I’m running the ARM as an Ubuntu 16.04 VM on VMware. The VM’s OS and Data Drives are running from a NAS, so I dont have any datastores or VMs running on local drives in the VMware host.
When I first started using ARM, I was having it rip straight to my NAS, not to the “local drive” (which, as I stated above, is not really local anyway). At first, everything was fine. But then I started noticing that some of the rips were coming out corrupted. After some investigation, I concluded that by having the ARM stream the ripped bits over the network to my NAS, the rips were more susceptible to corruption. I determined that I needed to have the initial rip happen locally, then transmit the output files to my NAS. But simply removing my NAS from fstab wasnt a good alternative, because then the ARM would rip to the “local drives”, which as I mentioned, are actually remote.
The best solution was to install a physical drive into my host, create a virtual disk on the physical disk and attach the virtual disk to my existing VM. This way I have a local target drive to rip to that is local to the host with the bluray drive, but my ARM VM is still running from my NAS in another part of the house. I also added a couple of scripts to automatically copy the locally ripped files to the NAS and then purge the local drive after the files are copied.
Hi. First, thanks for this useful tool. I’ve been tinkering with it trying to get things set up just the way I want, and I’ve run into a bit of a snag. Had been ripping/transcoding things just fine using “mkv” rip method, but wanted to try out the “backup” method, wondering if that would allow me to preserve a blu-ray’s menus and such for use in Plex. MakeMKV appears to rip the whole disc to hard drive, but then Handbrake errors right away. I’ll paste the log file below, would appreciate if you had any ideas for me. Thanks!
*** Start config parameters ****
Timestamp: Tue, 26 Dec 2017 12:33:05 -0700
ARM_CHECK_UDF=true
GET_VIDEO_TITLE=true
SKIP_TRANSCODE=false
ARMPATH=”/md1/ARM/Movies/”
RAWPATH=”/md0/ARM/raw/”
MEDIA_DIR=”/md1/Media/Movies/”
LOGPATH=”/opt/arm/logs/”
LOGLIFE=1
LOG_SINGLE_FILE=false
SET_MEDIA_PERMISSIONS=false
CHMOD_VALUE=777
SET_MEDIA_OWNER=true
CHOWN_USER=server-admin
CHOWN_GROUP=server-admin
MINLENGTH=”0″
RIPMETHOD=”backup”
MKV_ARGS=””
HB_PRESET=”High Profile”
DEST_EXT=mkv
HANDBRAKE_CLI=HandBrakeCLI
MAINFEATURE=false
HB_ARGS=”–subtitle scan -F”
PLEX_SUPPORT=true
NOTIFY_RIP=true
NOTIFY_TRANSCODE=true
IFTTT_EVENT=”arm_event”
*** End config parameters ****
Starting Identify Script…
Deleting 0 old log files:
DEVLINKS=/dev/disk/by-uuid/8CE00A2325A1B013 /dev/disk/by-id/ata-HL-DT-ST_BDDVDRW_GGC-H20L_K5D7CKF1651 /dev/cdrw /dev/dvd /dev/dvdrw /dev/disk/by-label/A_NEW_HOPE /dev/cdrom /dev/disk/by-path/pci-0000:00:1f.2-ata-6
DEVNAME=/dev/sr0
DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata6/host5/target5:0:0/5:0:0:0/block/sr0
DEVTYPE=disk
ID_ATA=1
ID_ATA_FEATURE_SET_PM=1
ID_ATA_FEATURE_SET_PM_ENABLED=1
ID_ATA_SATA=1
ID_ATA_SATA_SIGNAL_RATE_GEN1=1
ID_BUS=ata
ID_CDROM=1
ID_CDROM_BD=1
ID_CDROM_CD=1
ID_CDROM_CD_R=1
ID_CDROM_CD_RW=1
ID_CDROM_DVD=1
ID_CDROM_DVD_PLUS_R=1
ID_CDROM_DVD_PLUS_RW=1
ID_CDROM_DVD_PLUS_R_DL=1
ID_CDROM_DVD_R=1
ID_CDROM_DVD_RAM=1
ID_CDROM_DVD_RW=1
ID_CDROM_HDDVD=1
ID_CDROM_MEDIA=1
ID_CDROM_MEDIA_BD=1
ID_CDROM_MEDIA_SESSION_COUNT=1
ID_CDROM_MEDIA_STATE=complete
ID_CDROM_MEDIA_TRACK_COUNT=1
ID_CDROM_MEDIA_TRACK_COUNT_DATA=1
ID_FOR_SEAT=block-pci-0000_00_1f_2-ata-6
ID_FS_LABEL=A_NEW_HOPE
ID_FS_LABEL_ENC=A_NEW_HOPE
ID_FS_TYPE=udf
ID_FS_USAGE=filesystem
ID_FS_UUID=8CE00A2325A1B013
ID_FS_UUID_ENC=8CE00A2325A1B013
ID_MODEL=HL-DT-ST_BDDVDRW_GGC-H20L
ID_MODEL_ENC=HL-DT-ST\x20BDDVDRW\x20GGC-H20L\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20
ID_PATH=pci-0000:00:1f.2-ata-6
ID_PATH_TAG=pci-0000_00_1f_2-ata-6
ID_REVISION=1.03
ID_SERIAL=HL-DT-ST_BDDVDRW_GGC-H20L_K5D7CKF1651
ID_SERIAL_SHORT=K5D7CKF1651
ID_TYPE=cd
MAJOR=11
MINOR=0
SUBSYSTEM=block
TAGS=:seat:uaccess:systemd:
USEC_INITIALIZED=4104816
identified udf
found A_NEW_HOPE on /dev/sr0
identified udf as video
Obtained Title A New Hope (2011)
got to here
HAS_NICE_TITLE is true
video title is now A New Hope (2011)
video type is fail
Starting video_rip.sh
Video Title is A New Hope (2011)
Ripping video A_NEW_HOPE from /dev/sr0
Using backup method of ripping.
MSG:1005,0,1,”MakeMKV v1.10.8 linux(x64-release) started”,”%1 started”,”MakeMKV v1.10.8 linux(x64-release)”
DRV:0,2,999,28,”HD-DVD-ROM HL-DT-ST BDDVDRW GGC-H20L 1.03″,”A_NEW_HOPE”,”/dev/sr0″
DRV:1,256,999,0,””,””,””
DRV:2,256,999,0,””,””,””
DRV:3,256,999,0,””,””,””
DRV:4,256,999,0,””,””,””
DRV:5,256,999,0,””,””,””
DRV:6,256,999,0,””,””,””
DRV:7,256,999,0,””,””,””
DRV:8,256,999,0,””,””,””
DRV:9,256,999,0,””,””,””
DRV:10,256,999,0,””,””,””
DRV:11,256,999,0,””,””,””
DRV:12,256,999,0,””,””,””
DRV:13,256,999,0,””,””,””
DRV:14,256,999,0,””,””,””
DRV:15,256,999,0,””,””,””
MSG:5072,0,1,”Backing up disc into folder \”/md0/ARM/raw//A New Hope (2011)_20171226_123307/\””,”Backing up disc into folder \”%1\””,”/md0/ARM/raw//A New Hope (2011)_20171226_123307/”
MSG:3317,16777216,1,”Loaded 14 SVQ file(s)”,”Loaded %1 SVQ file(s)”,”14″
MSG:3326,0,0,”Processing BD+ code, please be patient – this may take up to few minutes”,”Processing BD+ code, please be patient – this may take up to few minutes”
MSG:3324,0,1,”Processing BD+ code using generic SVQ from builtin/generic.svq”,”Processing BD+ code using generic SVQ from %1″,”builtin/generic.svq”
MSG:3328,0,2,”BD+ code processed, got 1 FUT(s) for 1 clip(s)”,”BD+ code processed, got %1 FUT(s) for %2 clip(s)”,”1″,”1″
MSG:5085,0,0,”Loaded content hash table, will verify integrity of M2TS files.”,”Loaded content hash table, will verify integrity of M2TS files.”
MSG:2003,0,3,”Error ‘Scsi error – NOT READY:MEDIUM NOT PRESENT’ occurred while reading ‘/BDMV/STREAM/00304.m2ts’ at offset ‘320077824’”,”Error ‘%1’ occurred while reading ‘%2’ at offset ‘%3′”,”Scsi error – NOT READY:MEDIUM NOT PRESENT”,”/BDMV/STREAM/00304.m2ts”,”320077824″
MSG:5069,128,0,”Backup failed”,”Backup failed”
MSG:5080,516,0,”Backup failed.”,”Backup failed.”
STAT: A_NEW_HOPE ripped in 0 hours, 8 minutes and 50 seconds.
/opt/arm/video_transcode.sh “/md0/ARM/raw//A New Hope (2011)_20171226_123307” “A New Hope (2011)” “true” “fail” “20171226_123307” “/opt/arm/logs/A_NEW_HOPE.log”
A New Hope (2011) sent to transcoding queue…
Pushbullet notifications not enabled
Sending IFTTT notification
Congratulations! You’ve fired the arm_event event
IFTTT notification sentPusover notifications not enabled
EMail notifications not enabled
Start video transcoding script
transcoding with a nice title
directory already exists… adding timestamp
Transcoding all files.
Transcoding file 0012FA
[12:42:58] hb_init: starting libhb thread
[12:42:58] thread 7f653314b700 started (“libhb”)
HandBrake 1.0.4 (2017040900) – Linux x86_64 – https://handbrake.fr
4 CPUs detected
Opening /md0/ARM/raw//A New Hope (2011)_20171226_123307/0012FA…
[12:42:58] CPU: Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
[12:42:58] – logical processor count: 4
[12:42:58] hb_scan: path=/md0/ARM/raw//A New Hope (2011)_20171226_123307/0012FA, title_index=1
disc.c:352: error opening file BDMV/index.bdmv
disc.c:352: error opening file BDMV/BACKUP/index.bdmv
[12:42:58] bd: not a bd – trying as a stream/file instead
libdvdnav: Using dvdnav version 5.0.1
libdvdread: Couldn’t find device name.
libdvdread:DVDOpenFilePath:findDVDFile /VIDEO_TS/VIDEO_TS.IFO failed
libdvdread:DVDOpenFilePath:findDVDFile /VIDEO_TS/VIDEO_TS.BUP failed
libdvdread: Can’t open file VIDEO_TS.IFO.
libdvdnav: vm: failed to read VIDEO_TS.IFO
[12:42:58] dvd: not a dvd – trying as a stream/file instead
[12:42:58] batch: scanning /md0/ARM/raw//A New Hope (2011)_20171226_123307/0012FA/disc.bbd
[12:42:58] hb_stream_open: open /md0/ARM/raw//A New Hope (2011)_20171226_123307/0012FA/disc.bbd failed
[12:42:58] libhb: scan thread found 0 valid title(s)
No title found.
HandBrake has exited.
Transcoding file BDMV
[12:42:58] hb_init: starting libhb thread
[12:42:58] thread 7f4babc7a700 started (“libhb”)
HandBrake 1.0.4 (2017040900) – Linux x86_64 – https://handbrake.fr
4 CPUs detected
Opening /md0/ARM/raw//A New Hope (2011)_20171226_123307/BDMV…
[12:42:58] CPU: Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
[12:42:58] – logical processor count: 4
[12:42:58] hb_scan: path=/md0/ARM/raw//A New Hope (2011)_20171226_123307/BDMV, title_index=1
disc.c:352: error opening file BDMV/index.bdmv
disc.c:352: error opening file BDMV/BACKUP/index.bdmv
[12:42:58] bd: not a bd – trying as a stream/file instead
libdvdnav: Using dvdnav version 5.0.1
libdvdread: Couldn’t find device name.
libdvdread:DVDOpenFilePath:findDVDFile /VIDEO_TS/VIDEO_TS.IFO failed
libdvdread:DVDOpenFilePath:findDVDFile /VIDEO_TS/VIDEO_TS.BUP failed
libdvdread: Can’t open file VIDEO_TS.IFO.
libdvdnav: vm: failed to read VIDEO_TS.IFO
[12:42:58] dvd: not a dvd – trying as a stream/file instead
[12:42:58] batch: scanning /md0/ARM/raw//A New Hope (2011)_20171226_123307/BDMV/MovieObject.bdmv
[mp3 @ 0x7f4ba4004540] Header missing
Input #0, mp3, from ‘/md0/ARM/raw//A New Hope (2011)_20171226_123307/BDMV/MovieObject.bdmv’:
Duration: 00:00:02.67, start: 0.000000, bitrate: 160 kb/s
Stream #0:0: Audio: mp1
44100 Hz, stereo, s16p, 160 kb/s
[12:42:58] hb_stream_open: open /md0/ARM/raw//A New Hope (2011)_20171226_123307/BDMV/MovieObject.bdmv failed
[12:42:58] libhb: scan thread found 0 valid title(s)
No title found.
HandBrake has exited.
Transcoding file CERTIFICATE
[12:42:58] hb_init: starting libhb thread
[12:42:58] thread 7f7178e1d700 started (“libhb”)
HandBrake 1.0.4 (2017040900) – Linux x86_64 – https://handbrake.fr
4 CPUs detected
Opening /md0/ARM/raw//A New Hope (2011)_20171226_123307/CERTIFICATE…
[12:42:58] CPU: Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
[12:42:58] – logical processor count: 4
[12:42:58] hb_scan: path=/md0/ARM/raw//A New Hope (2011)_20171226_123307/CERTIFICATE, title_index=1
disc.c:352: error opening file BDMV/index.bdmv
disc.c:352: error opening file BDMV/BACKUP/index.bdmv
[12:42:58] bd: not a bd – trying as a stream/file instead
libdvdnav: Using dvdnav version 5.0.1
libdvdread: Couldn’t find device name.
libdvdread:DVDOpenFilePath:findDVDFile /VIDEO_TS/VIDEO_TS.IFO failed
libdvdread:DVDOpenFilePath:findDVDFile /VIDEO_TS/VIDEO_TS.BUP failed
libdvdread: Can’t open file VIDEO_TS.IFO.
libdvdnav: vm: failed to read VIDEO_TS.IFO
[12:42:58] dvd: not a dvd – trying as a stream/file instead
[12:42:58] batch: scanning /md0/ARM/raw//A New Hope (2011)_20171226_123307/CERTIFICATE/app.discroot.crt
[mp3 @ 0x7f71700049a0] Header missing
Input #0, mp3, from ‘/md0/ARM/raw//A New Hope (2011)_20171226_123307/CERTIFICATE/app.discroot.crt’:
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Audio: mp2
0 channels, s16p
[12:42:58] hb_stream_open: open /md0/ARM/raw//A New Hope (2011)_20171226_123307/CERTIFICATE/app.discroot.crt failed
[12:42:58] libhb: scan thread found 0 valid title(s)
No title found.
HandBrake has exited.
Transcoding file MAKEMKV
[12:42:58] hb_init: starting libhb thread
[12:42:58] thread 7fbac334b700 started (“libhb”)
HandBrake 1.0.4 (2017040900) – Linux x86_64 – https://handbrake.fr
4 CPUs detected
Opening /md0/ARM/raw//A New Hope (2011)_20171226_123307/MAKEMKV…
[12:42:58] CPU: Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
[12:42:58] – logical processor count: 4
[12:42:58] hb_scan: path=/md0/ARM/raw//A New Hope (2011)_20171226_123307/MAKEMKV, title_index=1
aacs.c:470: Error calculating media key. Missing right processing key ?
mmc_device_linux.c:178: No MMC drive mounted to /md0/ARM/raw/A New Hope (2011)_20171226_123307/MAKEMKV
mmc.c:376: AACS not active or supported by the drive
Scanning title 1 of 1, 0.00 %
Scanning title 1 of 1, 0.00 %
Scanning title 1 of 1, 0.00 %aacs.c:110: No usable AACS libraries found!
dec.c:197: aacs_open() failed: -3!
disc.c:352: error opening file BDMV/index.bdmv
disc.c:352: error opening file BDMV/BACKUP/index.bdmv
[12:42:59] bd: not a bd – trying as a stream/file instead
libdvdnav: Using dvdnav version 5.0.1
libdvdread: Couldn’t find device name.
libdvdread:DVDOpenFilePath:findDVDFile /VIDEO_TS/VIDEO_TS.IFO failed
libdvdread:DVDOpenFilePath:findDVDFile /VIDEO_TS/VIDEO_TS.BUP failed
libdvdread: Can’t open file VIDEO_TS.IFO.
libdvdnav: vm: failed to read VIDEO_TS.IFO
[12:42:59] dvd: not a dvd – trying as a stream/file instead
[12:42:59] batch: scanning /md0/ARM/raw//A New Hope (2011)_20171226_123307/MAKEMKV/discattd.dat
[12:42:59] hb_stream_open: open /md0/ARM/raw//A New Hope (2011)_20171226_123307/MAKEMKV/discattd.dat failed
[12:42:59] libhb: scan thread found 0 valid title(s)
No title found.
HandBrake has exited.
STAT: A New Hope (2011) transcoded in 0 hours, 0 minutes and 2 seconds.
Pushbullet notifications not enabled
Sending IFTTT notification
Congratulations! You’ve fired the arm_event event
IFTTT notification sentPusover notifications not enabled
EMail notifications not enabled
*** Start config parameters ****
Timestamp: Tue, 26 Dec 2017 12:51:22 -0700
ARM_CHECK_UDF=true
GET_VIDEO_TITLE=true
SKIP_TRANSCODE=false
ARMPATH=”/md1/ARM/Movies/”
RAWPATH=”/md0/ARM/raw/”
MEDIA_DIR=”/md1/Media/Movies/”
LOGPATH=”/opt/arm/logs/”
LOGLIFE=1
LOG_SINGLE_FILE=false
SET_MEDIA_PERMISSIONS=false
CHMOD_VALUE=777
SET_MEDIA_OWNER=true
CHOWN_USER=server-admin
CHOWN_GROUP=server-admin
MINLENGTH=”600″
RIPMETHOD=”backup”
MKV_ARGS=””
HB_PRESET=”High Profile”
DEST_EXT=mkv
HANDBRAKE_CLI=HandBrakeCLI
MAINFEATURE=true
HB_ARGS=”–subtitle scan -F”
PLEX_SUPPORT=true
NOTIFY_RIP=true
NOTIFY_TRANSCODE=true
IFTTT_EVENT=”arm_event”
*** End config parameters ****
Starting Identify Script…
Deleting 0 old log files:
DEVLINKS=/dev/dvd /dev/dvdrw /dev/disk/by-label/A_NEW_HOPE /dev/disk/by-uuid/8CE00A2325A1B013 /dev/disk/by-id/ata-HL-DT-ST_BDDVDRW_GGC-H20L_K5D7CKF1651 /dev/cdrom /dev/disk/by-path/pci-0000:00:1f.2-ata-6 /dev/cdrw
DEVNAME=/dev/sr0
DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata6/host5/target5:0:0/5:0:0:0/block/sr0
DEVTYPE=disk
ID_ATA=1
ID_ATA_FEATURE_SET_PM=1
ID_ATA_FEATURE_SET_PM_ENABLED=1
ID_ATA_SATA=1
ID_ATA_SATA_SIGNAL_RATE_GEN1=1
ID_BUS=ata
ID_CDROM=1
ID_CDROM_BD=1
ID_CDROM_CD=1
ID_CDROM_CD_R=1
ID_CDROM_CD_RW=1
ID_CDROM_DVD=1
ID_CDROM_DVD_PLUS_R=1
ID_CDROM_DVD_PLUS_RW=1
ID_CDROM_DVD_PLUS_R_DL=1
ID_CDROM_DVD_R=1
ID_CDROM_DVD_RAM=1
ID_CDROM_DVD_RW=1
ID_CDROM_HDDVD=1
ID_CDROM_MEDIA=1
ID_CDROM_MEDIA_BD=1
ID_CDROM_MEDIA_SESSION_COUNT=1
ID_CDROM_MEDIA_STATE=complete
ID_CDROM_MEDIA_TRACK_COUNT=1
ID_CDROM_MEDIA_TRACK_COUNT_DATA=1
ID_FOR_SEAT=block-pci-0000_00_1f_2-ata-6
ID_FS_LABEL=A_NEW_HOPE
ID_FS_LABEL_ENC=A_NEW_HOPE
ID_FS_TYPE=udf
ID_FS_USAGE=filesystem
ID_FS_UUID=8CE00A2325A1B013
ID_FS_UUID_ENC=8CE00A2325A1B013
ID_MODEL=HL-DT-ST_BDDVDRW_GGC-H20L
ID_MODEL_ENC=HL-DT-ST\x20BDDVDRW\x20GGC-H20L\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20
ID_PATH=pci-0000:00:1f.2-ata-6
ID_PATH_TAG=pci-0000_00_1f_2-ata-6
ID_REVISION=1.03
ID_SERIAL=HL-DT-ST_BDDVDRW_GGC-H20L_K5D7CKF1651
ID_SERIAL_SHORT=K5D7CKF1651
ID_TYPE=cd
MAJOR=11
MINOR=0
SUBSYSTEM=block
TAGS=:seat:uaccess:systemd:
USEC_INITIALIZED=4104816
identified udf
found A_NEW_HOPE on /dev/sr0
identified udf as video
Obtained Title A New Hope (2011)
got to here
HAS_NICE_TITLE is true
video title is now A New Hope (2011)
video type is fail
Starting video_rip.sh
Video Title is A New Hope (2011)
Ripping video A_NEW_HOPE from /dev/sr0
Using backup method of ripping.
MSG:1005,0,1,”MakeMKV v1.10.8 linux(x64-release) started”,”%1 started”,”MakeMKV v1.10.8 linux(x64-release)”
DRV:0,2,999,28,”HD-DVD-ROM HL-DT-ST BDDVDRW GGC-H20L 1.03″,”A_NEW_HOPE”,”/dev/sr0″
DRV:1,256,999,0,””,””,””
DRV:2,256,999,0,””,””,””
DRV:3,256,999,0,””,””,””
DRV:4,256,999,0,””,””,””
DRV:5,256,999,0,””,””,””
DRV:6,256,999,0,””,””,””
DRV:7,256,999,0,””,””,””
DRV:8,256,999,0,””,””,””
DRV:9,256,999,0,””,””,””
DRV:10,256,999,0,””,””,””
DRV:11,256,999,0,””,””,””
DRV:12,256,999,0,””,””,””
DRV:13,256,999,0,””,””,””
DRV:14,256,999,0,””,””,””
DRV:15,256,999,0,””,””,””
MSG:5072,0,1,”Backing up disc into folder \”/md0/ARM/raw//A New Hope (2011)_20171226_125125/\””,”Backing up disc into folder \”%1\””,”/md0/ARM/raw//A New Hope (2011)_20171226_125125/”
MSG:3317,16777216,1,”Loaded 14 SVQ file(s)”,”Loaded %1 SVQ file(s)”,”14″
MSG:3326,0,0,”Processing BD+ code, please be patient – this may take up to few minutes”,”Processing BD+ code, please be patient – this may take up to few minutes”
MSG:3324,0,1,”Processing BD+ code using generic SVQ from builtin/generic.svq”,”Processing BD+ code using generic SVQ from %1″,”builtin/generic.svq”
MSG:3328,0,2,”BD+ code processed, got 1 FUT(s) for 1 clip(s)”,”BD+ code processed, got %1 FUT(s) for %2 clip(s)”,”1″,”1″
MSG:5085,0,0,”Loaded content hash table, will verify integrity of M2TS files.”,”Loaded content hash table, will verify integrity of M2TS files.”
MSG:2003,0,3,”Error ‘Scsi error – NOT READY:MEDIUM NOT PRESENT’ occurred while reading ‘HD-DVD-ROM HL-DT-ST BDDVDRW GGC-H20L 1.03’ at offset ‘76541952’”,”Error ‘%1’ occurred while reading ‘%2’ at offset ‘%3′”,”Scsi error – NOT READY:MEDIUM NOT PRESENT”,”HD-DVD-ROM HL-DT-ST BDDVDRW GGC-H20L 1.03″,”76541952″
MSG:2003,16777216,3,”Error ‘Scsi error – NOT READY:MEDIUM NOT PRESENT’ occurred while reading ‘/BDSVM/BACKUP/00002.svm’ at offset ‘2070528’”,”Error ‘%1’ occurred while reading ‘%2’ at offset ‘%3′”,”Scsi error – NOT READY:MEDIUM NOT PRESENT”,”/BDSVM/BACKUP/00002.svm”,”2070528″
MSG:2003,0,3,”Error ‘Scsi error – NOT READY:MEDIUM NOT PRESENT’ occurred while reading ‘/BDSVM/BACKUP/00002.svm’ at offset ‘2070528’”,”Error ‘%1’ occurred while reading ‘%2’ at offset ‘%3′”,”Scsi error – NOT READY:MEDIUM NOT PRESENT”,”/BDSVM/BACKUP/00002.svm”,”2070528″
MSG:2003,16777216,3,”Error ‘Scsi error – NOT READY:MEDIUM NOT PRESENT’ occurred while reading ‘/BDSVM/BACKUP/00002.svm’ at offset ‘2070528’”,”Error ‘%1’ occurred while reading ‘%2’ at offset ‘%3′”,”Scsi error – NOT READY:MEDIUM NOT PRESENT”,”/BDSVM/BACKUP/00002.svm”,”2070528″
MSG:2003,0,3,”Error ‘Scsi error – NOT READY:MEDIUM NOT PRESENT’ occurred while reading ‘/BDSVM/BACKUP/00002.svm’ at offset ‘2070528’”,”Error ‘%1’ occurred while reading ‘%2’ at offset ‘%3′”,”Scsi error – NOT READY:MEDIUM NOT PRESENT”,”/BDSVM/BACKUP/00002.svm”,”2070528″
MSG:2003,16777216,3,”Error ‘Scsi error – NOT READY:MEDIUM NOT PRESENT’ occurred while reading ‘/BDSVM/BACKUP/00002.svm’ at offset ‘2070528’”,”Error ‘%1’ occurred while reading ‘%2’ at offset ‘%3′”,”Scsi error – NOT READY:MEDIUM NOT PRESENT”,”/BDSVM/BACKUP/00002.svm”,”2070528″
MSG:2003,0,3,”Error ‘Scsi error – NOT READY:MEDIUM NOT PRESENT’ occurred while reading ‘HD-DVD-ROM HL-DT-ST BDDVDRW GGC-H20L 1.03’ at offset ‘76541952’”,”Error ‘%1’ occurred while reading ‘%2’ at offset ‘%3′”,”Scsi error – NOT READY:MEDIUM NOT PRESENT”,”HD-DVD-ROM HL-DT-ST BDDVDRW GGC-H20L 1.03″,”76541952″
MSG:5069,128,0,”Backup failed”,”Backup failed”
MSG:5080,516,0,”Backup failed.”,”Backup failed.”
STAT: A_NEW_HOPE ripped in 0 hours, 0 minutes and 40 seconds.
/opt/arm/video_transcode.sh “/md0/ARM/raw//A New Hope (2011)_20171226_125125” “A New Hope (2011)” “true” “fail” “20171226_125125” “/opt/arm/logs/A_NEW_HOPE.log”
A New Hope (2011) sent to transcoding queue…
Pushbullet notifications not enabled
Sending IFTTT notification
Start video transcoding script
transcoding with a nice title
Transcoding all files.
Transcoding file 0012FA
[12:52:05] hb_init: starting libhb thread
[12:52:05] thread 7f39101f2700 started (“libhb”)
HandBrake 1.0.4 (2017040900) – Linux x86_64 – https://handbrake.fr
4 CPUs detected
Opening /md0/ARM/raw//A New Hope (2011)_20171226_125125/0012FA…
[12:52:05] CPU: Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
[12:52:05] – logical processor count: 4
[12:52:05] hb_scan: path=/md0/ARM/raw//A New Hope (2011)_20171226_125125/0012FA, title_index=1
disc.c:352: error opening file BDMV/index.bdmv
disc.c:352: error opening file BDMV/BACKUP/index.bdmv
[12:52:05] bd: not a bd – trying as a stream/file instead
libdvdnav: Using dvdnav version 5.0.1
libdvdread: Couldn’t find device name.
libdvdread:DVDOpenFilePath:findDVDFile /VIDEO_TS/VIDEO_TS.IFO failed
libdvdread:DVDOpenFilePath:findDVDFile /VIDEO_TS/VIDEO_TS.BUP failed
libdvdread: Can’t open file VIDEO_TS.IFO.
libdvdnav: vm: failed to read VIDEO_TS.IFO
[12:52:05] dvd: not a dvd – trying as a stream/file instead
[12:52:05] hb_stream_open: open /md0/ARM/raw//A New Hope (2011)_20171226_125125/0012FA failed
[12:52:05] scan: unrecognized file type
[12:52:05] libhb: scan thread found 0 valid title(s)
No title found.
HandBrake has exited.
Transcoding file BDMV
[12:52:06] hb_init: starting libhb thread
[12:52:06] thread 7f4fab7e4700 started (“libhb”)
HandBrake 1.0.4 (2017040900) – Linux x86_64 – https://handbrake.fr
4 CPUs detected
Opening /md0/ARM/raw//A New Hope (2011)_20171226_125125/BDMV…
[12:52:06] CPU: Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
[12:52:06] – logical processor count: 4
[12:52:06] hb_scan: path=/md0/ARM/raw//A New Hope (2011)_20171226_125125/BDMV, title_index=1
disc.c:352: error opening file BDMV/index.bdmv
disc.c:352: error opening file BDMV/BACKUP/index.bdmv
[12:52:06] bd: not a bd – trying as a stream/file instead
libdvdnav: Using dvdnav version 5.0.1
libdvdread: Couldn’t find device name.
libdvdread:DVDOpenFilePath:findDVDFile /VIDEO_TS/VIDEO_TS.IFO failed
libdvdread:DVDOpenFilePath:findDVDFile /VIDEO_TS/VIDEO_TS.BUP failed
libdvdread: Can’t open file VIDEO_TS.IFO.
libdvdnav: vm: failed to read VIDEO_TS.IFO
[12:52:06] dvd: not a dvd – trying as a stream/file instead
[12:52:06] batch: scanning /md0/ARM/raw//A New Hope (2011)_20171226_125125/BDMV/MovieObject.bdmv
[mp3 @ 0x7f4fa4004540] Header missing
Input #0, mp3, from ‘/md0/ARM/raw//A New Hope (2011)_20171226_125125/BDMV/MovieObject.bdmv’:
Duration: 00:00:02.67, start: 0.000000, bitrate: 160 kb/s
Stream #0:0: Audio: mp1
44100 Hz, stereo, s16p, 160 kb/s
[12:52:06] hb_stream_open: open /md0/ARM/raw//A New Hope (2011)_20171226_125125/BDMV/MovieObject.bdmv failed
[12:52:06] libhb: scan thread found 0 valid title(s)
Congratulations! You’ve fired the arm_event eventNo title found.
IFTTT notification sentPusover notifications not enabled
EMail notifications not enabled
HandBrake has exited.
Transcoding file CERTIFICATE
[12:52:06] hb_init: starting libhb thread
[12:52:06] thread 7f7cdcabc700 started (“libhb”)
HandBrake 1.0.4 (2017040900) – Linux x86_64 – https://handbrake.fr
4 CPUs detected
Opening /md0/ARM/raw//A New Hope (2011)_20171226_125125/CERTIFICATE…
[12:52:06] CPU: Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
[12:52:06] – logical processor count: 4
[12:52:06] hb_scan: path=/md0/ARM/raw//A New Hope (2011)_20171226_125125/CERTIFICATE, title_index=1
disc.c:352: error opening file BDMV/index.bdmv
disc.c:352: error opening file BDMV/BACKUP/index.bdmv
[12:52:06] bd: not a bd – trying as a stream/file instead
libdvdnav: Using dvdnav version 5.0.1
libdvdread: Couldn’t find device name.
libdvdread:DVDOpenFilePath:findDVDFile /VIDEO_TS/VIDEO_TS.IFO failed
libdvdread:DVDOpenFilePath:findDVDFile /VIDEO_TS/VIDEO_TS.BUP failed
libdvdread: Can’t open file VIDEO_TS.IFO.
libdvdnav: vm: failed to read VIDEO_TS.IFO
[12:52:06] dvd: not a dvd – trying as a stream/file instead
[12:52:06] batch: scanning /md0/ARM/raw//A New Hope (2011)_20171226_125125/CERTIFICATE/app.discroot.crt
[mp3 @ 0x7f7cd40049a0] Header missing
Input #0, mp3, from ‘/md0/ARM/raw//A New Hope (2011)_20171226_125125/CERTIFICATE/app.discroot.crt’:
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Audio: mp2
0 channels, s16p
[12:52:06] hb_stream_open: open /md0/ARM/raw//A New Hope (2011)_20171226_125125/CERTIFICATE/app.discroot.crt failed
[12:52:06] libhb: scan thread found 0 valid title(s)
No title found.
HandBrake has exited.
Transcoding file MAKEMKV
[12:52:06] hb_init: starting libhb thread
[12:52:06] thread 7f2409069700 started (“libhb”)
HandBrake 1.0.4 (2017040900) – Linux x86_64 – https://handbrake.fr
4 CPUs detected
Opening /md0/ARM/raw//A New Hope (2011)_20171226_125125/MAKEMKV…
[12:52:06] CPU: Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
[12:52:06] – logical processor count: 4
[12:52:06] hb_scan: path=/md0/ARM/raw//A New Hope (2011)_20171226_125125/MAKEMKV, title_index=1
aacs.c:470: Error calculating media key. Missing right processing key ?
mmc_device_linux.c:178: No MMC drive mounted to /md0/ARM/raw/A New Hope (2011)_20171226_125125/MAKEMKV
mmc.c:376: AACS not active or supported by the drive
Scanning title 1 of 1, 0.00 %
Scanning title 1 of 1, 0.00 %
Scanning title 1 of 1, 0.00 %aacs.c:110: No usable AACS libraries found!
dec.c:197: aacs_open() failed: -3!
disc.c:352: error opening file BDMV/index.bdmv
disc.c:352: error opening file BDMV/BACKUP/index.bdmv
[12:52:07] bd: not a bd – trying as a stream/file instead
libdvdnav: Using dvdnav version 5.0.1
libdvdread: Couldn’t find device name.
libdvdread:DVDOpenFilePath:findDVDFile /VIDEO_TS/VIDEO_TS.IFO failed
libdvdread:DVDOpenFilePath:findDVDFile /VIDEO_TS/VIDEO_TS.BUP failed
libdvdread: Can’t open file VIDEO_TS.IFO.
libdvdnav: vm: failed to read VIDEO_TS.IFO
[12:52:07] dvd: not a dvd – trying as a stream/file instead
[12:52:07] batch: scanning /md0/ARM/raw//A New Hope (2011)_20171226_125125/MAKEMKV/discattd.dat
[12:52:07] hb_stream_open: open /md0/ARM/raw//A New Hope (2011)_20171226_125125/MAKEMKV/discattd.dat failed
[12:52:07] libhb: scan thread found 0 valid title(s)
No title found.
HandBrake has exited.
STAT: A New Hope (2011) transcoded in 0 hours, 0 minutes and 2 seconds.
Pushbullet notifications not enabled
Sending IFTTT notification
Congratulations! You’ve fired the arm_event event
IFTTT notification sentPusover notifications not enabled
EMail notifications not enabled
*** Start config parameters ****
Timestamp: Tue, 26 Dec 2017 12:56:40 -0700
ARM_CHECK_UDF=true
GET_VIDEO_TITLE=true
SKIP_TRANSCODE=false
ARMPATH=”/md1/ARM/Movies/”
RAWPATH=”/md0/ARM/raw/”
MEDIA_DIR=”/md1/Media/Movies/”
LOGPATH=”/opt/arm/logs/”
LOGLIFE=1
LOG_SINGLE_FILE=false
SET_MEDIA_PERMISSIONS=false
CHMOD_VALUE=777
SET_MEDIA_OWNER=true
CHOWN_USER=server-admin
CHOWN_GROUP=server-admin
MINLENGTH=”600″
RIPMETHOD=”backup”
MKV_ARGS=””
HB_PRESET=”High Profile”
DEST_EXT=mkv
HANDBRAKE_CLI=HandBrakeCLI
MAINFEATURE=true
HB_ARGS=”–subtitle scan -F”
PLEX_SUPPORT=true
NOTIFY_RIP=true
NOTIFY_TRANSCODE=true
IFTTT_EVENT=”arm_event”
*** End config parameters ****
Starting Identify Script…
Deleting 0 old log files:
DEVLINKS=/dev/dvdrw /dev/cdrom /dev/dvd /dev/disk/by-path/pci-0000:00:1f.2-ata-6 /dev/disk/by-label/A_NEW_HOPE /dev/disk/by-id/ata-HL-DT-ST_BDDVDRW_GGC-H20L_K5D7CKF1651 /dev/cdrw /dev/disk/by-uuid/8CE00A2325A1B013
DEVNAME=/dev/sr0
DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata6/host5/target5:0:0/5:0:0:0/block/sr0
DEVTYPE=disk
ID_ATA=1
ID_ATA_FEATURE_SET_PM=1
ID_ATA_FEATURE_SET_PM_ENABLED=1
ID_ATA_SATA=1
ID_ATA_SATA_SIGNAL_RATE_GEN1=1
ID_BUS=ata
ID_CDROM=1
ID_CDROM_BD=1
ID_CDROM_CD=1
ID_CDROM_CD_R=1
ID_CDROM_CD_RW=1
ID_CDROM_DVD=1
ID_CDROM_DVD_PLUS_R=1
ID_CDROM_DVD_PLUS_RW=1
ID_CDROM_DVD_PLUS_R_DL=1
ID_CDROM_DVD_R=1
ID_CDROM_DVD_RAM=1
ID_CDROM_DVD_RW=1
ID_CDROM_HDDVD=1
ID_CDROM_MEDIA=1
ID_CDROM_MEDIA_BD=1
ID_CDROM_MEDIA_SESSION_COUNT=1
ID_CDROM_MEDIA_STATE=complete
ID_CDROM_MEDIA_TRACK_COUNT=1
ID_CDROM_MEDIA_TRACK_COUNT_DATA=1
ID_CDROM_MRW=1
ID_CDROM_MRW_W=1
ID_FOR_SEAT=block-pci-0000_00_1f_2-ata-6
ID_FS_LABEL=A_NEW_HOPE
ID_FS_LABEL_ENC=A_NEW_HOPE
ID_FS_TYPE=udf
ID_FS_USAGE=filesystem
ID_FS_UUID=8CE00A2325A1B013
ID_FS_UUID_ENC=8CE00A2325A1B013
ID_MODEL=HL-DT-ST_BDDVDRW_GGC-H20L
ID_MODEL_ENC=HL-DT-ST\x20BDDVDRW\x20GGC-H20L\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20
ID_PATH=pci-0000:00:1f.2-ata-6
ID_PATH_TAG=pci-0000_00_1f_2-ata-6
ID_REVISION=1.03
ID_SERIAL=HL-DT-ST_BDDVDRW_GGC-H20L_K5D7CKF1651
ID_SERIAL_SHORT=K5D7CKF1651
ID_TYPE=cd
MAJOR=11
MINOR=0
SUBSYSTEM=block
TAGS=:seat:systemd:uaccess:
USEC_INITIALIZED=4684756
identified udf
found A_NEW_HOPE on /dev/sr0
identified udf as video
Obtained Title A New Hope (2011)
got to here
HAS_NICE_TITLE is true
video title is now A New Hope (2011)
video type is fail
Starting video_rip.sh
Video Title is A New Hope (2011)
Ripping video A_NEW_HOPE from /dev/sr0
Using backup method of ripping.
MSG:1005,0,1,”MakeMKV v1.10.8 linux(x64-release) started”,”%1 started”,”MakeMKV v1.10.8 linux(x64-release)”
DRV:0,2,999,28,”HD-DVD-ROM HL-DT-ST BDDVDRW GGC-H20L 1.03″,”A_NEW_HOPE”,”/dev/sr0″
DRV:1,256,999,0,””,””,””
DRV:2,256,999,0,””,””,””
DRV:3,256,999,0,””,””,””
DRV:4,256,999,0,””,””,””
DRV:5,256,999,0,””,””,””
DRV:6,256,999,0,””,””,””
DRV:7,256,999,0,””,””,””
DRV:8,256,999,0,””,””,””
DRV:9,256,999,0,””,””,””
DRV:10,256,999,0,””,””,””
DRV:11,256,999,0,””,””,””
DRV:12,256,999,0,””,””,””
DRV:13,256,999,0,””,””,””
DRV:14,256,999,0,””,””,””
DRV:15,256,999,0,””,””,””
MSG:5072,0,1,”Backing up disc into folder \”/md0/ARM/raw//A New Hope (2011)_20171226_125642/\””,”Backing up disc into folder \”%1\””,”/md0/ARM/raw//A New Hope (2011)_20171226_125642/”
MSG:3317,16777216,1,”Loaded 14 SVQ file(s)”,”Loaded %1 SVQ file(s)”,”14″
MSG:3326,0,0,”Processing BD+ code, please be patient – this may take up to few minutes”,”Processing BD+ code, please be patient – this may take up to few minutes”
MSG:3324,0,1,”Processing BD+ code using generic SVQ from builtin/generic.svq”,”Processing BD+ code using generic SVQ from %1″,”builtin/generic.svq”
MSG:3328,0,2,”BD+ code processed, got 1 FUT(s) for 1 clip(s)”,”BD+ code processed, got %1 FUT(s) for %2 clip(s)”,”1″,”1″
MSG:5085,0,0,”Loaded content hash table, will verify integrity of M2TS files.”,”Loaded content hash table, will verify integrity of M2TS files.”
MSG:5070,128,0,”Backup done”,”Backup done”
MSG:5081,260,0,”Backup done.”,”Backup done.”
STAT: A_NEW_HOPE ripped in 0 hours, 53 minutes and 12 seconds.
/opt/arm/video_transcode.sh “/md0/ARM/raw//A New Hope (2011)_20171226_125642” “A New Hope (2011)” “true” “fail” “20171226_125642” “/opt/arm/logs/A_NEW_HOPE.log”
A New Hope (2011) sent to transcoding queue…
Pushbullet notifications not enabled
Sending IFTTT notification
Congratulations! You’ve fired the arm_event event
IFTTT notification sentPusover notifications not enabled
EMail notifications not enabled
Start video transcoding script
transcoding with a nice title
Transcoding all files.
Transcoding file 0012FA
[13:50:54] hb_init: starting libhb thread
[13:50:54] thread 7fecf2b08700 started (“libhb”)
HandBrake 1.0.4 (2017040900) – Linux x86_64 – https://handbrake.fr
4 CPUs detected
Opening /md0/ARM/raw//A New Hope (2011)_20171226_125642/0012FA…
[13:50:54] CPU: Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
[13:50:54] – logical processor count: 4
[13:50:54] hb_scan: path=/md0/ARM/raw//A New Hope (2011)_20171226_125642/0012FA, title_index=1
disc.c:352: error opening file BDMV/index.bdmv
disc.c:352: error opening file BDMV/BACKUP/index.bdmv
[13:50:54] bd: not a bd – trying as a stream/file instead
libdvdnav: Using dvdnav version 5.0.1
libdvdread: Couldn’t find device name.
libdvdread:DVDOpenFilePath:findDVDFile /VIDEO_TS/VIDEO_TS.IFO failed
libdvdread:DVDOpenFilePath:findDVDFile /VIDEO_TS/VIDEO_TS.BUP failed
libdvdread: Can’t open file VIDEO_TS.IFO.
libdvdnav: vm: failed to read VIDEO_TS.IFO
[13:50:54] dvd: not a dvd – trying as a stream/file instead
[13:50:54] batch: scanning /md0/ARM/raw//A New Hope (2011)_20171226_125642/0012FA/disc.bbd
[13:50:54] hb_stream_open: open /md0/ARM/raw//A New Hope (2011)_20171226_125642/0012FA/disc.bbd failed
[13:50:54] libhb: scan thread found 0 valid title(s)
No title found.
HandBrake has exited.
Transcoding file BDMV
[13:50:55] hb_init: starting libhb thread
[13:50:55] thread 7fa4acafa700 started (“libhb”)
HandBrake 1.0.4 (2017040900) – Linux x86_64 – https://handbrake.fr
4 CPUs detected
Opening /md0/ARM/raw//A New Hope (2011)_20171226_125642/BDMV…
[13:50:55] CPU: Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
[13:50:55] – logical processor count: 4
[13:50:55] hb_scan: path=/md0/ARM/raw//A New Hope (2011)_20171226_125642/BDMV, title_index=1
disc.c:352: error opening file BDMV/index.bdmv
disc.c:352: error opening file BDMV/BACKUP/index.bdmv
[13:50:55] bd: not a bd – trying as a stream/file instead
libdvdnav: Using dvdnav version 5.0.1
libdvdread: Couldn’t find device name.
libdvdread:DVDOpenFilePath:findDVDFile /VIDEO_TS/VIDEO_TS.IFO failed
libdvdread:DVDOpenFilePath:findDVDFile /VIDEO_TS/VIDEO_TS.BUP failed
libdvdread: Can’t open file VIDEO_TS.IFO.
libdvdnav: vm: failed to read VIDEO_TS.IFO
[13:50:55] dvd: not a dvd – trying as a stream/file instead
[13:50:55] batch: scanning /md0/ARM/raw//A New Hope (2011)_20171226_125642/BDMV/MovieObject.bdmv
[mp3 @ 0x7fa4a4004540] Header missing
Input #0, mp3, from ‘/md0/ARM/raw//A New Hope (2011)_20171226_125642/BDMV/MovieObject.bdmv’:
Duration: 00:00:02.67, start: 0.000000, bitrate: 160 kb/s
Stream #0:0: Audio: mp1
44100 Hz, stereo, s16p, 160 kb/s
[13:50:55] hb_stream_open: open /md0/ARM/raw//A New Hope (2011)_20171226_125642/BDMV/MovieObject.bdmv failed
[13:50:55] libhb: scan thread found 0 valid title(s)
No title found.
HandBrake has exited.
Transcoding file CERTIFICATE
[13:50:55] hb_init: starting libhb thread
[13:50:55] thread 7f9117729700 started (“libhb”)
HandBrake 1.0.4 (2017040900) – Linux x86_64 – https://handbrake.fr
4 CPUs detected
Opening /md0/ARM/raw//A New Hope (2011)_20171226_125642/CERTIFICATE…
[13:50:55] CPU: Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
[13:50:55] – logical processor count: 4
[13:50:55] hb_scan: path=/md0/ARM/raw//A New Hope (2011)_20171226_125642/CERTIFICATE, title_index=1
disc.c:352: error opening file BDMV/index.bdmv
disc.c:352: error opening file BDMV/BACKUP/index.bdmv
[13:50:55] bd: not a bd – trying as a stream/file instead
libdvdnav: Using dvdnav version 5.0.1
libdvdread: Couldn’t find device name.
libdvdread:DVDOpenFilePath:findDVDFile /VIDEO_TS/VIDEO_TS.IFO failed
libdvdread:DVDOpenFilePath:findDVDFile /VIDEO_TS/VIDEO_TS.BUP failed
libdvdread: Can’t open file VIDEO_TS.IFO.
libdvdnav: vm: failed to read VIDEO_TS.IFO
[13:50:55] dvd: not a dvd – trying as a stream/file instead
[13:50:55] batch: scanning /md0/ARM/raw//A New Hope (2011)_20171226_125642/CERTIFICATE/app.discroot.crt
[mp3 @ 0x7f91100049a0] Header missing
Input #0, mp3, from ‘/md0/ARM/raw//A New Hope (2011)_20171226_125642/CERTIFICATE/app.discroot.crt’:
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Audio: mp2
0 channels, s16p
[13:50:55] hb_stream_open: open /md0/ARM/raw//A New Hope (2011)_20171226_125642/CERTIFICATE/app.discroot.crt failed
[13:50:55] libhb: scan thread found 0 valid title(s)
No title found.
HandBrake has exited.
Transcoding file MAKEMKV
[13:50:55] hb_init: starting libhb thread
[13:50:55] thread 7fbad9324700 started (“libhb”)
HandBrake 1.0.4 (2017040900) – Linux x86_64 – https://handbrake.fr
4 CPUs detected
Opening /md0/ARM/raw//A New Hope (2011)_20171226_125642/MAKEMKV…
[13:50:55] CPU: Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
[13:50:55] – logical processor count: 4
[13:50:55] hb_scan: path=/md0/ARM/raw//A New Hope (2011)_20171226_125642/MAKEMKV, title_index=1
aacs.c:470: Error calculating media key. Missing right processing key ?
mmc_device_linux.c:178: No MMC drive mounted to /md0/ARM/raw/A New Hope (2011)_20171226_125642/MAKEMKV
mmc.c:376: AACS not active or supported by the drive
Scanning title 1 of 1, 0.00 %
Scanning title 1 of 1, 0.00 %
Scanning title 1 of 1, 0.00 %aacs.c:110: AACS not active or supported by the drive
dec.c:197: aacs_open() failed: -3!
disc.c:352: error opening file BDMV/index.bdmv
disc.c:352: error opening file BDMV/BACKUP/index.bdmv
[13:50:56] bd: not a bd – trying as a stream/file instead
libdvdnav: Using dvdnav version 5.0.1
libdvdread: Couldn’t find device name.
libdvdread:DVDOpenFilePath:findDVDFile /VIDEO_TS/VIDEO_TS.IFO failed
libdvdread:DVDOpenFilePath:findDVDFile /VIDEO_TS/VIDEO_TS.BUP failed
libdvdread: Can’t open file VIDEO_TS.IFO.
libdvdnav: vm: failed to read VIDEO_TS.IFO
[13:50:56] dvd: not a dvd – trying as a stream/file instead
[13:50:56] batch: scanning /md0/ARM/raw//A New Hope (2011)_20171226_125642/MAKEMKV/discattd.dat
[13:50:56] hb_stream_open: open /md0/ARM/raw//A New Hope (2011)_20171226_125642/MAKEMKV/discattd.dat failed
[13:50:56] libhb: scan thread found 0 valid title(s)
No title found.
HandBrake has exited.
STAT: A New Hope (2011) transcoded in 0 hours, 0 minutes and 2 seconds.
Pushbullet notifications not enabled
Sending IFTTT notification
Congratulations! You’ve fired the arm_event event
IFTTT notification sentPusover notifications not enabled
EMail notifications not enabled
So after a bit more poking around, it doesn’t appear that Plex can handle menus, extras, and such from a MakeMKV decrypted backup. Would be interested to hear if anyone knows a media server that would handle such things, as well as why HandBrake doesn’t seem to play nice with the “backup” rip method. Thanks again.
Plex supports a variety of “containers” for your media, but they need to be actual media containers. A disc image is NOT a media container, and is not supported.
MKV, M4V, MP4, etc. – those are all media containers and are supported.
The ability to support a FULL disc image is not common, especially since the app that will be accessing typically doesn’t understand how to navigate the file system and leverage the menus.
Plex supports having multiple files in place for a singular movie – what are you trying to accomplish? You stated you wanted support for the menu, but why? What are you trying to achieve?
If you have specific things you’re looking to be able to do, head over to the Plex forums for better assistance on how to achieve your goals using Plex.
Ideally, I’d like to have a set up that lets me replicate the whole blu-ray experience (menus, extras, etc) without having to keep a blu-ray player and pile of discs in my tv room. While it looks like other media servers support something like this–or may in the future– as you mentioned it doesn’t appear that Plex does.
Even if my ideal set up isn’t possible/feasible, I’d still like to be able to use the “backup” rip method in order to be able to use the main feature identification option. If anyone has any input as to why HandBrake fails transcoding a disc ripped with the “backup” option as seen in the log file I pasted above, I’d love to hear it. Thanks again.
Hello,
The ARM is working well on my system. Thank you for all the effort that has been invested in this project. I don’t have a dedicated machine just for ARM. So now that I have several ISO files backed up on my system, it seems each time I try to mount it to use the files in the image, ARM jumps into action creates a new copy and unmounts the iso. Is there an easy way to disable ARM so that I can use an ISO file mounted on my system, or to use a DVD/CD that I do not wish to rip?
Thank you for considering.
Would you be up for building an ARM machine that is Plug n Play? I’m installing a big multimedia system using Kodi and I’m now looking at how to get the movies on to the system and your A.R.M loks like the best out there.
I have a similar requirement – I’d like to have a way of inserting a DVD and a popup opens asking if I want toplay the DVD directly or rip it. I can do the pop up OK with Notify-Send, and play the DVD (on VLC Plyaer for example) but I would be grateful for advice on how to start the ARM after I’ve detected the disk and answered the popup to rip the disk.
Thanks Ben for building out this fantastic script. I’ve got it up and running (my few bumps were abcde writing to your mount point set in .abcde.conf not to the directory I thought I set in config, and a chmod +x on the service) and sorted out most of my issues.
I’m pondering how to deal with duff CDs/DVDs/BluRays – when the optical media cannot be read. Right now it just tries for several hours (I’m encoding to flac and it just won’t get the next track) until I eject the media.
You’re welcome. Not much you can do about bad discs, often it won’t rip at all instead of skipping over the bad parts.. if you have two drives try the other drive, I’ve found regular DVD drives are less susceptible to scratches than Blu-Ray.
First of all, thank you Benjamin for the scripts. This was exactly the sort of thing I’ve been looking for, I installed it yesterday and have working almost perfectly for ripping my DVD movie collection.
I’m having a small issue with it that I’m hoping someone can help me with.
All I’m interested in getting is the movie from each disc, and ideally I want to rip as many discs as possible using makemkv and then leave the PC for a day or overnight to process the handbrake queue.
I tried choosing the “main feature” option in the config file but I think handbrake then was trying to rip and transcode directly from the disc so the disc didn’t get ejected quickly. If I leave that option as false and rip method as mkv then it works as I would like where the disc is ejected after 10 minutes or so, I can pop in another disc to rip and so on and in the background handbrake is slowly working through the queue. This means though that I end up with all the extras and other titles from the disc in the handbrake queue that I’m not interested in.
I’m assuming I’m missing something but is there an easy way to get makemkv to rip just the main title and pass it off to handbrake to transcode?
Also, can I have the .mkv file be given the dvd title as well as the parent folder it sits in?
Not a big deal for either thing if not, as it’s just a little extra tidy up before I move the files off to my plex server anyway but it would nice to not have to delete extras or rename movie files if I could.
thanks again,
MK
Ben, Thanks for all the great work here, but I’m running into a problem and not sure where I went wrong. I can dump the empty.log if you’d like, but I figured I’d check first since it’s rather large and don’t want to bung up your comments with a 250 line log.
I can rip successfully with “makemkvcon -r –minlength=120 mkv dev:/dev/sr0 all /var/tmp/RIP/testdir/” and that dumps titles of a TV Series DVD I have just fine. If I let ARM try to run it i dumps out with stuff to the effect of “drive seems empty, not ejecting”. I can’t believe it’s a problem with libdvdcss as makemkvcon dumps an MKV for all 4 titles on the disk fine.
This is running on a recent install of CentOS 7. Not sure where I went wrong here. Any advice/info is greatly appreciated. Thanks!
Interesting. I also found an “unable to identify” in that same log output. Going along those lines I thought given some of the other comments I’ve read here that I should check to see if the ID_FS_TYPE is being found with udevadm info and it is NOT.
udevadm info -q env -n /dev/sr0
It is found this way though:
udevadm test-builtin blkid /sys/class/block/sr0
Guessing I can modify the identify script to use the blkid example above to get around this?
Hi, Brad. Thanks for using the ARM! Changing the blkid is a good start. It’s possible Centos’s udevadm doesn’t return as much data as Ubuntu. If that doesn’t work report the issue on GitHub and attach the log, folks there are very willing to help.
Yes! That was it. I added the blkid stuff to the arm wrapper for ID_FS_TYPE and LABEL. That fixed finding the correct label/type. But it seems even after that, I ran into a new problem and the ${DEVNAME} wasn’t being passed to the identify script. Found that out by adding a bunch of echo’s in there for $DEVNAME. Always came out empty/null. Also realized the udf data/video mount check was failing because of it. Fixed that by hardcoding it for now just to get it working.
Next problem was these stupid DVD’s I’m using(ripping a TV Series set for family) have the VIDEO_TS folder as video_ts.
IE ${VAR ,,} so then the udf data/video check failed there as well as the identify script was only checking upper case VIDEO_TS. Added a quick lower check in there and IT’S ALIVE! It’s ugly, but it works.
Now I have one last problem. The udev dvd/cd insertion check. That action==change picks up when a dvd is inserted and starts the service, but problem I’ve run into, at least on this centos box is that when the ripping completes and ejects the disc, it detects that eject as a change as well and runs the service all over again, yanking the disc back in. This creates a fun loop to watch: Insert disc -> disc gets ripped – disc ejects -> dvd tray autocloses – disc gets ripped – disc ejects -> ad infinitum. ROFLMAO! Clearly I did something wrong here.
Still… This is great stuff and most of my problems are probably due to MY installation. This is going to make my life so much easier as I tweak/tune it to my needs.
I tried using the ARM under Hyper-V.
With the work of the ISCSI Server Software “iStorageServer” i created a Target for the DVD-ROM of the host.
Connected it with
iscsiadm –mode discoverydb –type sendtargets –portal 192.168.176.51 –discover
iscsiadm –mode node –login
Worked so far. I get /dev/sr1 – /dev/sr8
But the automation won’t work correct. When entering a CD it said in the empty.log that it tried /dev/sr6 for example and can’t identify something on it.
Using abcde -d /dev/sr6 gives the following error:
Executing customizable pre-read function… done.
Getting CD track info… [WARNING] something went wrong while querying the CD… Maybe a DATA CD?
[WARNING] Error trying to calculate disc ids without lead-out information.
Using abcde -d /dev/sr1 starts ripping… Any Idea?
Hi Tim,
It appears that Run Lola Run is in German. So you should be using something like this in the XML file.
app_DefaultSelectionString=”-sel:all,+sel:(ger|nolang),-sel:core,-sel:havelossless”
This should rip German HD audio track if it is a bluray, or choose the German lossy track if it is a DVD.
Let me know if this works for you.
Ben –
1. Thank you for this!!! This has been fun to create and play with
2. Going to make getting my parents old cd collection digitized faster so they can add it to their smartphones or ply it on thier computers
I am running in to an issue with the Music converting right now. I went to the link for Andrew’s Corner and i have applied his whole script to abcde.conf file and commented out which codecs i want to use. If I use FLAC it works like a champ. When i flip it over to LAME nothing happens. I do have LAME installed and i looked and it is under /usr/bin/lame. I have even specified it in the config and the conversion looks at me and says…. Yeah and your point?!?
Here are my specs:
Ubuntu 18.04 LTS Virtual machine
Panasonic Blu-ray drive
4gb ram
60 GB HDD
fstab entry point for my nas to put the music files
I have racked my brain. Ive looked at the logs and no where do they tell me what the issue is. when i pull up the log directory i do see a new empty.log file created and it looks like several entries repeat themselves several times. too bad the log puts in everything and not what was actually happens. Would make going through the log a little easier and not trying to parse through over 200 lines.
Well i finnaly figured out my issue. First off as of today the following package has been depreciated:
mp3gain – not sure why lame is req it during the abcde execution. I have created my own installer steps.
Step 1 – Install Ubuntu 18.04 LTS
Step 2 – here is my installer layout
:
sudo apt-get install git
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 add-apt-repository ppa:flexiondotorg/audio
sudo apt update
sudo apt install handbrake-cli libavcodec-extra makemkv-bin makemkv-oss abcde flac
sudo apt install imagemagick glyrc cdparanoia lame mp3gain at
sudo apt install cifs-utiils python3 python3-pip ibdvd-pkg
sudo dpkg-reconfigure libdvd-pkg
sudo su
cd /opt
git clone https://github.com/automatic-ripping-machine/automatic-ripping-machine.git arm
cd arm
pip install eyeD3
pip install -r requirements.txt
ln -s /opt/arm/51-automedia.rules /lib/udev/rules.d/
ln -s /opt/arm/.abcde.conf /root/
cp /opt/arm/[email protected] /etc/systemd/system/
cp config.sample config
mkdir /mnt/arm
touch /root/.creds
nano /etc/fstab
Step 3 – in the .creds file i have:
username=username
password=password
Step 4 – When adding my Freenas server i choose to use the creds file when mounting the directory with cifs
Step 5 – using the script for all encoders found here: http://www.andrews-corner.org/linux/abcde/index.html
I made 1 small tweak. The output of the files and the next 2 sections i copied from the default .abcde.conf file on git
Step 6 – Ran abcde 1st time to test to make sure there were no other dependencies
Once abcde has all the bugs worked out and tweaked i will move on to the movies
took me 8+ hours to figure out all this stuff out. I hope that my pains will help someone else out there to get this working allot quicker
well the instructions i posted work great. ARM does the following:
1. Rips Music to MP3
2. Rips Movies
3. Rips TV Shows
Only problem i am running in to is the naming of the movies/tv show files. I have looked and looked and for the life of me I cannot figure out how to pass an argument to MakeMKVCLI so when it dumps the file to name it:
/mnt/arm/raw/{source_folder_name}/{source}-{title}
I do not mind the 00, 01, 02 etc attached but it would be nice if the file contained the Disc Title.
Anyone have any ideas?
I rip my stuff for KODI running on my network. I made (with the help of some friends) made a script that changes the 00.mkv file to the folder_name.mkv then it takes everything else and puts in in new folder called “extras” on my KODI install I tell the collection scanner to ignore anything in “extras” this way I don’t end up with 10 entries for each movie. It gets a little funky with tv shows, but it woks well with movies as most of the time 00.mkv is the movie file.
email
if you want a copy
woops email not on here …. just respond here if you want it
For movies, there isn’t always a good way to tell which one is the main movie – especially if you’re dealing with a disc that has multiple formats for the same movie (4:3 vs 16:9 or similar). I have a fairly elaborate process to rip movies that results in dumping the entire disc into a directory and then either using “good judgement” (one file is 6G while everything else is <1G) to weed out non-movie files. From there, it gets passed through filebot for first pass at renaming and then dropped in a “temp” area where I can correct it if it goes awry.
I’ve sent Ben my management file in the past, but haven’t seen whether or not he ever looked at it or gave any consideration to making it available in any way as part of the process (probably because it’s a bit complicated to understand, especially if you don’t have a fair amount of Linux experience). :)
Sure jnkbcs {at} gmail.com
Anything that may help.
Odd. I am getting this today:
sudo add-apt-repository ppa:mc3man/xerus-media
Err:8 http://ppa.launchpad.net/mc3man/xerus-media/ubuntu bionic Release
404 Not Found [IP: 91.189.95.83 80]
Reading package lists… Done
E: The repository ‘http://ppa.launchpad.net/mc3man/xerus-media/ubuntu bionic Release’ does not have a Release file.
N: Updating from such a repository can’t be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
Obviously others with 18.04 aren’t getting this. Maybe it is temporarily broken?
From his site it looks like his ppa was intended only for Ubuntu 14.04.
From his site: https://launchpad.net/~mc3man/+archive/ubuntu/trusty-media
To repeat –
Please note that if using this ppa I would *not try upgrading to 14.10/15.04, ect. Do a fresh install instead. The intent here is just for users wishing to stay on 14.04*
If upgrading anyway use ppa-purge first –
sudo ppa-purge ppa:mc3man/trusty-media
Also note that with apt-get a sudo apt-get dist-upgrade is needed for initial setup & with some package upgrades
Hey, great software. I am f9inally getting around to building me a machine to rip DVDs. I’m on Ubuntu Desktop 18.04, on a physical machine, not a VM. I keep getting the following error – I am copy/pasting directly from the instructions on GitHub into a terminal window in the GUI. Any advice would be most appreciated.
root@URM:/opt/arm# pip3 install -r requirements.txt
Collecting pycurl>=7.43.0 (from -r requirements.txt (line 1))
Using cached https://files.pythonhosted.org/packages/e8/e4/0dbb8735407189f00b33d84122b9be52c790c7c3b25286826f4e1bdb7bde/pycurl-7.43.0.2.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File “/tmp/pip-build-_2fjpli2/pycurl/setup.py”, line 223, in configure_unix
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
File “/usr/lib/python3.6/subprocess.py”, line 709, in init
restore_signals, start_new_session)
File “/usr/lib/python3.6/subprocess.py”, line 1344, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: ‘curl-config’: ‘curl-config’
Command “python setup.py egg_info” failed with error code 1 in /tmp/pip-build-_2fjpli2/pycurl/
Hi,
same problem here with Ubuntu 18.04 LTS.
Unfortunately, this page doesn´t seem to be maintained by the author anymore. :-(
Hi, Hocky. The install instructions on the blog post aren’t up to date (I believe I mentioned that on the post, but I may remove them so there’s no ambiguity. However, the README on GitHub is being actively maintained. The best way to get it updated is to create an issue or PR on GitHub… that way the other ARM devs can review it so that not everything is funneling through me. |:-)
Pretty sure it took
sudo apt install libcurl4-openssl-dev
sudo apt-get install libssl-dev
to get past that error for me. I had the same thing and managed to get past it. I tried a lot of things but I think those were the commands that got me past.
Hi,
I’ve configured my own ARM using Ubuntu desktop 18.04LTS as a VM running on ESXi 6.7.
When I put a bluray into the drive, it kicks off the ripping using makemkv, omdb identifies the disk and determines that it’s a movie and uses the correct name, but the following problems occur:
1) Doesn’t seem to bother putting any subtitles into the file
log example:
+ subtitle tracks:
+ 1, English [PGS]
+ 2, Deutsch [PGS]
+ 3, italiano [PGS]
+ 4, español [PGS]
+ 5, dansk [PGS]
+ 6, suomi [PGS]
+ 7, norsk [PGS]
+ 8, svenska [PGS]
+ 9, polski [PGS]
+ 10, à¹
+ 11, ä¸æ [PGS]GS]
+ 12, Îλληνικά [PGS]
+ 13, Deutsch [PGS]
+ 14, español [PGS]
[12:16:59] 1 job(s) to process
.
.
.
“Subtitle”: {
“Search”: {
“Burn”: true,
“Default”: false,
“Enable”: true,
“Forced”: true
},
“SubtitleList”: []
},
I think it’s related to the following errors in the log:
bdj.c:689: BD-J check: Failed to load JVM library
bdj.c:689: BD-J check: Failed to load JVM library
2) Doesn’t seem to bother with my CHMOD values (777) and outputs them as read only.
3) Weirdest of all, it won’t eject the disc once the data has been ripped. If I press the eject button, it just kicks off the ripping process again. I do notice that after adding the fstab entry, the disc won’t appear within the GUI (usually it’ll show you the disc name on the desktop).
I tried commenting out the fstab entry and it will rip the disc as an iso and then eject the disc, so there’s something odd happening here that I haven’t been able to spot yet.
Hi, Yeah. Please report these issues by creating an issue on GitHub: https://github.com/automatic-ripping-machine/automatic-ripping-machine and we’ll help you there. The JVM issue is likely an issue with Java/OpenJDK.
Does ARM Rip a Bluray as AVC Remux (lossless) or does handbrake convert it with lower bitrate?
ANd is there a possibility to only rip a specific set of audio language from a Bluray?
Hi, Timo. Yes, I believe all of this can be configured in the arm.yaml config file as long as Hanbrake or MakeMKV supports it. For lossless, set SKIP_TRANSCODE=true or if you still want to process with Handbrake but keep the original quality I’m sure there’s a CLI option for that. I believe you can pass arguments to rip a specific audio language by setting custom MakeMKV or Handbrake arguments. In the config file look at: HB_ARGS_BD, HB_ARGS_DVD, and MKV_ARGS.
How do I go about solving the issue with duplicate titles? I want to be able to get the extras/bonuses off the disks, but I don’t want multiple copies of the same file. Thanks!
Sigh.
I just spent the better of two days feeding audio CD’s to this thing and have found that there’s something odd about the rip process that’s leaving the volume level pretty low.
Since you know the architecture of this solution the best, where do I start? Is it a CDParanoia setting that I need to change? Or is it something do with mp3gain? I know mp3gain gets run, but I can’t tell how it’s getting called as it isn’t in your scripts and doesn’t appear to be part of abcde either. From what I see of the man page of cdparanoia, there doesn’t appear to be an association between those two – so what’s calling it?
Hi there, thanks for making this great project available to the masses..I’m excited to get this up and running.
I’m looking for some assistance with an error I’ve run into on my first two tries ripping a couple of bluray discs. MakeMKV appears to finish just fine, but when handbrake kicks off, it errors out. Log is as follows:
[2018-09-16 18:06:33] INFO ARM: main.log_arm_params **** End of config parameters ****
[2018-09-16 18:06:33] DEBUG ARM: utils.make_dir Creating directory: /data/arm/media/unidentified/Alien
[2018-09-16 18:06:33] INFO ARM: main.main Processing files to: /data/arm/media/unidentified/Alien
[2018-09-16 18:06:33] INFO ARM: makemkv.makemkv Starting MakeMKV rip. Method is backup
[2018-09-16 18:06:33] DEBUG ARM: makemkv.makemkv Getting MakeMKV disc number
[2018-09-16 18:06:40] INFO ARM: makemkv.makemkv MakeMKV disc number: 0
[2018-09-16 18:06:40] INFO ARM: makemkv.makemkv Destination is /data/arm/media/raw/Alien
[2018-09-16 18:06:40] INFO ARM: makemkv.makemkv Backup up disc
[2018-09-16 18:06:40] DEBUG ARM: makemkv.makemkv Backing up with the following command: makemkvcon backup –decrypt -r disc:0 /data/arm/media/raw/Alien>> /data/arm/logs/ALIEN_WW.log
MSG:1005,0,1,”MakeMKV v1.12.3 linux(x64-release) started”,”%1 started”,”MakeMKV v1.12.3 linux(x64-release)”
DRV:0,2,999,28,”BD-ROM ATAPI BD O DH4O1S CP56″,”ALIEN_WW”,”/dev/sr0″
DRV:1,0,999,0,”DVD+R-DL SONY DVD RW DRU-800A KY03″,””,”/dev/sr1″
DRV:2,256,999,0,””,””,””
DRV:3,256,999,0,””,””,””
DRV:4,256,999,0,””,””,””
DRV:5,256,999,0,””,””,””
DRV:6,256,999,0,””,””,””
DRV:7,256,999,0,””,””,””
DRV:8,256,999,0,””,””,””
DRV:9,256,999,0,””,””,””
DRV:10,256,999,0,””,””,””
DRV:11,256,999,0,””,””,””
DRV:12,256,999,0,””,””,””
DRV:13,256,999,0,””,””,””
DRV:14,256,999,0,””,””,””
DRV:15,256,999,0,””,””,””
MSG:5072,0,1,”Backing up disc into folder \”/data/arm/media/raw/Alien\””,”Backing up disc into folder \”%1\””,”/data/arm/media/raw/Alien”
MSG:5050,0,2,”Evaluation version, 30 day(s) out of 30 remaining”,”Evaluation version, %1 day(s) out of %2 remaining”,”30″,”30″
MSG:3317,0,1,”Loaded 2 SVQ file(s)”,”Loaded %1 SVQ file(s)”,”2″
MSG:3326,0,0,”Processing BD+ code, please be patient – this may take up to few minutes”,”Processing BD+ code, please be patient – this may take up to few minutes”
MSG:3324,0,1,”Processing BD+ code using generic SVQ from builtin/generic.svq”,”Processing BD+ code using generic SVQ from %1″,”builtin/generic.svq”
MSG:3328,0,2,”BD+ code processed, got 1 FUT(s) for 22 clip(s)”,”BD+ code processed, got %1 FUT(s) for %2 clip(s)”,”1″,”22″
MSG:5085,0,0,”Loaded content hash table, will verify integrity of M2TS files.”,”Loaded content hash table, will verify integrity of M2TS files.”
MSG:5070,128,0,”Backup done”,”Backup done”
MSG:5081,260,0,”Backup done.”,”Backup done.”
[2018-09-16 19:07:21] DEBUG ARM: makemkv.makemkv The exit code for MakeMKV is: 0
[2018-09-16 19:07:22] INFO ARM: makemkv.makemkv Exiting MakeMKV processing with return value of: /data/arm/media/raw/Alien
[2018-09-16 19:07:22] INFO ARM: handbrake.handbrake_all Starting BluRay/DVD transcoding – All titles
[2018-09-16 19:07:22] INFO ARM: handbrake.handbrake_all Getting total number of titles on disc. This will take a minute or two…
[2018-09-16 19:07:22] DEBUG ARM: handbrake.handbrake_all Sending command: HandBrakeCLI -i /data/arm/media/raw/Alien -t 0 –scan
[2018-09-16 19:07:22] ERROR ARM: main. A fatal error has occured and ARM is exiting. See traceback below for details.
Traceback (most recent call last):
File “/opt/arm/arm/main.py”, line 296, in
main(logfile, disc)
File “/opt/arm/arm/main.py”, line 211, in main
handbrake.handbrake_all(hbinpath, hboutpath, logfile, disc)
File “/opt/arm/arm/handbrake.py”, line 128, in handbrake_all
raise ValueError(“Couldn’t get total number of tracks”, “handbrake_all”)
ValueError: (“Couldn’t get total number of tracks”, ‘handbrake_all’)
Any assistance is appreciated. Apologies for the long comment/inquiry, wasn’t sure if I should use the issues tab on github.
Thanks in advance!
Brilliant software. Emptied my whole DVD collection (some 1500 discs) onto my purpose built mini itx box (RF blu-ray drive, mb, OS ssd and raid SSD). Now have all my movies to play at the push of a button on all devices in my home. Would be nice to put a simple HTML media browser on the same machine in the future, it would then be a one machine ripper/server/viewer. Used Ubuntu 16.04, could not get the Ubuntu 18 to work, 16 works perfectly though. You dont need to be a Linux expert either, just follow the steps through and google what you dont understand.
Glad it worked well, there is some work on a web interface but the main purpose is to manage and monitor the ARM processes.
Have you thought about running Plex on that box too? Then you would have a nice web based player and be able to organise everything into libraries.
Be vary wary of Plex. It promises a lot, but it does not deliver. The various clients have gotten progressively WORSE over the last 18 months with features being removed and the actual Plex Employees no longer pay any attention to the forums where Support is requested. Look at other solutions – seriously. I am a Lifetime Plex Pass holder and I’m ready to completely dump the software because I am having so many problems with it.
I abhor Kodi but am starting to consider it as my complete solution because Plex has become complete junk.
I’m also a lifetime plex subscriber and I sort of agree with your sentiments about their odd priorities but if you do jump ship go to emby as it’s a similar concept to plex but much more configurable.
Plex=IOS and emby=android basically emby allows you more knobs to turn and plex removes them to make it so you cant stuff up
I’ve been using Emby for quite awhile for our family library (movies, tv shows, home videos, and music) and been quite happy with it.
Not a big fan of Plex, I used it for two years and for various reasons I fell out of love with it. I use Ministra now, it’s a bit of a job to set up, but once running its gives you lots of options and is very reliable. Coupled with some MAG boxes, you can set up your own iptv system, add some tuners and you have what is basically a hotel tv system in your home(s).
Dear Ben!
First thank you for your work and for sharing it!
I had the same idea years ago and my concept looked very similar to yours but unfortunately there was not enough time to push my project forward.
These days i wanted to attack it again, I stumbled upon your blog and thought “cool … I’ll try it out”
Your installation guide is very good and easy to do – a few minutes later I was able to plug in the first DVD and it just run! Really great!
Unfortunately, the machine in which my only DVD drive is not very powerful and so it takes 5 hours until the job was finished … unfortunately, audio was in English (I’m from Germany and speak only German)
But I was able to fix that quickly (an improvement suggestion for the arm.yaml: language as my own parameter)
I originally wanted to use dvd :: rip on my concept because it has the ability to disperse (cluster) – I have a bunch of CPU power at home that does most of the time absolutely nothing and sleeps…
And I thought I use your scripts and just adapt “handbrake.py” – but then I had a simpler idea
• I have created a user “arm” on my “more cpu power server”
• handbrakecli installed
• on my ARM /home/arm/media/raw via NFS share and mounted and same point at my cpuPower machine
• customization arm.yaml: “HANDBRAKE_CLI: ssh arm@cpuPower HandBrakeCLI”
handbrakecli made the mistake on the first try: “Preset High not found”
so I have adjusted arm.yaml again: HB_PRESET_DVD: “‘High Profile'”
and behold … it works!
very very cool!
When ripping an audio CD, I still get an error that the directory could not be created – I think it’s because of the missing emby server (I did not know emby before – but looks cool and I would like to try it…).
Once again, many thanks! Your ARM is a very sophisticated and really very versatile and easy to customize software
Best regards from Germany
Conrad
yeah, I’d like to see that script if you still have it. thanks.
How can i tweak it so if i have a handbrake job running another does not get kicked off until the first one is finished?
Great job on the ARM!! Love it!!
You would likely want to develop some sort of checking routine that first looks for content that needs to be processed and then checks for an already-running process before it kicks off its own process. If there is no waiting content, exit. If there is waiting content but a process is currently running, exit.
Cron could be usfeul here to launch a check every five minutes or so to check for waiting content and go from there…
That sounds like a good feature request. I’m a noob so it may take awhile before I even begin to figure out where to start. I know I’d need a script to check processes and then somehow pass it over to the main.py script so it wouldn’t launch another instance.
Any help in direction would be greatly appreciated
I have made a LOT of customizations to the use of ARM, but predominantly in the process. For example, I use ARM solely for ripping. Once ripped, I have the tail end of the process move the content to a system for long-term storage. Over THERE, I have scripts that I move the content through different levels of polishing like renaming things to a proper standard, approving the new names, moving into a directory for transcoding, and then finally moving to the permanent directory where Plex will locate it and add it to my media system.
While your thoughts about adding this as a feature is reasonable, you should keep a couple of things in mind:
The scheduling mechanics that Ben has built into this should give you a level of ‘control’ over the processes to not run TOO MUCH stuff at once and overrun the machine. Also, integrating this system into your overall workflow process and environment gives you a ton of flexibility for these kinds of things. I would encourage you to be more invested in the system overall by creating a workflow that suits your needs and making customizations in that area.
Mark,
Thank you for the response. I know there is allot i can do however i lack the experience to eventry and modify it. I have zero programing skills and much of what i know comes from trial and error. Would there be a way to contact you offline so i can pick your brain on this?
Also i am having an issue where i am runnig ESXI 6.5 and the region code on my Blue-Ray drive is 1 however when it’s passed to the VM i cannot rip a DVD with Region code 1 due to the drive is set to 2. i find that very odd. I have tried to edit the region per instructions i have found but it has to be done at the ESXI level. My only course is to pull the drive out and plug it in to another machine and do a prue boot and see what happens. I would like to avoid doing that. If someone has any pointers i would love to hear them.
Thanks for product Ben and keep up the good work all!!
Hello, thanks again for this setup and was able to get it running, but every time i try to copy a disk i get the following on a smb share:
Creating playlist…
mkdir: cannot create directory ‘/mnt/freenas/ARM/flac’: Permission denied
Whats odd is i can create folders and files in that directory without issue outside of the scripts with the arm user.
Any idea what i’m missing here??
Hi Conrad,
could you elaborate on how you selected the German language?
Ideally I’d like to get both English and German audio files…
Also I really like your remote encoding solution – will need to copy that too :)
Thanks
Actually managed to do that by now, (the other part is for nvenc)
Handbrake binary to call
HANDBRAKE_CLI: HandBrakeCLI -e nvenc_h265 –two-pass –encoder-preset hq –turbo –audio-lang-list eng,deu
and in /home/arm/.MakeMKV/settings.conf
app_DefaultSelectionString=”-sel:all,+sel:(eng|ger),-sel:mvcvideo,+sel:subtitle&(eng|ger),=100:all,-10:favlang,+sel:attachment,-sel:special”
Could this be set up to do 4 or 5 bluray drives at a time?
Also, Can I pay you to build and set up a machine to do this?
I just found this and think it’s pretty neat. I wrote something similar but for PS1/PS2 games (as windows batch file). I couldn’t find a reliable way to detect which console the game is for though so not quite as headless as your setup. PS1 and PS2 CD games would have to be ripped to cue/bin format (they’re CD Data+redbook audio) so I imagine this script wouldn’t work with those. Or maybe it would I’m not sure. I’m planning a re-write in either PowerShell or Python (haven’t started/decided yet). It’s called advib on github if you’re interested.
Awesome work, I built up my VM today gave it 2 cpu, 2GB ram, 200GB space on an iSCSI san. Ubuntu 18.04.02 Server. I opted to go with skipping transcode on my host as I have a rb264 farm setup for post.
I was getting a lot of log entries about software faster than the drive so I threw a 200GB vmdk on a local SATA drive in the host at it, mounted it up in the /home/arm/media/raw location and set off to ripping Twilight Zone BDs which I’ve been hoping to get compressed. Working like a charm. Mounted via NFS my unidentified and movies folders from my NAS for the final locations, which I access via samba from my rb264 farm.
Followed the instructions on Github and everything worked perfectly except for when the identify.py script can’t determine the disc’s title so it names the folder title_unknown. If running multiple BD drives I worry this might be a problem so the fix I tried was to change:
disc.videotitle = “title_unknown”
to
disc.videotitle = disc.label
This of course only helps with the labels have unique values, Some series use the same label for all discs in a season so anyone who looks for and finds this issue like I had you probably still have to be careful.
I haven’t run two at once yet, my second 4k drive arrives tomorrow. I saw that title_unknown when getting moved to the unidentified folder was getting renamed if a folder already existed, maybe you handle the raw folder the same way.
Also super helpful fix for ccextractor here:
https://github.com/automatic-ripping-machine/automatic-ripping-machine/issues/273#issuecomment-455019131
I found some other links which talk about installing tesseract-ocr and libtesseract-dev, but it was still crawling on DVD rips for me (and seemingly skipping the main title) until I came back and ran the
./autogen.sh
and
./configure
before
make
make install
DVD Speed much faster afterwards
Is there a plan to use a a different service to obtain the titles since Microsoft has shut down the service the ARM was using?
Hi, Darrin. I do not know of an alternative. The service would need to have a mapping of disc hashes to titles and I haven’t found any other APIs or databases with hashes.
Me either, and I have been searching and looking for other ways to accomplish this, and have come up empty. Does ARM keep a track of movies it has ripped, and a mapping of the hash to title? If so, my company may be able to come up with a solution but I would have to set up a gofundme page or something similar to fund the project.
If we were to create a service similar to the windowsmetadata service, that maintains a database of hashes, title, imdb id, omdb id, etc and expose it via an API, it would help not only ARM, but any other projects / programs that rely on the hash value of the disc.
If ARM kept a database of everything each user has ripped, with the crc64 -> title mapping, and we could get the community to submit their databases, we would have a starting point. From there, we could obtain the imdb id, etc and populate the database with that information. This would be helpful for scrapers to obtain other metadata. The API would also allow users to submit new information, and in the case of the ARM, when a title is not in this database and the user puts the correct information, it would update the database.
I wonder if Microsoft would be willing to provide a database dump of their metadata information — they wouldn’t have to include artwork, etc, but just general information including the hash values? I am posting this on the github site as well to see what type of interest of possibly funding this would be. I will also come up with a rough draft of what it would take to implement this.
In the latest dev branch ARM is storing a history in a SQLLite database–I can’t remember if the crc field was added yet but we did discuss adding it. If not it would be trivial to add it. If Microsoft could provide you a dump to seed the database that would be ideal to get started. I don’t know if you’d get the number of participants needed to build a robust database from scratch.
It would be great if Microsoft would provide a dump to seed the database. The problem however is, knowing who to contact at Microsoft. I have emailed a general support address but have yet to get a response. I can’t think of a reason why Microsoft would not want to provide this information, especially if by providing it, it would once again give other software the ability to use the service. I am going to do some digging, and try to find some contact information for someone who might know the proper people or group that could provide this. Even if they would just give us their MSSQL Database, I can import it into my MSSQL server then move the data to another DB (as I do not like the overhead required to run MSSQL and prefer MySQL).
This would be a great thing if they did, especially since we then could, when returning the DVD title could also return a link to say IMDB, OMDB, etc to grab all the other metadata so other programs could use this (such as Plex, Emby, etc).
I need to look more closely at the ARM code, but when it queried the Microsoft service, was the information returned as XML, JSON, or how was it presented? I can start working on the API to return information now, in the hopes of getting the dump from Microsoft, and being able to get the funding needed to launch this. I need to look and see how much traffic a service like this could expect to see, and figure out what server requirements would be. I don’t want to launch something that all of a sudden is getting 10k queries per minute and is unable to serve all the requests fast enough, but at the same time do not want to through a hexacore cpu with 64gb of ram and it is only serving 10k queries per day… Any thoughts?
I would use standard JSON over XML (or provide both) instead of emulating their API. Changing ARM to accommodate a JSON API would be straight forward. Start out small. Start with a $5/month DigitalOcean droplet or Amazon LightSail $3.50/month plan. If you are concerned about load put Varnish and Nginx in front of the webserver and it will cache requests so once someone has queried a particular hash one time it’s not going to put any load on the server. This site runs on a $5/month DO VM and it can easily handle 1000 clients/second and this is a full on WordPress site so with caching in place I think you’ll be fine on the cheapest plans. If you need to you can scale up vertically pretty easily (at least on DO, haven’t tried on LightSail).
I was going to throw a server in one of our cabinets in one of two datacenters I can easily access but that way would be the better and cheapest route.
hi, beautiful project, congratulations!
is it possible to get mkv without transcoding with handbrake?
thank you
Just an update, I have tried contacting Microsoft multiple times via email and have received no responses. I do not have any other way to contact Microsoft, or even know someone I could reach out to who could point us in the right direction. Does anyone here (or you, Ben) know of a contact or someone we could approach?
wan
Also, earlier I asked if the current database ARM creates and uses stores the CRC64 of each title it has ripped? I just want some seed data to start doing some testing. Also, even though I agree with your previous statement, if we could get current users of ARM to submit their databases (really, if the database does contain the CRC64 -> title) could provide some seed data
I understand people being reluctant to share their databases so I could write a simple program to just extract the information needed and the user could just share the output.
If anyone has any other contact information for Microsoft that actually responds, I would appreciate if it could be shared so we can attempt to revive this service.
Thanks for your great article!
I’ve been looking for an autoripper that keeps the disc structure (BDMV / VIDEO_TS) as is instead of conversion to MKV, and optionally uses hardware transcoding (VAAPI). Since I didn’t find one, I wrote one by myself. It is based on Docker so that installation and configuration is done auomatically. You can find it on https://github.com/git-developer/marvyn
Keep up the good work!
Hi there,
Thank you so much for this.
I’d love to pay you to build a PC for this purpose! Please let me know if you’re interested.
Unfortunately, I just don’t have the time to run through the learning process to put all this together, but I do want to get ripping my library into digital.
Hi,
I find this project very interesting, and I’ve tried getting it to work.
But when I insert the disk it won’t start doing anything, it doesn’t log, I don’t hear the disk spin.
Am I doing something wrong?
I really want to get this to work, because I need to get rid of my DVD collection.
Thanks for putting this together. I’m no linux su, but I have some experience. I have gone through your guide a couple of times, trying to find my mistake but to no avail. It appears MakeMKV doesn’t recognize my external DVD drive. And the empty.log file isn’t being updated. It contains only one line:
[2021-02-05 01:27:35] INFO ARM: Failed to open device /dev/loop16 to check status.
However, the log files (“DVDNAME_xxxxxxxxxx.log) of the DVDs are being generated and they all end with:
[2021-02-05 03:47:33] ERROR ARM: A fatal error has occured and ARM is exiting. See traceback below for details.
Traceback (most recent call last):
File “/opt/arm/arm/ripper/main.py”, line 432, in
main(logfile, job)
File “/opt/arm/arm/ripper/main.py”, line 355, in main
if utils.rip_data(job, datapath, logfile):
File “/opt/arm/arm/ripper/utils.py”, line 316, in rip_data
cfg[“DATA_RIP_PARAMETERS”],
And finally, the log files (None_xxxxxxxxxx.log) contain just one line:
[2021-02-05 03:46:53] INFO ARM: Drive appears to be empty or is not ready. Exiting ARM.
If I use: sudo makemkv while a DVD is in the optical drive, the GUI responds with “The program can’t find any usable optical drives” so I suspect the issue is with makemkv. However, I have not found any solution yet that works for me.
System Info:
id: maximus
description: Laptop
product: XPS 13 9360 (075B)
vendor: Dell Inc.
serial: GCT12G2
width: 64 bits
capabilities: smbios-3.0.0 dmi-3.0.0 smp vsyscall32
configuration:
boot = normal
chassis = laptop
family = XPS
sku = 075B
uuid = 44454C4C-4300-1054-8031-C7C04F324732
DVD Drive:
id: cdrom
description: DVD-RAM writer
product: DVDRAM GT34N
vendor: HL-DT-ST
physical id: 0.0.0
bus info: scsi@0:0.0.0
logical name: /dev/cdrom
logical name: /dev/cdrw
logical name: /dev/dvd
logical name: /dev/dvdrw
logical name: /dev/sr0
version: AS00
capabilities: removable audio cd-r cd-rw dvd dvd-r dvd-ram
configuration: status = open
OS: Ubuntu 20.04.2 LTS
If you have any time to think about what might be causing this, I would be very grateful.
Cheers,
Dave
Hi, Dave. Thanks for trying the ARM. I suggest posting your question on GitHub, the folks there will probably be able to help better than I can.
Sooooo….
Has something changed with the PPA for makemkv? I have 1.15.1 installed and it doesn’t see anything newer when I run an “apt upgrade” although it does show a lot of core packages to update. Have you come across anything?
Hi Ben!
I followed this as best I could using your Data Center In A Box setup guide and ESXi 6.7, TrueNAS Core, and Ubuntu 20.04.
I got the drive pools set up, and I can ping 10.55.0.2 from inside TrueNAS, and the datastore is properly set up in ESXi
The problem comes when I try to mount the NFS share that I made. I can’t ping the storage network, and I can’t get ubuntu to use both the storage and vm networks simultaneously (Although this tutorial only shows you using the vm network).
I assume the point of registering the datastore in ESXI is so we don’t have to connect to that network to access it, so how do I get my ARM vm to use the datastore that was registered in ESXi? This tutorial makes no mention of it as far as I can tell
Thanks!
Did anyone ever make a docker version of this? I see people talking about it but I can’t find a link to a dockerfile or anything on Docker Hub indicating anyone ever made a docker image of this.
I have made a lot of changes to this in my fork on GitHub and managed to get it running in docker.
I also made a PR with the changes #457 But no word back from anyone yet.
—————
Docker image is here: https://hub.docker.com/repository/docker/1337server/automatic-ripping-machine
But all the source is on GitHub if you wanted to build it yourself.
Thank you Benjamin.
Has anyone poked at using this with CD changers? Maybe even Pioneer 6 CD changers? In the udev rules I’m not certain how to signal that the magazine has changed, or what to listen to perhaps.
Thanks for reading!
Not sure I did this right.
I put in a DVD and it doesnt seem like anything is happening.
Do I log into the ARM account?
How do I tell if it is working?
Hi,
is there a way to install it on a FreeBSD system? I use TrueNas for my nas and this has a DVD-Drive.
At the moment i use an old Laptop to rip the Media an then transfer it to my nas. (i know i also can rip directly to it)
I think for the powerusage and overall its elegant if i can use my Nas directly.
I hope there is a way. thanks a lot before.
Greetings,
Ralf
Hi, Ralf. I have not tested this on FreeBSD but if you get it working let me know. TrueNAS Scale is based on Linux (Debian) so there might be more opportunities there–especially if you can pass the DVD drive to a KVM guest.
Really great work. Have you tried this on a raspberry pi 4? Previous generations of the Pi wouldn’t have had anywhere near enough power, but given that the new Pi is significantly faster and has more memory it should theoretically be possible to use it for this purpose if the time taken to encode isn’t an issue. I may try it with the Debian installer script unless there’s a reason why it absolutely won’t work.
I can’t think of a reason it wouldn’t work… except some of the dependencies may require an x86 CPU. If you give it a try let me know how it works.
Hello
My ARM server is totally screwed up. I upgraded it to 20.04 by mistake without even thinking. Is there a way to save it, or should I re-install 18.04?
Great work on this project – appreciate all the time and attention you put in. I am new to this but have successfully ripped a hundred or so DVDs from my collection, with mostly good results (other than 1D10T mistakes on occasion). The problem I have is the following few lines from the debug log (running Ubuntu 20.04 and latest version of ARM):
[2022-01-04 20:20:40] INFO ARM: utils.move_files Moving ‘Scooby-Doo! Mask Of The Blue Falcon Original Movie_t02.mkv’ to /movies/media/final/Scooby-Doo Music of the Vampire (2012)/extras
[2022-01-04 20:20:40] DEBUG ARM: main.main Attempting to remove extra folder in ARMPATH: /movies/media/final/Scooby-Doo Music of the Vampire (2012)
[2022-01-04 20:20:40] DEBUG ARM: main.main Removed sucessfully: /movies/media/final/Scooby-Doo Music of the Vampire (2012)
Why does the script move the “…to2.mkv” to the extras folder and then remove the parent folder and the freshly ripped mkv?! Probably something simple but I cannot figure out what!? Let me know if you need further info or I missed something obvious.
Sometimes, rarely, and I’m not sure why, a DVD will be ripped to the raw folder, but the HandBrakeCLI process either dies or doesn’t get kicked off (not sure which). Is there a method to try again from the starting raw files instead of re-ripping? (this is on Linux) Thanks!
Hi, is there any Raspberry Pi option? I want to try.
Here it says Ubuntu, on github it says Ubuntu Server. I tried with Server this weekend but I either failed or didn’t configure right. I’m more familiar with non-server, so I’ll try that soon.
I managed to get it to work with 20.04 but ran into a number of issues. I have volunteered to help update documentation fro more current versions. I think you would need to be on an way older version to not hit a few configuration hiccups.
First off, thanks Ben! Second, and I’m sorry if I missed this, but does the computer that is my ARM need to be logged in under the ARM user to work or will any user account do the ripping? I’ve just tried going through the instructions once and it isn’t working yet. I’m going to make a fresh Ubuntu install, then try again, but step by step instead of using the script.
Cheers!
Jack
Ok, I think I figured out a lot going through the automatic installation script. Now when I pop in a DVD, the ARM repeatedly tries to run, but I get this issue result from running tail -f /var/log/syslog
Jan 5 16:47:28 LenovoRipper systemd[1]: Started Arm service.
Jan 5 16:47:29 LenovoRipper python3[15073]: [2023-01-05 16:47:29,630] DEBUG ARM: __init__. Debugging pin: 12345
Jan 5 16:47:29 LenovoRipper python3[15073]: [2023-01-05 16:47:29,762] DEBUG ARM: utils.check_db_version Head is: f1054468c1c7
Jan 5 16:47:29 LenovoRipper python3[15073]: Traceback (most recent call last):
Jan 5 16:47:29 LenovoRipper python3[15073]: File “/opt/arm/arm/runui.py”, line 10, in
Jan 5 16:47:29 LenovoRipper python3[15073]: import arm.ui.routes # noqa E402
Jan 5 16:47:29 LenovoRipper python3[15073]: File “/opt/arm/arm/../arm/ui/routes.py”, line 26, in
Jan 5 16:47:29 LenovoRipper python3[15073]: ui_utils.check_db_version(cfg.arm_config[‘INSTALLPATH’], cfg.arm_config[‘DBFILE’])
Jan 5 16:47:29 LenovoRipper python3[15073]: File “/opt/arm/arm/../arm/ui/utils.py”, line 90, in check_db_version
Jan 5 16:47:29 LenovoRipper python3[15073]: c.execute(‘SELECT version_num FROM alembic_version’)
Jan 5 16:47:29 LenovoRipper python3[15073]: sqlite3.OperationalError: no such table: alembic_version
Jan 5 16:47:29 LenovoRipper systemd[1]: armui.service: Main process exited, code=exited, status=1/FAILURE
Jan 5 16:47:29 LenovoRipper systemd[1]: armui.service: Failed with result ‘exit-code’.
Jan 5 16:47:33 LenovoRipper systemd[1]: armui.service: Scheduled restart job, restart counter is at 1610.
Jan 5 16:47:33 LenovoRipper systemd[1]: Stopped Arm service.
Would anyone have some insight as to what could be causing this? Perhaps I don’t have permissions a directory or file set correctly?
Cheers,
Jack
It looks like a database issue. “alembic_version” is a table in the arm database, and it can’t find it. That could be a few reasons, like, the database is missing, corrupt, empty…or as you mention, a permission issue with the database file or directory that it’s in.
I am also having issues installing ARM to Ubuntu 20.04.5 with manual and script installations on both a physical machine and a VMware VM. The errors were the same on both devices.
With an automatic script install, the script does not appear to finish. No pages load. Image of terminal output: https://user-images.githubusercontent.com/15239157/211882740-e5bd8e8b-f8d6-4192-8a4c-ff158f479a50.png
The manual install will seem to finish as it should, but the ripper does not work, and I get this when I go to the “history” or “database” page:
https://user-images.githubusercontent.com/15239157/211882869-c02423e0-3d7c-4f23-b026-5fa22680acc0.png
Here is my error log for the WebUI after a manual install: https://github.com/automatic-ripping-machine/automatic-ripping-machine/files/10394420/WebUI.log
Sorry I am not a developer so I might not be getting as much information as would be helpful.
I hope this works like it used to for me soon, I have a couple dozen disks to rip and I LOVE project. ARM is amazing. Thanks for all the hard work to the Ben and other developers!
The first comment on this tells you how to fix the issue with Ubuntu you are having
https://github.com/automatic-ripping-machine/automatic-ripping-machine/issues/641
Hi All,
Thank you to Ben and 1337-Server for working on this and keeping it alive!
I am trying to get this to work with a Nimbie Autoloader – has anyone tried to do the same and got it work? I am not sure where I should insert the commands to control disc insert/eject/reject etc.
Appreciate any thoughts :)
I am in the same boat. I am about to dive into what I need to do to get the Acronova linux SDK working with this.