this is a really underdocumented feature that this extension supports, wanted to share it with people. i've never written and shared a blog post like this before so feel free to give me tips about documenting steps or point out any errors i made. i kinda take docker knowldge for granted, not sure if i should avoid that. here's the contents:
I came across documentation for this in the readme for the FreshRSS extension YoutubeChannel2RssFeed. The method involves running an instance of the Youtube-operational-API (there was a public instance that has been cease and desisted by Google, see here) and plugging the extension into it.
YoutubeChannel2RssFeed Extension
TL;DR install this extension
git clone https://github.com/cn-tools/cntools_FreshRssExtensions.git
cd cntools_FreshRssExtension
cp -r xExtension-YouTubeChannel2RssFeed <your_freshrss_data_directory>/config/www/freshrss/extensions
Youtube-operational-API instance
Here's a Docker compose.yml for running both
services:
freshrss:
image: lscr.io/linuxserver/freshrss:latest
container_name: freshrss
environment:
- PUID=1000
- PGID=1000
- TZ=America/Los_Angeles
volumes:
- ./freshrss/config:/config
ports:
- "8811:80""
restart: unless-stopped
youtube-operational-api:
container_name: freshrss-yt-o-api
image: benjaminloison/youtube-operational-api:latest
restart: unless-stopped
ports:
- "8812:80"
depends_on:
- freshrss
Configuring extension
In FreshRSS, log in as admin and go to Configuration > Extensions. Turn on YoutubeChannel2RssFeed under User extensions and click the gear to configure.
Set Youtube Shorts to be marked as read or blocked completely. Enter the URL for your yt-o-api instance. Based on the above compose file it would be http://freshrss-yt-o-api:8812
. Submit changes.
For me this worked immediately, no shorts ever show up in FreshRSS for my Youtube feeds. I haven't seen this documented anywhere else so I wanted to mirror it somewhere.
Useful. I hate shorts and portrait-format video in general.
NB for those who don't know: a server is not needed to make Youtube RSS feeds, they exist natively:
https://www.youtube.com/feeds/videos.xml?channel_id=UCxxxxxxxxxx
. You just have to find thechannel_id
buried in the page source, which admittedly is a bit of a PITA. But no native way to exclude shorts, though.