]> git.armaanb.net Git - bin.git/blob - rss
xsel: new script
[bin.git] / rss
1 #!/usr/bin/env sh
2
3 dl() {
4         while read -r feed; do
5                 printf "Processing %s\n" "$feed"
6                 curl -s "$feed" | xmllint --format - 1> /tmp/sfeed 2> /dev/null
7                 
8                 title="$(grep -m 1 title /tmp/sfeed | \
9                         xmllint --xpath "string(//title)" - 2> /dev/null)"
10                 domain=$(echo "$feed" | cut -d/ -f 3)
11                 fname=$(echo "${title:-$domain}" | sed 's|/|!|g' | head -c 25)
12                 sfeed < /tmp/sfeed > "$cachedir/$fname"
13         done < "$1"
14 }
15
16 trap 'trap - SIGTERM && kill -- -$$' INT TERM EXIT
17
18 file=${1:-$HOME/org/feeds}
19 total=$(wc -l "$file" | cut -d " " -f 1)
20 cachedir=${XDG_CACHE_HOME:-$HOME/.cache/}/sfeed
21 threads=${2:-4}
22 pere=$(($((total + threads - 1)) / threads))
23
24 mkdir -p "$cachedir/split"
25 (cd "$cachedir/split" || exit; split -l "$pere" "$file")
26
27 for j in "$cachedir/split"/*; do
28         dl "$j" &
29 done
30
31 wait
32 rm -rf /tmp/sfeed "$cachedir/split"
33 sfeed_curses "$cachedir"/*