18 releases
| 0.2.80 | Dec 30, 2023 |
|---|---|
| 0.2.79 | Nov 13, 2023 |
| 0.2.77 | Oct 16, 2023 |
| 0.2.74 | Nov 17, 2020 |
| 0.1.0 | Jun 23, 2019 |
#1632 in Command line utilities
137 downloads per month
72KB
2K
SLoC
youtube-subscriptions
terminal UI for viewing youtube and/or peertube subscriptions. Especially well suited for Raspberry Pi.
requirements
- mpv to stream videos (if
mpv_modeis enabled (default)) - youtube-dl to download youtube videos (if
mpv_modeis disabled) - omxplayer or vlc or mplayer or mpv to play videos
installing
You can download a self-contained binary from releases page
setup (youtube)
Create an subscription_manager file:
echo '<opml></opml>' > ~/.config/youtube-subscriptions/subscription_manager
Go to your channel page: https://www.youtube.com/feed/channels
Scroll to the bottom of the page til all your channels are loaded.
Save the source of the page in channels.html.
Then recover your channels list by running the following command (can take a long time if you have a lot of channels)
./extract-channel-ids.sh channels.html | tee channel_ids
copy all those id in channel_ids list (see configuration section)
setup (peertube)
Create a configuration file (see configuration section)
and add the channel urls you want to register to channel_urls list.
backround mode
Sometimes reloading the video list can take a long time.
To avoid blocking the main app, you can run the video reload in a separate process.
Just run with --background flag (you can have it in a cron), and you can reload the main UI with r.
usage
press h for help.
configuration
You can optionnaly add a user configuration at
$HOME/.config/youtube-subscriptions/config.json
example:
{
"video_path": "__HOME/.cache/yts/videos",
"cache_path": "__HOME/.cache/yts/yts.json",
"youtubedl_format": "[height <=? 360][ext = mp4]",
"youtube_instance": "https://invidious.privacydev.net/",
"video_extension": "mp4",
"kind_symbols": {
"Audio": "ﱘ",
"Video": "",
"Other": ""
},
"players": [
["/usr/bin/mplayer", "-fs"]
],
"channel_ids": [],
"channel_urls": [],
"mpv_mode": true,
"mpv_path": "/usr/local/bin/mpv"
}
| field | description | default value |
|---|---|---|
| video_path | directory where videos will be stored | /tmp |
| cache_path | file path where video list will be stored | /tmp/yts.json |
| blockish_player | blockish player to use (supersedes players) | None |
| players | list of players command for videos in order of priority | |
| youtubedl_format | see youtube-dl doc | [height <=? 360][ext = mp4] |
| youtube_instance | invidious / youtube instance to use to open videos | https://www.youtube.com/ |
| video_extension | youtube-dl video extension as per format | mp4 |
| kind_symbols | hash of characters to describe the media | { "Audio": "a", "Video": "v", "Magnet": "m", "Other": "o" } |
| channel_ids | list of additional channel ids which will be also fetched | [] |
| channel_urls | list of additional channel urls which will be also fetched (can be used for peertube) | [] |
| mpv_mode | try and start mpv to play the youtubee video first | true |
| mpv_path | path to mpv binary (will be use if mpv_mode is true) | /usr/bin/mpv |
| open_magnet | tool to use to open magnet links (e.g. transmission-remote-cli | None |
| auto_thumbnail_path | file path to write thumbnails to when cursor is moved | None |
__HOME will be substituted with the home path.
cross compiling for raspberry pi
simply run:
./cross-build-raspberry.sh
binary will be in target/arm-unknown-linux-gnueabihf/release/youtube-subscriptions
Dependencies
~25–70MB
~1M SLoC