add podlist, zdconvert; update README

This commit is contained in:
Iris Lightshard 2022-10-31 22:32:17 -06:00
parent 21666c992a
commit 4f05f8a6e4
Signed by: Iris Lightshard
GPG key ID: 3B7FBC22144E6398
3 changed files with 74 additions and 0 deletions

View file

@ -34,6 +34,10 @@ Background worker to sync an imap mailbox.
Generate a timesheet for a given month by manipulating the output from `zeit`
### zdconvert
Breakdown weekly data from `zeit` into by-day/by-project buckets for easy transferral to daptiv
### riosh
Shell script to loosley emulate `rio` behavior in a EWMH-compliant WM
@ -54,6 +58,10 @@ tint2 system load/memory, battery, and network info
displays either regular or arvelie clock in a tint2 executor, with an action to switch them as well
### podlist
Parse podcast `rss` feeds into `m3u` playlists to drag-n-drop into `audacious` or any other audio player; uses `xmllint` from [libxml2](https://github.com/GNOME/libxml2)
## License
This collection is released permissively under the MIT License. You can do whatever you want with it, as long as you leave my name on it.

16
podlist.sh Executable file
View file

@ -0,0 +1,16 @@
#!/bin/sh
# Derek Stevens <nilix@nilfm.cc>
# MIT license
# export PODLIST_DATA_DIR=/wherever/you/want in your shell startup
# and keep a .feeds file in it where each line looks like:
# podcast_name https://domain.com/path/to/rss/feed
while read l; do
set -- ${l}
tmpfile=$(mktemp)
wget -O ${tmpfile} $2
xmllint --xpath '/rss/channel/item/enclosure/@url' ${tmpfile} | sed -e 's/url=//g' -e 's/"//g' > ${PODLIST_DATA_DIR:-~}/${1}.m3u
rm ${tmpfile}
done < ${PODLIST_DATA_DIR:-~}/.feeds

50
zdconvert.sh Executable file
View file

@ -0,0 +1,50 @@
#!/bin/sh
# format zeit data for easy transferrence to daptiv
# Derek Stevens <nilix@nilfm.cc>
# MIT License
if [ "$1" = "--help" ]; then
echo "usage:"
echo " $0 WEEKS_AGO_START=1 WEEKS_AGO_END=1"
echo " Print report of tracked time for the given weeks to stdout"
exit 1
fi
weeks_start=${1:-1}
weeks_end=${2:-1}
while [ ${weeks_start} -ge ${weeks_end} ]; do
start=$(date -Is --date="0:00 Sat ${weeks_start} weeks ago")
end=$(date -Is --date="23:59 Fri $((weeks_start - 1)) weeks ago")
echo "week starting ${start}"
zeit list --since ${start} --until ${end} --total --no-colors --decimal | tail -n2
i=${weeks_start}
oldifs=${IFS}
for d in Sat Sun Mon Tue Wed Thu Fri; do
echo "${d}"
[ "${d}" = $(date +"%a") ] && [ ${weeks_start} -eq 1 ] && i=$((i-1))
dayStart=$(date -Is --date="00:00 ${d} ${i} weeks ago")
dayEnd=$(date -Is --date="23:59 ${d} ${i} weeks ago")
IFS="
"
for p in $(zeit list --since ${dayStart} --until ${dayEnd} --only-projects-and-tasks --no-colors | grep ◆ | awk '{for (i=2; i<NF; i++) printf $i " "; print $NF;}'); do
echo "\t${p}:"
ntasks=1
while read task; do
echo "\t\t${task} $(zeit list --since ${dayStart} --until ${dayEnd} --project ${p} --decimal | awk '{print $(NF-1) "\n";}' | head -n${ntasks} | tail -n1)"
ntasks=$((ntasks+1))
done << EOF
$(zeit list --since ${dayStart} --until ${dayEnd} --project ${p} --decimal | awk '{for (i=2; i<NF; i++) printf $i " "; print $NF;}' | awk -F' on' '{print $1 "\n"}')
EOF
echo "\t\t$(zeit list --since ${dayStart} --until ${dayEnd} --project ${p} --total --decimal | tail -n2 | cut -f2- -d ' ')"
done
IFS=${oldifs}
done
weeks_start=$((weeks_start-1))
done