diff --git a/run.sh b/run.sh index 1701711..ba8cb2d 100755 --- a/run.sh +++ b/run.sh @@ -5,49 +5,61 @@ set -euo pipefail MURL="https://miniflux.i.balki.me" FID=61 +TOKEN="${MINIFLUX_TOKEN?token missing}" + process() { local eid="$1" local title="$2" echo "Downloding content. entry: $eid title: $title" + + # https://miniflux.app/docs/api.html#endpoint-fetch-content curl --fail -o /dev/null -s "$MURL/v1/entries/$eid/fetch-content" \ --url-query update_content=true \ - -H "X-Auth-Token: $MINIFLUX_TOKEN" + -H "X-Auth-Token: $TOKEN" echo "Updating title. entry: $eid title: $title" + + # https://miniflux.app/docs/api.html#endpoint-update-entry curl --fail -o /dev/null -s -X PUT "$MURL/v1/entries/$eid" \ --json "$(jo title="${title/$/✓}")" \ - -H "X-Auth-Token: $MINIFLUX_TOKEN" + -H "X-Auth-Token: $TOKEN" echo "Marking as unread. entry: $eid title: $title" + + # https://miniflux.app/docs/api.html#endpoint-update-entries curl --fail -s -X PUT "$MURL/v1/entries" \ --json "$(jo "entry_ids[]=$eid" status=unread)" \ - -H "X-Auth-Token: $MINIFLUX_TOKEN" + -H "X-Auth-Token: $TOKEN" +} + +filter_entries() { + # silence 'Expressions don't expand in single quotes' + # shellcheck disable=SC2016 + mlr --l2n \ + filter '$title =~ "\[\$\]"' \ + + filter -s w1="$1" -s w2="$2" '$published_at > @w2 && $published_at < @w1' \ + + cut -of id,title } main() { local w1 w2 - if [ "$(date +%A)" = Thursday ]; then - w1=$(date --iso-8601=s -d 'last thursday') - else - w1=$(date --iso-8601=s -d 'last thursday -1 week') - fi - - w2=$(date --iso-8601=s -d '3 weeks ago') + # Script will fail at the first entry that is not available yet + w1=$(date --iso-8601=s -d '2 weeks ago') + w2=$(date --iso-8601=s -d '5 weeks ago') echo "Considering articles between w2: $w2 and w1: $w1 " + # https://miniflux.app/docs/api.html#endpoint-get-feed-entries + curl -s --fail "$MURL/v1/feeds/$FID/entries" \ - --url-query limit=50 \ + --url-query limit=150 \ --url-query order=id \ - --url-query direction=desc \ - -H "X-Auth-Token: $MINIFLUX_TOKEN" | + --url-query direction=asc \ + -H "X-Auth-Token: $TOKEN" | yq '.entries[]' | - mlr --l2n \ - filter '$title =~ "\[\$\]"' \ - 'then' filter -s w1="$w1" -s w2="$w2" '$published_at > @w2 && $published_at < @w1' \ - 'then' cut -of id,title | + filter_entries "$w1" "$w2" | while read -r eid title; do echo "processing entry: $eid title: $title" process "$eid" "$title"