The Ultimate Automated Media Setup for Movies & TV Shows

🕒  Posted

Until now, I’ve been really happy with managing my personal media collection on my computer. Lately though, with an ever-growing collection of media, I decided to change that. This article will outline the gauntlet I ran to discover what the ultimate automated media setup would look like in practice.

Note: This post is strictly and entirely an educational experiment and I am in no way condoning the use, nor advocacy, of software to acquire copyrighted media content. If you use this information for such a purpose, you have been warned 🕴.


Back in 2011 I heard about this thing called “Plex”. It seemed like a cool way to present your media library, but I felt like it couldn’t replace my homegrown hodge-podged collection of techniques I’d gained over the years for wrangling and managing my collection of ripped CDs and DVDs.

Fast forward to 2017 and my media collection has grown quite a bit. I keep hearing about this Plex thing repeatedly, and after a few Google searches I realized there is a hidden world of people that have this whole media management thing down to a science. After spending some late nights doing research, sifting through Github repositories and forums, I feel that I have devised the perfect automated media management setup for me.

While deciding on solutions for each of the problems I was having with my current workflow, I kept asking myself questions like “how can I…”:

  • easily stream content from my storage device to my TV?
  • automate the gathering of content to put onto my storage device?

Below is a list of applications and some background on them that comprise the setup of the perfect automated media server. If you ever feel confused about anything, all of the applications mentioned here have great communities, and are very receptive to new people joining them, asking questions, and getting help. It goes without saying but also make sure to search the forums first before posting on them!

A note before continuing: I am writing this with Windows 10 in mind, but most of the apps have other ways you can install them on various OSs, your milage may vary ✌️.

Plex Media Server

Plex is a relatively small piece of this whole setup, but adds tremendous value when you glue everything together. It manages and allows you to stream your content on your local network, across the internet, and to almost every device you own (excluding your toaster, but maybe your fridge). Here’s a quote from the Plex site explaining how it works:

Plex is like mission control for your personal media collections. With our easy-to-install Plex Media Server software and your Plex apps, available on all your favorite phones, tablets, streaming devices, gaming consoles, and smart TVs, you can stream your video, music, and photo collections any time, anywhere, to any device.

What this means is that you can install Plex Media Server on your main content storage device (most likely a server or PC of some kind) and can stream it to any Plex viewer app available, including DLNA-supported devices.

Setup

Setting up Plex is fairly straight-forward thanks to the effort that has gone into the installer setup and the configuration walkthrough on first-run. HowToGeek has a great how-to guide on setting it up and running. All of the configuration is available to you via a web browser at http://localhost:32400 while running. You can alternatively use the Plex Viewer app for your platform for this as well. It’s also a good idea to backup your content before having Plex scan the media folders.

Considerations

Plex requires that your media to be in a specific format for it to parse movie and episode names from the filenames and folders in which they reside. As it turned out, the flat folder structure I had grown to love wouldn’t cut it anymore so I used a mass file renaming utility called Filebot (which I strongly encourage) to rename everything to the necessary format.

With Filebot, you can configure the different expression formats for your media types by clicking the “Match” button then “Edit Format” in the menu. I configured the renaming scheme to be:

# TV format
{n}/{'Season '+s}/{n} - {sxe} - {t}

# The above format will turn input
#   /Volume/tvshows/Firefly/S01E01 - Serenity
# into output
#   /Volume/tvshows/Firefly/Season 1/Firefly - 1x01 - Serenity

# Movie format
{ny}/{ny}

# The above format will turn input
#   /Volume/movies/Avatar.mp4
# into output
#   /Volume/movies/Avatar (2009)/Avatar (2009).mp4

Note: you don’t have to use the exact formatting I have outlined above, it simply looks visually appealing while using a file explorer and has the added benefit of being Plex-readable. Filebot has a very robust expression formatting document that I suggest you read, plus a very active forum where the app maintainer is always answering questions.

Once you set the format, it’s as simple as dragging your whole media folder into Filebot corresponding to the content you want to rename, clicking Match then either TheMovieDB or TheTVDB, then Rename. Once it does it’s thing, you should have all of your filenames rewritten to be respective to the identified content and ready for adding to Plex.

Plex Remote Access considerations

If you plan on watching your media library anywhere besides in your own home on your own network, you’ll want to enable Remote Access. It is the feature that allows you to stream your content over the internet from your server to any connected devices with a Plex app. Allowing content access across the internet may involve some port forwarding on your router however. Your milage may vary, but when using the default port I did not have to modify anything in my router.

Another issue I ran into was with the usage of a VPN. As it turns out, you cannot use Plex while the physical Plex server is connected to a VPN. There is an obvious reason once you understand how VPNs work, but is a bit confusing while in the process of learning how to glue these applications together. I personally didn’t use this, but a proposed solution that I’ve come across is to run your torrent client inside a virtual machine with VirtualBox or VMWare Fusion/Workstation. This allows you segregate the virtual machine’s network traffic to the VPN, while freeing up Plex to run it’s services natively, serving up content to the internet free of network restrictions.

Sonarr

Sonarr is used for tracking and automatically gathering torrents for tv shows available from TheTVdb. From their Github:

Sonarr is a PVR for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.

Setup

Download Sonarr from the site here. Once installed, all of the configuration happens via a web browser at http://localhost:8989. A combination of the Sonarr wiki pages and this article over at Cutting Cords got me started on sensible settings when configuring it.

