Extracting Subtitles from Netflix

Having subtitle scripts from TV shows that you are watching is an excellent study aid. Not to mention that they can be used with Subs2SRS to easily import sentences into Anki! These days, many people tend to watch Netflix more than a lot of the traditional media. I’ve also seen numerous people talking about how the Netflix Original “Terrace House” is great for Japanese listening practice, because it is unscripted and captures natural dialog.

While it’s long been lamented that there was no way to download or rip the Japanese subtitles from Netflix (I even said so much in a previous post about Netflix), I have recently discovered a way!

In this post, I will provide a download for the subtitles that I have ripped, and I will also provide instructions on how to rip them yourself from other shows. However, the process of ripping subtitles is quite technical, and is probably not something that everyone can do.

Already Ripped Subtitles

First, some important details about Netflix subtitles: In most languages, the subtitles are just in a standard text-based subtitle format. So if you get English subtitles, you can just open them up in a text editor. With Japanese subtitles, however, the subtitles are all stored as images. This means that in order to do things like copy and paste the text to look up words, they would first have to be converted into text by OCR, which is unfortunately not perfect.

All of the subtitles that I have ripped have been OCR’ed using the Google Cloud Vision API. This is likely the most accurate Japanese OCR technology available at the moment, but the text still does contain a few mistakes here and there. So please keep this in mind if you are using these subtitles to study. If something looks wrong, it probably is. Go watch it on Netflix to see what the correct subtitle would look like.

You can download my Netflix subtitle pack from here (Mega) or here (MediaFire).

It contains subtitles in both English and Japanese for all of the following shows:

  • Atelier (Underwear)
  • Good Morning Call
  • Hibana (Spark)
  • Midnight Diner: Tokyo Stories
  • Mischievous Kiss (Itazura na Kiss)
  • Mischievous Kiss 2 (Itazura na Kiss 2)
  • My Little Lover (Minami Kun No Koibito)
  • Terrace House: Boys and Girls in the City
  • Terrace House: Aloha State (Parts 1+2)
  • Pee Wee’s Big Holiday (Japanese subs for English language movie)
  • Stranger Things (Japanese subs for English language series)

If Netflix has another show that you would like Japanese subtitles for, or if you would like audio to accompany the subtitles, then you will have to rip it yourself. As I said, it is also quite technical, so I wouldn’t attempt it unless the instructions below at least halfway makes sense to you.

How to rip Japanese Subtitles from Netflix

First, you need to choose a show that actually has Japanese subtitles available. I show how to do this in my previous post about Netflix.

Once you have found a show that has Japanese subtitles, you need to see if you will be able to download it. At the time of this writing, Netflix allows Android and IOS devices to download select shows to your device. You can not download shows directly on a PC. I have also tested several Android emulators on PC, and did not have any success. I also have no experience with IOS devices, so I can not say for certain that this would be possible on there or not. So basically I can only confirm that the following steps can be done on an Android device. I also believe your Android device will need to be rooted, but I’m not certain. If anyone manages to do this without a rooted device, please let me know.

So, assuming you have a rooted Android device, you will want to find a show that both has Japanese subtitles and allows the episodes to be downloaded. Then just download all of the episodes onto your device. Don’t download more than one series at a time! This is because the filenames do not contain the show title, so its difficult to figure out which files go with which show. If you stick to one show at a time, you wont run into this problem.

Next, you will want to have the ADB tool which lets you transfer files between your Android device and your PC. These files will be hidden to a standard file browser, so that’s why you need this tool. ADB can be downloaded as part of Android’s standalone SDK Platform Tools. You also need to Enable USB Debugging on your Android device.

Now, you need to find where Netflix downloaded the files onto your Android device. A file manager app such as Amaze should let you find them. On my device (it’s probably the same on most devices) the files are located at /sdcard/Android/data/com.netflix.mediaclient/files/Download/.of
Inside that folder there will be a separate subfolder for each episode, and each one of those subfolders will have a name made up of seemingly random numbers. You can use the ADB tool to copy all of the subfolders to your PC. You first need to open up a command prompt in the folder that adb.exe is stored in, and then do something like this:

adb pull /sdcard/Android/data/com.netflix.mediaclient/files/Download/.of

