diff options
-rw-r--r-- | LICENSE | 15 | ||||
-rw-r--r-- | Makefile | 7 | ||||
-rwxr-xr-x | later | 49 | ||||
-rw-r--r-- | later.1 | 21 |
4 files changed, 92 insertions, 0 deletions
@@ -0,0 +1,15 @@ +ISC License + +Copyright (c) 2024 Wolfgang Müller + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..d9e9eba --- /dev/null +++ b/Makefile @@ -0,0 +1,7 @@ +PREFIX ?= /usr/local + +install: later later.1 + install -D -m 755 -t '${DESTDIR}${PREFIX}/bin' later + install -D -m 644 -t '${DESTDIR}${PREFIX}/share/man/man1' later.1 + +.PHONY: install @@ -0,0 +1,49 @@ +#!/usr/bin/env python3 + +import datetime +import os +import argparse + +from datetime import datetime as dt + +xdg_config_home = os.path.expanduser("~/.local/state") +if "XDG_STATE_HOME" in os.environ: + xdg_config_home = os.environ["XDG_STATE_HOME"] + +watch_later_dir = os.path.join(xdg_config_home, "mpv/watch_later") + + +def entries(): + def get_mtime(entry): + return entry.stat().st_mtime + + with os.scandir(watch_later_dir) as entries: + for entry in sorted(entries, key=get_mtime): + if entry.is_file(): + mtime = dt.fromtimestamp(get_mtime(entry)) + yield entry.path, entry.name, mtime + + +parser = argparse.ArgumentParser( + prog="later", description="List mpv's watch_later entries" +) +args = parser.parse_args() + +for path, basename, mtime in entries(): + with open(path, "r") as handle: + first = handle.readline().rstrip() + + name = basename + if first.startswith("# "): + name = first.strip("# ") + + if name == "redirect entry": + continue + + def format_time(time): + now = dt.now() + if time < now - datetime.timedelta(days=7): + return time.strftime("%b %d %Y") + return time.strftime("%b %d %H:%M") + + print(f"{format_time(mtime)}\t{name}") @@ -0,0 +1,21 @@ +.Dd September 10, 2024 +.Dt LATER 1 +.Os +.Sh NAME +.Nm later +.Nd list mpv's watch_later entries +.Sh SYNOPSIS +.Nm +.Op Fl h +.Op Fl \-help +.Sh DESCRIPTION +.Nm +lists all watch_later entries as saved by +.Xr mpv 1 . +.Sh SEE ALSO +.Xr mpv 1 +.Sh AUTHORS +.An -nosplit +.Nm +was written by +.An Wolfgang Müller Aq Mt wolf@oriole.systems |