summaryrefslogtreecommitdiffhomepage
path: root/www/scripts/update-feeds.sh
diff options
context:
space:
mode:
Diffstat (limited to 'www/scripts/update-feeds.sh')
-rwxr-xr-xwww/scripts/update-feeds.sh28
1 files changed, 28 insertions, 0 deletions
diff --git a/www/scripts/update-feeds.sh b/www/scripts/update-feeds.sh
new file mode 100755
index 0000000..8dff837
--- /dev/null
+++ b/www/scripts/update-feeds.sh
@@ -0,0 +1,28 @@
1#! /bin/bash
2
3cd /srv/rss
4mkdir -p feeds
5
6LIST=${LIST:?}
7curlOpts='--insecure'
8
9cat "${LIST}" | while read url interval tags; do
10 feed=feeds/${url//\//%2F}
11 unset next_fetch; declare -i next_fetch=0
12
13 # Get time of next fetch
14 if [ -f $feed ]; then
15 interval=$(<<<"$interval" sed 's/m/minute/; s/h/hour/; s/d/day/;')
16 next_fetch=$(date -d "$(date -r $feed) + $interval" +'%s')
17 fi
18
19 # Do not fetch feed if interval covers current time
20 [ $(date +'%s') -lt $next_fetch ] && continue
21
22 # Set limit of HTTP connections
23 while [ $(jobs -p | wc -l) -ge 10 ]; do
24 sleep 0.5;
25 done
26
27 curl -s $curlOpts $url -o $feed || echo Fail to fetch $url >&2 &
28done