OS theme
Dark theme
Light theme
My iPhone battery
My iPhone Wi-Fi
Current motion
Click for current location
๐Ÿ‘ˆ๐Ÿผ ๐Ÿ•ธ๐Ÿ’ ๐Ÿ‘‰๐Ÿผ
Skip to main content

Learn more about me. Email me at













Iโ€™m a sucker for obscure handheld retro gaming devices. Intrigued by the new ODROID-GO Advance. Seems like a fun little piece of kit!


Last week I got knocked out with an infection which Iโ€™ve managed with antibiotics. This week, I am in Chicago on business and got food poisoning last night and am stuck in my bed attempting to keep fluids down. Rough couple of weeks ๐Ÿ˜ท


If youโ€™re a person or business who claims to care about privacy and data ownership, please stop using Facebook, Instagram, and other FB properties to drive โ€œengagementโ€ or build โ€œcommunities.โ€ Youโ€™re failing your customers / followers.


Finally finished watching Mr. Robot last night. Without spoiling anything, Iโ€™ll just say that it was so wonderfully executed, and was a beautiful closure to a great story. The most impressive part was how respectful it was of humanity and the struggles of mental health. Blown away.


Untitled Goose Game, but with a mischievous pug.


๐Ÿ“บ Automatically Downloading YouTube Content to Plex

4 min read

I have a small number of content creators that I enjoy following on YouTube, but I fundamentally dislike YouTube's shady algorithms, poor user experience, and invasive ads. These days, most of the content I watch is stored on my Plex server, so I decided to find a way to automatically download and add my favorite YouTube content to my Plex server. After a bit of searching, I found this guide from DIY Futurism which outlined a nice approach to the problem.

My Plex YouTube library

My approach is similar, and makes use of the excellent youtube-dl project, along with a personal media scanner and personal media agent for Plex. I run my Plex Media Server on my Synology DS1019+ NAS, which I absolutely adore, so that's where I set everything up. The process was quite simple:

  1. Installed the aforementioned personal media scanner and personal media agent in my Plex server and enabled them in my Plex server settings.
  2. Created a "TV Shows" library in Plex that uses the scanner and agent. I called mine "YouTube."
  3. Installed youtube-dl on my Synology. I already have Python installed there, so it was as simple as running pip install youtube-dl.

At this point, I was ready to create a script that would download the content and add it to Plex. The key is to take advantage of all of the great features in youtube-dl, including the ability to provide a "batch" file containing target channels, the ability to embed metadata and download thumbnails, and an "archive" feature which tracks what has already been downloaded. My script is a variation on the one from DIY Futurism:


cd /var/services/homes/admin/Media/YouTube
/volume1/@appstore/python3/bin/youtube-dl --playlist-reverse \
ย  --dateafter now-2weeks \
ย  --download-archive /var/services/homes/admin/Media/YouTube/downloaded.txt \
ย  -i \
ย  -o "%(uploader)s/%(playlist)s/%(playlist)s - S01E%(playlist_index)s - %(title)s [%(id)s].%(ext)s" \
ย  --add-metadata \
ย  --write-thumbnail \
ย  --batch-file=/var/services/homes/admin/Media/YouTube/channel_list.txt

Let's walk through the script. First, I change directories to where I want all of my content downloaded. This is the same directory that I configured in Plex for my "YouTube" library that I created earlier. Next, I specify that I want to process the videos in the playlist chronologically (in "reverse"). I also specify that I only want to download videos that were published in the last two weeks using the --dateafterย parameter. You can tweak this to download as much or as little of the content as you'd like.

Next, I point youtube-dl to a text file containing a list of all content that I've already downloaded using the --download-archive parameter, which youtube-dl will automatically maintain for me. Because I am limiting my downloads to the last two weeks, I did need to pre-populate this text file with all of the historical content to avoid having to scan through thousands of videos on each run of the script.

Next, I specify a format for where to store the downloaded content and what to name the files and directories, instruct youtube-dl to embed metadata, and to write a thumbnail image as well. This data will be used by the personal media scanner and agent to help Plex index the content.

Finally, I specify a "batch file," which contains a list of channels that I want to download content from. The format is simply one YouTube URL per line.

After an initial run that I performed manually, I scheduled the script to run every four hours, and now my Plex server is my central location for my YouTube content.


I have a small number of YouTube channels and creators that I enjoy following, but I really dislike the experience of using YouTube on the web and on iOS. So, I whipped up a script that automatically downloads YouTube content and adds it to my Plex server. So much better!


Maybe we should find a new stable genius. Ours is proving to be unstable and stupid.


William dropped my Nintendo Switch in the toilet yesterday, insta-killing it. The good news is that Nintendo apparently will repair it for $100 plus tax and shipping.


Update: Colette is going to be fine. Thankfully ruled out the serious possibilities. Now, on to celebrate the New Year!


Thanks for the well wishes, folks. I think she will be okay. She hadnโ€™t been feeling well for a while, and then had a bad spill on her bike yesterday and started vomiting and fever today. No outside injuries, but they just want to rule out any internal damage. Best to be safe!


Iโ€™m getting to spend New Years Eve with Colette in the ER. Poor little thing has to have a CT scan ๐Ÿ˜ท


Hahahaha, Iโ€™ll always be good with Ohio State* losing in a Fiesta Bowl. Good riddance.


โ€œDo you kids have any allergies?โ€

โ€œOnly one. Silence. Theyโ€™re allergic to silence.โ€


We bought William the new Pokรฉmon game for Nintendo Switch for Christmas, and itโ€™s the first game heโ€™s been able to pick up and play all by himself successfully. He said, โ€œdaddy, itโ€™s from my years of Pokรฉmon experience.โ€ Heโ€™s six. ๐Ÿ˜‚


I made a tasty Christmas dinner! Slow-roasted standing rib roast with sage gravy, roasted asparagus with sous vide egg, and the most amazing au-gratin potatoes Iโ€™ve ever tasted. Success! ๐ŸŽ„๐Ÿฅฉ๐Ÿฅ”๐ŸŒฒ๐Ÿฅš


Space Wizards: Fury Road


Itโ€™s my turn for space wizards! I managed to avoid spoilers. ๐Ÿ‘พ๐Ÿง™โ€โ™‚๏ธ


Finished season four of The Expanse, and it was easily the best season yet. Now, the wait begins for season five!


Seventeen years ago, I was setting up my first blog using MovableType on my Powerbook G4, and some clever Python scripts. I still have every post, right here in this site! ๐ŸŽ‰