HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
chapmanjacobd
library
Python2022–2024
chapmanjacobd / library

library

99+ CLI tools to build, browse, and blend your media library

3Distinct people
19Mentions
1Explicit recommenders
486GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

99+ CLI tools to build, browse, and blend your media library

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

Sure, I write small python CLI utils that help me solve media organization, media consumption, and sometimes data analysis. I use this every day on Linux and Android but I…

xk3 used a recommendation phrase. 2 indexed comments match. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by month19 dated mentions

Observed mentions: 2022-10-30 09:18:23 UTC to 2024-07-20 08:06:53 UTC.

012342022-10-01 00:00:00 UTC to 2022-11-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsOct 20222022-11-01 00:00:00 UTC to 2022-12-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2022-12-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-01-01 00:00:00 UTC to 2023-02-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2023-02-01 00:00:00 UTC to 2023-03-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2023-03-01 00:00:00 UTC to 2023-04-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-04-01 00:00:00 UTC to 2023-05-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-05-01 00:00:00 UTC to 2023-06-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2023-06-01 00:00:00 UTC to 2023-07-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2023-07-01 00:00:00 UTC to 2023-08-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-08-01 00:00:00 UTC to 2023-09-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsAug 20232023-09-01 00:00:00 UTC to 2023-10-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-10-01 00:00:00 UTC to 2023-11-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-11-01 00:00:00 UTC to 2023-12-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2023-12-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments2024-01-01 00:00:00 UTC to 2024-02-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2024-02-01 00:00:00 UTC to 2024-03-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2024-03-01 00:00:00 UTC to 2024-04-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2024-04-01 00:00:00 UTC to 2024-05-01 00:00:00 UTC (exclusive): 4 mentions; 1 submissions, 3 comments2024-05-01 00:00:00 UTC to 2024-06-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments2024-06-01 00:00:00 UTC to 2024-07-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-07-01 00:00:00 UTC to 2024-08-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 commentsJul 2024

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Oct 20222022-10-01 00:00:00 UTC2022-11-01 00:00:00 UTC101
Nov 20222022-11-01 00:00:00 UTC2022-12-01 00:00:00 UTC000
Dec 20222022-12-01 00:00:00 UTC2023-01-01 00:00:00 UTC000
Jan 20232023-01-01 00:00:00 UTC2023-02-01 00:00:00 UTC202
Feb 20232023-02-01 00:00:00 UTC2023-03-01 00:00:00 UTC101
Mar 20232023-03-01 00:00:00 UTC2023-04-01 00:00:00 UTC000
Apr 20232023-04-01 00:00:00 UTC2023-05-01 00:00:00 UTC000
May 20232023-05-01 00:00:00 UTC2023-06-01 00:00:00 UTC101
Jun 20232023-06-01 00:00:00 UTC2023-07-01 00:00:00 UTC101
Jul 20232023-07-01 00:00:00 UTC2023-08-01 00:00:00 UTC000
Aug 20232023-08-01 00:00:00 UTC2023-09-01 00:00:00 UTC101
Sep 20232023-09-01 00:00:00 UTC2023-10-01 00:00:00 UTC000
Oct 20232023-10-01 00:00:00 UTC2023-11-01 00:00:00 UTC000
Nov 20232023-11-01 00:00:00 UTC2023-12-01 00:00:00 UTC101
Dec 20232023-12-01 00:00:00 UTC2024-01-01 00:00:00 UTC110
Jan 20242024-01-01 00:00:00 UTC2024-02-01 00:00:00 UTC101
Feb 20242024-02-01 00:00:00 UTC2024-03-01 00:00:00 UTC101
Mar 20242024-03-01 00:00:00 UTC2024-04-01 00:00:00 UTC101
Apr 20242024-04-01 00:00:00 UTC2024-05-01 00:00:00 UTC413
May 20242024-05-01 00:00:00 UTC2024-06-01 00:00:00 UTC110
Jun 20242024-06-01 00:00:00 UTC2024-07-01 00:00:00 UTC000
Jul 20242024-07-01 00:00:00 UTC2024-08-01 00:00:00 UTC211

What Hacker News says

19 sources
> expected that the `--mpv-socket` option would allow me to send videos to the player instance tied to that socket Ahh that's interesting. I experimented with a setup almost like that before[0]. It increased the complexity quite a bit more than I expected when refactoring some of the features so I decided against it but I recommend checking out the python_mpv_jsonipc library. I still use it in with --auto-seek and -4dtv (interdimensional cable mode) BUT if you wanted a setup like this I think it wouldn't be too difficult to use something like `lb wt -l120 -pf` and then pipe to a program that will send the files to mpv one at a time. or maybe something like: mpv --playlist=<(lb wt vids.db -l120 -pf) > Wayland I recommend checking to see if your window manager can solve this for you [1] I use KDE/KWin so in Window Rules I set mpv to sk
Read the rest
ip taskbar and set Focus stealing prevention to Force extreme so that new mpv windows don't steal focus. But for mpv specifically, you might have luck with an mpv config like this: ontop=yes keepaspect geometry=100%:100% autofit=30%x24% I think the reason I don't set this in KWin directly is because I want to override the geometry depending on if mpv closed fullscreen [2] or if I'm using lb wt with multiple-playback [0]. https://github.com/chapmanjacobd/library/commit/ba5bf174f21a... [1]. https://mastodon.social/@tusooa@kazv.moe/110669435048449340 [2]. https://github.com/chapmanjacobd/computer/blob/main/.config/... Maybe there is something else in my mpv config that will help. Feel free to browse it: https://github.com/chapmanjacobd/computer/blob/main/.config/...
In CLI tools to build, browse, and blend your media library
xk3·May 28, 2024Submission

