mirror of
https://github.com/foo-dogsquared/dotfiles.git
synced 2025-01-30 22:57:54 +00:00
Revise personal scripts again
This commit is contained in:
parent
f3c4e2082d
commit
4d898c9116
@ -17,11 +17,11 @@ shopt -s strict:all
|
||||
var FILENAME = $1
|
||||
|
||||
# Testing if the given file is a zip file.
|
||||
file $FILENAME | rg "Zip archive data" --quiet || exit 1
|
||||
file --mime $FILENAME | rg "application/zip" --quiet || exit 1
|
||||
var channel_id_eggex = / 'https://www.youtube.com/channel/' (word) /
|
||||
|
||||
var NEWPIPE_DB = "newpipe.db"
|
||||
var TEMP_FOLDER_NAME = "newpipe"
|
||||
var channel_id_eggex = / 'https://www.youtube.com/channel/' (word) /
|
||||
var NEWPIPE_DB_QUERY = "SELECT name, url, service_id, group_concat(tag, ',') AS tags FROM (SELECT subscriptions.name, subscriptions.url, subscriptions.service_id, '/' || feed_group.name AS tag
|
||||
FROM subscriptions
|
||||
LEFT JOIN feed_group_subscription_join AS subs_join
|
||||
@ -43,7 +43,7 @@ OPML
|
||||
# Simply prints an `<outline>` element formatted approriately for the resulting output.
|
||||
# Don't mind how it is printed right now. :)
|
||||
proc print-outline(title, xml_url, html_url, tags = "") {
|
||||
printf ' <outline type="rss" xmlUrl="%s" htmlUrl="%s" title="%s"' $xml_url $html_url $title
|
||||
printf ' <outline type="rss" xmlUrl="%s" htmlUrl="%s" title="%s" text="%s"' $xml_url $html_url $title $title
|
||||
|
||||
if test -n $tags {
|
||||
printf ' category="%s"' $tags
|
||||
@ -56,6 +56,7 @@ proc print-outline(title, xml_url, html_url, tags = "") {
|
||||
# This only occurs if the given file does have a Newpipe database.
|
||||
if unzip -l $FILENAME | rg --quiet $NEWPIPE_DB {
|
||||
mkdir $TEMP_FOLDER_NAME && unzip -q -u $FILENAME -d $TEMP_FOLDER_NAME
|
||||
file --mime "${TEMP_FOLDER_NAME}/${NEWPIPE_DB}" | rg --quiet "application/x-sqlite3" || exit 1
|
||||
trap "rm --recursive $TEMP_FOLDER_NAME" EXIT
|
||||
sqlite3 "${TEMP_FOLDER_NAME}/${NEWPIPE_DB}" "${NEWPIPE_DB_QUERY}" --csv --header \
|
||||
| dasel select --parser csv --multiple --selector '.[*]' --compact --write json \
|
||||
|
@ -12,7 +12,7 @@ shopt --set strict:all
|
||||
|
||||
const show_help = "A small script for splitting files into tracks, perfect for full album releases and audiobooks.
|
||||
|
||||
split-album [options...] -tf \$TIMESTAMP_FILE -af \$ALBUM_FILE
|
||||
split-album [options...] [\$ALBUM_FILE \$TIMESTAMP_FILE]
|
||||
|
||||
Options:
|
||||
-h, --help Show the help section.
|
||||
@ -35,12 +35,11 @@ When any of the required metadata is missing (i.e., title, date, author), it wil
|
||||
const show_descriptive_help = "This script splits an album with a timestamp file.
|
||||
You're always going to see using this script like the following:
|
||||
|
||||
split-album -af \$AUDIO_FILE -tf \$TIMESTAMP_FILE
|
||||
split-album \$AUDIO_FILE \$TIMESTAMP_FILE
|
||||
|
||||
The timestamp file contains a starting timestamp (in HH:MM:SS[.MS]) and the title of the chapter/track.
|
||||
For more information, see https://trac.ffmpeg.org/wiki/Seeking.
|
||||
Lines starting with '#' and empty lines will be ignored.
|
||||
It's for the best and you don't want some future migraines. :)
|
||||
|
||||
The following is an example of the content of a timestamp file.
|
||||
|
||||
@ -112,24 +111,24 @@ while test $len(ARGV) -gt 0 {
|
||||
write -- $show_descriptive_help
|
||||
exit
|
||||
;;
|
||||
-af|--audio-file)
|
||||
set audio_file = $2
|
||||
--audio-file)
|
||||
set audio_file = ARGV[2]
|
||||
shift 2
|
||||
;;
|
||||
-tf|--timestamp-file)
|
||||
set timestamp_file = $2
|
||||
--timestamp-file)
|
||||
set timestamp_file = ARGV[2]
|
||||
shift 2
|
||||
;;
|
||||
-a|--author)
|
||||
set author = $2
|
||||
set author = ARGV[2]
|
||||
shift 2
|
||||
;;
|
||||
-d|--date)
|
||||
set pub_date = $2
|
||||
set pub_date = ARGV[2]
|
||||
shift 2
|
||||
;;
|
||||
-t|--title)
|
||||
set album = $2
|
||||
set album = ARGV[2]
|
||||
shift 2
|
||||
;;
|
||||
--strict)
|
||||
@ -141,7 +140,9 @@ while test $len(ARGV) -gt 0 {
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
shift
|
||||
set audio_file = ARGV[1]
|
||||
set timestamp_file = ARGV[2]
|
||||
shift 2
|
||||
;;
|
||||
}
|
||||
}
|
||||
@ -150,9 +151,9 @@ proc warnf(msg, @args) {
|
||||
>&2 printf "${msg}\\n" @args
|
||||
}
|
||||
|
||||
proc errorf(msg, @args) {
|
||||
proc errorf(msg, @args, exit_code = 1) {
|
||||
>&2 printf "${msg}\\n" @args
|
||||
exit 1
|
||||
exit ${exit_code}
|
||||
}
|
||||
|
||||
proc prompt(msg, :out, prefix = ">> ") {
|
||||
@ -192,7 +193,7 @@ case $(file --mime-type --brief $timestamp_file) {
|
||||
# Also cleans up the timestamp file with comments and empty lines.
|
||||
# I just want to improve the timestamp format (a little bit).
|
||||
"text/plain")
|
||||
cat $timestamp_file | sed --regexp-extended --expression '/^\s*$/d' --expression '/^#/d' | while read --line {
|
||||
sed --file $timestamp_file --regexp-extended --expression '/^\s*$/d' --expression '/^#/d' | while read --line {
|
||||
var chapter = {}
|
||||
set chapter['title'] = $(write -- $_line | cut -d' ' -f2-)
|
||||
set chapter['timestamp'] = $(write -- $_line | cut -d' ' -f1)
|
||||
|
Loading…
Reference in New Issue
Block a user