After some time, all of the files will be copied to your PC (unless you get an error message). So now just browse into the “.of” folder on your PC to find all of the subfolders for each episode. The folders should sort in the correct order, as long as you sort by name. So the first folder should be the first episode, the second folder will be the second episode, and so on. Let’s take a look at the different types of files that you can find in each folder.

  • .manifest – Contains some metadata about the files. Not really useful.
  • .nfi – Unknown – I’m not sure about the contents of this file, but it does not appear to be useful.
  • .nfv – Netflix Video – Contains the video stream. It is encrypted so it is not much use to us.
  • .nfa – Netflix Audio – Contains an AAC audio stream. Change the file extension to .m4a and you should be able to play it. Can be used with Subs2SRS.
  • .nfs – Netflix Subtitle – Contains the subtitles. If the file size is smaller (about 10-100kb) it is usually a text file and may contain the subtitles for English or some other language. Change the extension to .xml and you can open it in a text editor. If the file size is larger (a few MB), it is the Japanese subtitles. Change the extension to .zip, and you will be able to extract the contents.

After finding the Japanese subs and changing the extension to .zip, extract them into a folder, and then rename the folder so you know what episode it is. You will have many PNG files which are the subtitle images, and you will also have a file named “manifest_ttml2.xml” which has all of the timing data. Congratulations, you have successfully extracted the subtitles! But for them to be a little more useful, we will need to OCR them.

How to OCR using Google Cloud Vision API

There are several OCR tools out there that can handle Japanese text. Most of them suck and result in a lot of errors. Google’s OCR is by far the most accurate I have seen, and works quite well. Unfortunately, it’s only sort of free. According to their current pricing structure, you can OCR up to 1,000 images per month for free. Since a typical episode is a few hundred images, this is enough for a few episodes each month. However, Google also offers a great trial offer (at least at the time I write this). You can get $300 of free credit when you sign up, and you have no obligation pay anything or continue using the service. I opted for this option, and was able to OCR all of the episodes that you find in the download above.  The free credit does expire if you don’t use it within a certain time.

If you sign up for the Google Cloud Platform, then after logging in, you first need to enable the Cloud Vision API. Just click the “Enable API” link at the top of your Dashboard, and then find “Vision API” under the “Google Cloud Machine Learning” heading. After that, you will also need to create an API key. Click “credentials” on the left side menu, and then click “create credentials”, and select “API Key”.

Now, we can use a python script created by “zx573” from the Kanji Koohii forums to actually perform the work of sending the images to Google and generating a text-based subtitle file. You will need a 2.7.x version of python (I don’t think it works on 3.x). You also need to install the packages Pillow and requests. This can be installed from the command line by typing:

pip install pillow
pip install requests

Next, you will need the python script, which you can grab from here. You will then need to open up the file in a text editor and insert your API Key into the line that says AUTH_KEY = “YOUR API KEY HERE”

Now, we can run this python script from the command line, with the path of the folder containing your subtitle images as an argument, like so:

python generate_srt_from_netflix.py “Terrace House – Boys & Girls in the City 01”

If all goes well, you should see it processing the images, and then it will finally spit out an SRT file named “output.srt” for you! However, these srt files will contain some errors which we need to fix up before they can be opened in other applications.

Additional Processing

The srt files will have a problem in that they do not always contain timestamps that include milliseconds, and most applications that edit srt files will expect there to be milliseconds. However, this is an easy fix, using software that lets you do search and replace using regular expressions. I use notepad++.

If you choose the Search > Find in Files menu option, you can search across all your subtitles at once!

Set the directory to the location where your srt files are, and then if you want, you can set the filters to *.srt to avoid accidentally picking up any other files. Make sure the search mode is set to “regular expression” and the checkbox beside it is not checked.

Then, in the “Find what” field, you want to put: (\d\d:\d\d:\d\d,\d?\d?)(\s)
Replace with: \10\2

Press “replace in files”. Do this twice.

Then change “Find what” to: (\d\d:\d\d:\d\d)(\s)
Replace with: \1,000\2

Finally, press “replace in files” again. We have now corrected the srt files!

After that, there are some further optional things that you can do, but you don’t have to. The tool Subtitle Edit is quite helpful for fixing up your subtitles. You can use it to batch convert English.xml files into SRT files (Tools > Batch Convert). It can also remove hearing impaired text from the subtitles (text that describes sounds, or names which character is speaking). Sometimes it doesn’t work so well for removing hearing impaired text from the Japanese files, because the text is enclosed in Japanese parentheses rather than the expected English parentheses, but you can still accomplish it using the Search and Replace tool (or the same tool in notepad++). After loading a Japanese subtitle file, you just want to go to Edit > Replace. Then select the “Regular Expression” option, and type (.+) as your search term (make sure you use Japanese parentheses, not English parentheses!), and press “Replace All.” That should get rid of any remaining Japanese hearing impaired text.

Take everything with a grain of saltEmail this to someoneShare on FacebookTweet about this on TwitterShare on Google+Share on RedditShare on StumbleUpon

One thought on “Extracting Subtitles from Netflix

Leave a Reply