2022-08-03 17:22:30 -04:00
|
|
|
#!/usr/bin/bash
|
|
|
|
|
|
|
|
#Dependencies:
|
|
|
|
# yq
|
|
|
|
# curl
|
|
|
|
|
2022-08-04 17:52:12 -04:00
|
|
|
mkdir -p ./{cache,state,Podcasts}
|
|
|
|
# rm -rf ./cache/*
|
2022-08-03 17:22:30 -04:00
|
|
|
|
2022-08-04 17:52:12 -04:00
|
|
|
YQ=~/bin/yq
|
|
|
|
|
|
|
|
yqf() {
|
|
|
|
$YQ "$1" config.yaml
|
2022-08-03 17:22:30 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
export ALL_PROXY="socks5h://127.0.0.1:9050"
|
|
|
|
|
2022-08-04 17:52:12 -04:00
|
|
|
download() {
|
|
|
|
local e name url limit mp3url
|
|
|
|
e=$1
|
|
|
|
name=$(yqf "${e}.name")
|
|
|
|
url=$(yqf "${e}.url")
|
|
|
|
# limit=$(yqf "${e}.limit")
|
|
|
|
limit=2
|
|
|
|
filter=$(yqf "${e}.filter // true")
|
|
|
|
|
|
|
|
local rss_path="cache/${name}.rss"
|
|
|
|
local downloads_path="state/${name}.downloads"
|
|
|
|
|
|
|
|
false && curl -L -o "$rss_path" "$url"
|
|
|
|
#limit=$limit $YQ -p xml '.rss.channel.item[] | keys | .[] | select(. < env(limit)) | .[]' "$rss_path"
|
|
|
|
items=".rss.channel.item"
|
2022-08-03 17:22:30 -04:00
|
|
|
|
2022-08-04 17:52:12 -04:00
|
|
|
ids=$($YQ -p xml "$items | .[] | select($filter) | path | .[-1]" "$rss_path" |
|
|
|
|
head -n "$limit")
|
|
|
|
|
|
|
|
for id in $ids
|
|
|
|
do
|
|
|
|
echo "id is $id"
|
|
|
|
#$YQ -p xml "$items.$id | (.title |= .[0]) | .title" "$rss_path"
|
|
|
|
mp3url=$($YQ -p xml "$items.$id | .enclosure.+url" "$rss_path")
|
|
|
|
grep -q --fixed-strings "$mp3url" "$downloads_path" && continue
|
|
|
|
echo "Downloading: $mp3url"
|
|
|
|
echo "$mp3url" >> "$downloads_path"
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
entries=".entries"
|
|
|
|
for id in $(yqf "$entries | .[] | path | .[-1]")
|
2022-08-03 17:22:30 -04:00
|
|
|
do
|
2022-08-04 17:52:12 -04:00
|
|
|
echo "============================ start ============================"
|
|
|
|
download "${entries}.$id"
|
|
|
|
# exit
|
|
|
|
echo "============================ done ============================"
|
2022-08-03 17:22:30 -04:00
|
|
|
done
|