Show HN: Merge Folders from the CLI

Whenever moving folders with folders which have the same names I would always wince when seeing "directory not empty" or "destination already exists" and then immediately give up and use a GUI file manager. The existing solutions all have caveats: mv ./src/* ./dest/ oops no dotfiles ?! but also this will fail if any of the globbed subfolders have subfolder conflicts (and it will silently move globbed folders into subfolders of the same name--I can't imagine this is what most people assume it is doing) rsync --remove-sent-files rclone move rsync and rclone will copy the files to move them which can be very slow when renaming is all that is needed So I've created my own which uses BSD syntax: pip install xklb library merge-mv folder1 folder2/ # folder1 will go inside folder2 library merge-mv folder1/ folder2/
Read the rest
1 points · Open discussion
> manually visit specific people’s web sites to see what new stuff they posted RSS is nice but I've started to do this as well. Something like this works across all sites: > The main benefit of tabs is that you can have a large amount of tabs saved (say 500 monthly tabs) and only the smallest amount of tabs to satisfy that goal (500/30) tabs will open each day. 17 tabs per day seems manageable--500 all at once does not. https://github.com/chapmanjacobd/library?tab=readme-ov-file#...
In The follow lie, and why it's worse than ever
You might want to look into catt for Chromecast: - https://github.com/skorokithakis/catt/ But I'm not aware of what the equivalent would be for Amazon-type casting I wrote a wrapper around catt for playing music to my house speaker-groups. It also works with video but I don't cast video as often so that part might be buggy--in that case better to use catt directly - https://github.com/chapmanjacobd/library
In Show HN: Kyoo – Self-hosted media browser (Jellyfin/Plex alternative)
xk3·Mar 24, 2024Recommendation phrase
Sure, I write small python CLI utils that help me solve media organization, media consumption, and sometimes data analysis. I use this every day on Linux and Android but I haven't tested it on other platforms. There are a lot of different subcommands and, although the CLI package will always be opinionated to some extent, there is a lot of niche functionality which might not need to exist. So I'm open to things being refactored or new subcommands being added. [1] I have a lot of ideas for new ones, for example, I want a CLI that can take an artist name like "Theodor Kittelsen" and fetch highest quality public domain images--but I realize any implementation that does this well will be somewhat fragile so I haven't really attempted that yet. Other ideas that I have are often solved by piping output from one of my existing commands to anothe
Read the rest
r or adding some optional args to an existing command. 1. https://github.com/chapmanjacobd/library
In Ask HN: Anyone looking for contributors for their open source projects
I've created a few similar tools for link scraping: https://github.com/chapmanjacobd/library#usage - library links-extract: extract inner links from pages (stdin, local files, or remote sites) - library links-add: extract inner links across from multiple pages (paged lists of articles/forums) into a SQLITE database - library links-update: fetch new items for each link in a links-db (just added this yesterday) You can use the same filtering across all subcommands. For example you can filter based on text between links: pip install xklb library links https://en.wikipedia.org/wiki/List_of_bacon_dishes --path-include https://en.wikipedia.org/wiki/ --after-include famous You can use all of them with the same --cookies-from-browser interface that yt-dlp provides for pages that are locked behind a login. Alternatively, copy and paste:
Read the rest
library links --local-html <(xclip -selection clipboard -t text/html) --after-exclude paranormal spooky horror podcast
In CurlyQ: Command line helper for curl and web scraping
yt-dlp works with many but not all podcast websites. You could download everything with metadata and mtime and then sort by earliest to most recent in a file browser. I wrote a tool that might help with this if you don't want to download the files immediately but it definitely isn't required if you just download everything and use yt-dlp's download-archive. pip install xklb lb tubeadd podcasts.db 'http://www.hellointernet.fm/podcast?format=rss' lb listen podcast.db # it will keep track of what you played and prioritize playing things that haven't been played before And later do tubeupdate to check for new episodes: lb tubeupdate podcasts.db If the website extractor provides metadata about file creation (eg. YouTube extractor) then you could use this to play the oldest videos first: lb listen podcast.db -u time_modif
Read the rest
ied If you want to download later you could do this: lb dl podcast.db --audio # with the above example it saves to the folder "Generic" in the current working directory since it uses the yt-dlp generic extractor https://github.com/chapmanjacobd/library
In Ask HN: What niche task/tool websites have you built?

Showing the 15 most recent of 19 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.