Radarr

Radarr, originally a fork of Sonarr, is used for tracking and automatically gathering torrents for movies available from MovieDB. From their Github:

Radarr is an independent fork of Sonarr reworked for automatically downloading movies via Usenet and BitTorrent. The project was inspired by other Usenet/BitTorrent movie downloaders such as CouchPotato.

Setup

Radarr, much like Sonarr, is very simple to setup and requires minor configuration once installed. The configuration for Radarr is also available via a web browser at http://localhost:7878. The wiki for the project has great documentation that should be able to get you going.

Jackett

Allows the use of indexers and trackers not available as built-ins to either Radarr or Sonarr. From their Github:

Jackett works as a proxy server: it translates queries from apps (Sonarr, Radarr, SickRage, CouchPotato, Mylar, etc) into tracker-site-specific http queries, parses the html response, then sends results back to the requesting software. This allows for getting recent uploads (like RSS) and performing searches. Jackett is a single repository of maintained indexer scraping & translation logic - removing the burden from other apps.

Setup

Jackett is by-far the easiest of the listed apps to setup. Simply download the latest release, install it, and configure which indexers you want to add via a web browser at http://localhost:9117/Admin/Dashboard. Like the other projects above, Jackett has some wiki pages that show how to setup the service, plus there is a fantastic guide over on HTPCGuides on how to setup your first indexer with Sonarr (also applies to Radarr).

Transmission

Transmission is a very thin torrent client that Just Works™ out of the box and plays well with Radarr and Sonarr. It requires very little (but supports a fair ammount) of configuration to run. It uses an incredibly low amount of memory, is less CPU-intensive than most other clients, and is native across many platforms. It also has a tonne of features including: “encryption, a web interface, peer exchange, magnet links, DHT, µTP, UPnP and NAT-PMP port forwarding, webseed support, watch directories, tracker editing, global and per-torrent speed limits, and more.”

Setup

Download and install the latest executable from the site. In order to use Transmission with Sonarr and Radarr, the only configuration preference you need to change in the settings is toggling the Web UI option and setting a username and password for it. This allows Sonarr and Radarr to remotely add torrents to Transmission. You should also enable “Start added torrents” which will automatically download torrents when added.

A trusted VPN provider

This could almost be a requirement for daily web browsing if you care about your privacy, you can’t be too safe on the internet these days.

I chose to use Express VPN after thoroughly reading the TorrentFreak 2017 review of anonymous VPN providers article. If you signup with my referral link, we BOTH get 1 month of free service 😁 !

Once you signup, get your account details from the subcriptions page to manually create new VPN configuration in Windows 10. To do so:

  • Go here https://www.expressvpn.com/v2/subscriptions
  • Click the green “Set up ExpressVPN” button, which will open a new tab
  • Click “Manual Config” on the left, then on the right choose “PPTP & L2TP-IPSec”
  • Make note of your unique username and password on the right, as well as the server name by selecting it from the sections below user/pass

Microsoft has some great documentation on how to connect to a VPN given your credentials.

You can also automate connecting to your VPN on system startup as well. First, you’ll want to create a new batch script somewhere on your computer called expressvpn_connect.bat and load it with:

C:\Windows\system32\rasdial.exe "profile name" "username" "password"

where profile name is the name of the VPN profile you created earlier. At this point you should be able to run the batch file and Windows will connect to your configured VPN provider. Taking this one step further, you can schedule the script to run whenever you login using Task Scheduler. Over at The Windows Club they have a nice how-to guide on how to accomplish this.

Caveat

There is a slight downside to all of this VPN configuration (and it’s something that I have yet to come up with a proper solution for): when you enable Remote Access in Plex while you’re connected to your VPN, you will be unable to connect to Plex through any device outside your network. This becomes plainly obvious when you understand how VPNs work, but is a bit of a pain when you want to keep everything secure.

Other considerations

Now that you’ve got this all setup you can stop here and bask in the glory of a fully automated media setup, but one might worry about various other aspects to this setup like:

I’m running out of storage/I think my HDD might die and I’ll lose all of my content!

This is where a network-attached storage device comes in to save the day.

From Wikipedia:

Network-attached storage (NAS) is a file-level computer data storage server connected to a computer network providing data access to a heterogeneous group of clients. NAS is specialized for serving files either by its hardware, software, or configuration. It is often manufactured as a computer appliance – a purpose-built specialized computer. NAS systems are networked appliances which contain one or more storage drives, often arranged into logical, redundant storage containers or RAID.

Plex-capable NAS devices have come down in price considerably over the last 5 years, and it’s even cheap enough to build your own (which I strongly encourage!). What a NAS provides you over a single HDD for storing your content is the peace of mind that you won’t lose some, most, or even all, of your content in the event your content storage HDD decides to call it quits.

If a NAS device is not something you want/can afford, then a large-sized external HDD will even get you most of the way to there.

How do I protect all of my content from prying eyes?

Encrypting the storage volume where your content is stored is really the only answer to this. Generally I would advise against using something proprietary to the OS, so choose a cross-platform solution like VeraCrypt. You’ll also want to decide whether or not you want full-disk encryption or just file-level/application layer encryption as this will make your decision for cross-platform interoperability much more difficult.

If you enjoyed this content, please let me know on Twitter! I want to hear from everyone that comes across my posts 😄