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

cleverdevil

cleverdevil

cleverdevil

cleverdevil

cleverdevil

cleverdevil

www.npmjs.com/~cleverdevil

cleverca.st

trakt.tv/users/cleverdevil

mastodon.social/@cleverdevil

$cleverdevil

 

If I could only have one of those two? I'd take sideloading. I am all for Apple policing its own store, but leave room for devs and users to explore. You already have notorization as a mechanism to block baddies.

 

There are rumors of Apple loosening its grip on iOS in 2020. I'd love to see the ability to change default apps (mail, calendar, etc) and an official way to sideload apps. I think the former is likely, the latter isn't.

 

About to head back to LA from Palo Alto after a very successful, though very short, business trip. I had the pleasure of presenting in the beautiful @awscloud Palo Alto office on the topic of microservices. Thanks for the opportunity!

 

On the other hand, I got a new car, and am quite excited about it. Another Alfa Romeo Giulia, this time in metallic black with all black exterior accents and rims. Inside is red leather. Itโ€™s a proper mid-life crisis car. ๐Ÿคฃ

 

My poor wife and daughter have the flu. The LaCour familyโ€™s unlucky health streak continues.

 

After many weeks of waiting on shipping, I finally got my Paperlike screen cover for my iPad Pro, and I have to say, its pretty spectacular. A little fiddly to install, but they provide a helpful video. Feels and looks awesome. ๐Ÿค“

 

My daughter just said โ€œShakira has a huge wedgieโ€ and I think, in hindsight, 4K was a bad idea.

 

Reasonable people will disagree with me about that Google ad, and thatโ€™s OK. It was super well done. I just disagree with the fundamental message and find it exploitative and gross. Itโ€™s cool if you donโ€™t. I still love you :)

 

Disneyland on a Saturday. What could possibly go wrong?

 

Interestingly enough, The Year of Linux on the Desktop is 2020, because there is no such thing as a desktop app anymore. All you need is a web browser and 32 GB of RAM to be able to run all of your trash web apps. OS doesn't matter.

 

Desktop computing is in a sad place. Nearly every app is now a terrible web app wrapped in Electron. I have 16 GB of RAM in my MacBook Pro and am constantly swapping. I pine for the days of high quality, native desktop apps.

 

Colette got a Nintendo Switch Lite for her birthday (sheโ€™s super excited), which caused me to learn that Pokemon Sword doesnโ€™t support cloud saves on Nintendo Switch Online. Utterly baffling!

 

My sweet @ColetteLaCour turned 9 years old today. She is smart, beautiful, energetic, and fun, and I love her so much. Happy birthday little girl! ๐Ÿ’—

 

Watching the โ€œMaclunkyโ€ version of A New Hope on @disneyplus with the family. I forgot just how awful the changes from the special editions are. Woof! On the bright side, the movie looks great in 1080p.

 

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:

#!/bin/sh

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.