Update bangs and split-album

This commit is contained in:
Gabriel Arazas 2021-07-22 19:24:53 +08:00
parent 085c17c26d
commit c13705fffb
4 changed files with 21 additions and 6 deletions

View File

@ -1,5 +1,6 @@
{ {
"alacritty": "$HOME/.config/alacritty/", "alacritty": "$HOME/.config/alacritty/",
"bangs": "$HOME/.config/bangs/",
"bin": "$HOME/.local/bin/", "bin": "$HOME/.local/bin/",
"bspwm": "$HOME/.config/bspwm/", "bspwm": "$HOME/.config/bspwm/",
"dunst": "$HOME/.config/dunst/", "dunst": "$HOME/.config/dunst/",

View File

@ -66,6 +66,9 @@ const bangs_placeholder = "${BANGS_PLACEHOLDER:-{{{s}}}}"
const bangs_format = / %start $bangs_prefix !space+ %end / const bangs_format = / %start $bangs_prefix !space+ %end /
const valid_bangs = %() const valid_bangs = %()
const search_query = %() const search_query = %()
# Config file detection.
# Otherwise, we'll just use the default config.
if test -f $config_file { if test -f $config_file {
json read :bangs < $config_file json read :bangs < $config_file
} else { } else {
@ -75,7 +78,7 @@ if test -f $config_file {
# Stolen from https://gist.github.com/cdown/1163649 and https://gist.github.com/cdown/1163649#gistcomment-1256298 # Stolen from https://gist.github.com/cdown/1163649 and https://gist.github.com/cdown/1163649#gistcomment-1256298
proc urlencode(msg) { proc urlencode(msg) {
for (i in 0:len(msg)) { for (i in 0:len(msg)) {
var char = msg[i - 1] var char = msg[i]
case $char { case $char {
[a-zA-Z0-9.~_-]) [a-zA-Z0-9.~_-])
@ -112,12 +115,15 @@ for i in @ARGV {
} }
} }
var query = $(printf "%s " @search_query) var query = join(search_query, " ")
var encoded_query = $(urlencode $query)
warnf "Search query is '%s'" $query warnf "Search query is '%s'" $query
warnf "Encoded form is '%s'" $encoded_query
for bang in @valid_bangs { for bang in @valid_bangs {
var metadata = bangs[bang] var metadata = bangs[bang]
var url = $(write -- ${metadata['url']} | sed --expression "s/${bangs_placeholder}/$(urlencode $query)/") var url = $(write -- ${metadata['url']} | sed --expression "s/${bangs_placeholder}/${encoded_query}/")
handlr open $url handlr open $url
} }

View File

@ -5,12 +5,16 @@
# It could also accept an OPML through stdin. # It could also accept an OPML through stdin.
import itertools import itertools
import fileinput
from pathlib import Path from pathlib import Path
import sys import sys
import xml.etree.ElementTree as ET import xml.etree.ElementTree as ET
filename = sys.argv[1] if len(sys.argv) > 1:
opml = ET.parse(filename) opml = ET.parse(sys.argv[1])
else:
opml = ET.fromstring(fileinput.input())
for outline in opml.findall("body/outline"): for outline in opml.findall("body/outline"):
categories = [category.strip("/") for category in outline.get("category", "").split(",") if category] categories = [category.strip("/") for category in outline.get("category", "").split(",") if category]
print('{xmlUrl} "~{text}" {category}'.format(xmlUrl = outline.get("xmlUrl"), print('{xmlUrl} "~{text}" {category}'.format(xmlUrl = outline.get("xmlUrl"),

View File

@ -4,6 +4,8 @@
shopt --set strict:all shopt --set strict:all
const show_help = "A small script for splitting files into tracks, perfect for full album releases and audiobooks. const show_help = "A small script for splitting files into tracks, perfect for full album releases and audiobooks.
Based from Luke Smith's booksplit script
(https://raw.githubusercontent.com/LukeSmithxyz/voidrice/091d7e54c5c1ed77201ce1254aa2623a2801c9f2/.local/bin/booksplit).
split-album [options...] [\$ALBUM_FILE \$TIMESTAMP_FILE] split-album [options...] [\$ALBUM_FILE \$TIMESTAMP_FILE]
@ -183,6 +185,7 @@ setvar output_data['extension'] = $EXTENSION
const timestamp_regex = / %start digit{2,} ':' digit{2} ':' digit{2} <'.' digit+>? %end / const timestamp_regex = / %start digit{2,} ':' digit{2} ':' digit{2} <'.' digit+>? %end /
var has_error = false var has_error = false
# Deserialize the given input into the chapters data.
case $(file --mime-type --brief $timestamp_file) { case $(file --mime-type --brief $timestamp_file) {
"application/json") "application/json")
json read :chapters < $timestamp_file json read :chapters < $timestamp_file
@ -190,7 +193,7 @@ case $(file --mime-type --brief $timestamp_file) {
;; ;;
# Also cleans up the timestamp file with comments (i.e., lines starting with '#') and empty lines allowing for more commenting options. # Also cleans up the timestamp file with comments (i.e., lines starting with '#') and empty lines allowing for more commenting options.
# I just want to improve the timestamp format (a little bit). # I just want to improve the timestamp format a little bit.
"text/plain") "text/plain")
sed --regexp-extended --expression '/^\s*$/d' --expression '/^#/d' $timestamp_file | while read --line { sed --regexp-extended --expression '/^\s*$/d' --expression '/^#/d' $timestamp_file | while read --line {
var chapter = {} var chapter = {}
@ -227,6 +230,7 @@ for index in @(seq $[chapter_len]) {
var filename = $(printf "%.2d-%s.%s" $index $(kebab-case ${chapter['title']}) $EXTENSION) var filename = $(printf "%.2d-%s.%s" $index $(kebab-case ${chapter['title']}) $EXTENSION)
setvar output_data['chapters'][index - 1]['file'] = filename setvar output_data['chapters'][index - 1]['file'] = filename
# Check for incorrect timestamp order.
if (start > end and end is not null) { if (start > end and end is not null) {
warnf '%s (start) is ahead compared to %s (end)' $start $end warnf '%s (start) is ahead compared to %s (end)' $start $end
setvar has_error = true setvar has_error = true