Monday, 14 August 2017

Downloaded Youtube content on Plex

08:40 Posted by Jurgens Krause 2 comments
My internet provider gives me uncapped data at night, but severely capped and throttled during the day. For this reason, I like to download some videos from YouTube and then make them accessible on my Plex server. This is especially handy for my wife, who loves a certain popular exercise channel.

Whatever your reason for putting YouTube videos on your Plex server, this is a handy guide to getting those videos on the server easily accessible.
This is a partly automated and partly manual process, but I have reached the point where I can import and make available the downloads for an entire channel in a very short timespan.

This guide assumes a couple of things.

1. You are running Plex on a Linux server (though all the utilities work under Windows as well)
2. You know how to install utilities on your Linux server. If you don't Google is your friend


Step 1: Install youtube-dl on your server
The instructions for installation are available on https://rg3.github.io/youtube-dl/download.html

Step 2: Create a directory for your YouTube media. We will download the media straight into the final folder.

Step 3: Find the channel that you want to download. For channels with hundreds of videos, I ile to group the videos by playlist, where each playlist becomes one season of the specific show.

3.1 - Visit the Playlists page for the specific channel
3.2 - Using a link clipping plugin (I use link klipper on chrome) extract all the playlist links from the page.
3.3 - Link Klipper creates a CSV file that I sanitize using Notepad ++ into a list with all the playlists that I want to download. (I use Notepad++ extensively, and it's column edit mode comes in handy in a bit)


Step 4: Modify the text file as per below:
4.1 - Add the following text to the beginning of each line in the text file:
youtube-dl -i --yes-playlist -o './Khan\ Academy/Season 01/Khan\ Academy - S01e%(playlist_index)s - %(title)s.%(ext)s' --write-thumbnail --add-metadata --metadata-from-title '%(title)s' --xattrs --download-archive ./progress.txt -f 22

Your file should now look something like this:

Remember to change the Season number on each line, so that each playlist will end up in it's own folder.

Step 5: Put the text file on your server in the root directory of your YouTube content
I usually just copy the text to the clipboard on my pc, and then paste it into a putty session with VIM running.

5.1 - Open a Putty session to your server
5.2 - Navigate to your YouTube folder
5.3 - Using your favourite text editor, open a new file called youtube.sh (or whatever.sh)
5.3 - Paste the contents of the text file containing the playlist into this new file.
5.4 - Run the following command:
sh youtube.sh

This will start the download, name the files and put them in the right folders

Step 6: Adding the content to your Plex Server
6.1 - Add a new "TV Shows" library to your Plex Server calling it "YouTube" or whatever works for you.
6.2 - Add the YouTube folder containing the downloaded YouTube content
6.3 - Under the Advanced tab, set the scanner to "Plex Series Scanner" and the agent to "Personal Media Shows"

Additional Tasks:

I like to create a nice show poster in photoshop, so that the show looks neat on my server, I also manually create and set a season poster for each season, that has the Playlist title on the season poster. This makes it easy to know what content is in each season.





2 comments:

  1. Once they wish to edit it, they want to convert it to different video format first, equivalent to AVI or Mpeg, after which convert it again after enhancing. The preparation for the enhancing looks like a fancy course of. What's extra, the important thing frames misplaced within the FLV compression won't be reproduced after transformed to different much less compressed format. The added frames you see in it are simply the repeated frames of the compressed FLV. So it's not clever sufficient to reveal such an inconvenience earlier than FLV enhancing.how to download youtube audio -tubegeter

    ReplyDelete