Skip to main content

xk media library

Project description

lb: opinionated media library

Requires ffmpeg, mpv

!!! You should be warned that the default action after watching a video is to trash it. Restore via your trash can. Use --keep to ask y/n.

Install

pip install xklb

Step 1. Extract Metadata

lb-extract tv.db ./video/folder/

lb-extract --audio podcasts.db ./your/music/or/podcasts/folder/

Step 2. Watch / Listen

wt tv.db

lt podcasts.db

Repeat!

Implementing repeat / auto-play is left to the end user. I recommend something like this if you use fish shell:

function repeat
    while $argv
        and :
    end
end

repeat lt audio.db

or

function repeatn --description 'repeatn <count> <command>'
    for i in (seq 1 $argv[1])
        eval $argv[2..-1]
    end
end

repeat 5 lt audio.db

Watch longest videos

wt tv.db --sort 'duration desc'

Watch specific video series in order

wt tv.db --search 'title of series' --play-in-order

There are multiple strictness levels of --play-in-order. If things aren't playing in order try adding more Os:

wt tv.db --search 'title of series' -O    # default
wt tv.db --search 'title of series' -OO   # slower, more complex algorithm
wt tv.db --search 'title of series' -OOO  # most strict

I usually use the following:

lt -cast -s '  ost'      # for listening to OSTs on my chromecast groups
wt -u priority -w sub=0  # for exercising and watching YouTube
wt -u duration --print -s 'video title'  # when I want to check if I've downloaded something before

Watch Options

wt -h

usage: watch.py [-h] [-1] [-cast-to CHROMECAST_DEVICE] [-cast] [-f] [-d DURATION]
                [-dM MAX_DURATION] [-dm MIN_DURATION] [-keep] [-list] [-filename]
                [-printquery] [-mv MOVE] [-O] [-r] [-s SEARCH] [-E EXCLUDE] [-S SKIP]
                [-t TIME_LIMIT] [-v] [-vlc] [-z SIZE] [-zM MAX_SIZE] [-zm MIN_SIZE]
                db

positional arguments:
db

options:
-h, --help            show this help message and exit
-1, --last
-cast-to CHROMECAST_DEVICE, --chromecast-device CHROMECAST_DEVICE
-cast, --chromecast
-f, --force-transcode
-d DURATION, --duration DURATION
-dM MAX_DURATION, --max-duration MAX_DURATION
-dm MIN_DURATION, --min-duration MIN_DURATION
-keep, --keep
-list, --list
-filename, --filename
-printquery, --printquery
-mv MOVE, --move MOVE
-O, --play-in-order
-r, --random
-s SEARCH, --search SEARCH
-E EXCLUDE, --exclude EXCLUDE
-S SKIP, --skip SKIP
-t TIME_LIMIT, --time-limit TIME_LIMIT
-v, --verbose
-vlc, --vlc
-z SIZE, --size SIZE
-zM MAX_SIZE, --max-size MAX_SIZE
-zm MIN_SIZE, --min-size MIN_SIZE

Listen Options

lt -h

usage: listen.py [-h] [-cast] [-cast-to CHROMECAST_DEVICE] [-s SEARCH] [-E EXCLUDE]
                [-S SKIP] [-d DURATION] [-dm MIN_DURATION] [-dM MAX_DURATION]
                [-sz SIZE] [-szm MIN_SIZE] [-szM MAX_SIZE] [-mv MOVE] [-wl] [-O]
                [-r] [-v]
                db

positional arguments:
db

options:
-h, --help            show this help message and exit
-cast, --chromecast
-cast-to CHROMECAST_DEVICE, --chromecast-device CHROMECAST_DEVICE
-s SEARCH, --search SEARCH
-E EXCLUDE, --exclude EXCLUDE
-S SKIP, --skip SKIP
-d DURATION, --duration DURATION
-dm MIN_DURATION, --min-duration MIN_DURATION
-dM MAX_DURATION, --max-duration MAX_DURATION
-sz SIZE, --size SIZE
-szm MIN_SIZE, --min-size MIN_SIZE
-szM MAX_SIZE, --max-size MAX_SIZE
-mv MOVE, --move MOVE
-wl, --with-local
-O, --play-in-order
-r, --random
-v, --verbose

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xklb-1.12.2.tar.gz (16.8 kB view hashes)

Uploaded Source

Built Distribution

xklb-1.12.2-py3-none-any.whl (17.7 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page