extract-memecount.sh - bitreich-memestats - Bitreich meme statistics and graphs. | |
git clone git://bitreich.org/bitreich-memestats git://hg6vgqziawt5s4dj.onion/bi… | |
Log | |
Files | |
Refs | |
Tags | |
LICENSE | |
--- | |
extract-memecount.sh (2470B) | |
--- | |
1 #!/bin/sh | |
2 # generate table of hashtag numbers over time | |
3 | |
4 if [ $# -lt 1 ]; | |
5 then | |
6 printf "usage: %s annnadir [memecount.log]\n" "$(basename "$0")"… | |
7 exit 1 | |
8 fi | |
9 | |
10 annnadir="${1}" | |
11 memefile="modules/hashtags/hashtags.txt" | |
12 emojidir="/br/gopher/emoji/" | |
13 filterdir="/br/gopher/memecache/filter/" | |
14 update_annna=yes | |
15 outputfile="${2:-memecount.log}" | |
16 revisionrange="" | |
17 datefmt="%Y-%m-%d" | |
18 | |
19 countolderfiles() { | |
20 find "$1" -maxdepth 1 -type f \! \( -newerct "$2" -o -name '*.or… | |
21 } | |
22 | |
23 if [ ! -e "${annnadir}/${memefile}" ]; then | |
24 printf 'error: could not open %s\n' "${annnadir}/${memefile}" | |
25 exit 1 | |
26 fi | |
27 | |
28 if [ -f "${outputfile}" ]; then | |
29 lastrevision="$(tail -n 1 "${outputfile}" | cut -f 2)" | |
30 revisionrange="${lastrevision}..HEAD" | |
31 if [ "$(date +"${datefmt}")" = "$(tail -n 1 "${outputfile}" | cu… | |
32 exit | |
33 fi | |
34 else | |
35 firstrevision="$(cd "${annnadir}" && git rev-list --max-parents=… | |
36 revisionrange="${firstrevision}..HEAD" | |
37 fi | |
38 | |
39 case "${outputfile}" in | |
40 /*) | |
41 ;; | |
42 *) | |
43 outputfile="$(pwd)/${outputfile}" | |
44 ;; | |
45 esac | |
46 | |
47 if [ "$update_annna" = "yes" ]; then | |
48 (cd "${annnadir}" && git pull >/dev/null 2>&1) | |
49 fi | |
50 | |
51 headcommit="$(git rev-parse HEAD)" | |
52 i=0 | |
53 # derived from Hiltjo Posthuma's loc.sh | |
54 (cd "${annnadir}" && git log --pretty='format:%H %cd %at' --date="format… | |
55 "${revisionrange}") | \ | |
56 sort -k 2 | uniq -f 1 | \ | |
57 while read -r commit date timestamp; do | |
58 | |
59 # hashtags originally stored in annna-start-services... | |
60 n="$(cd "${annnadir}" && git show "$commit:annna-start-services"… | |
61 grep -E '^ #[a-z0-9]' | wc -l | awk '{print $1}')" | |
62 | |
63 # ...but are now stored in $memefile | |
64 if [ "$n" -le 1 ]; then | |
65 n="$(cd "${annnadir}" && git show "$commit:$memefile" 2>… | |
66 wc -l | awk '{print $1}')" | |
67 fi | |
68 | |
69 if [ "$n" -gt 1 ]; then | |
70 | |
71 # only one row per day unless the most recent commit is … | |
72 if [ "$date" != "$lastprintdate" ] || [ "$commit" = "$he… | |
73 | |
74 if [ "$i" -eq 1 ]; then | |
75 if [ "$commit" != "$headcommit" ]; then | |
76 dn_dt="$(awk \ | |
77 -v n0="$n0" -v t0="$t0" … | |
78 'BEGIN{print (n-n0)/(t-t… | |
79 fi | |
80 else | |
81 dn_dt=0 | |
82 i=1 | |
83 fi | |
84 n0="$n" | |
85 t0="$timestamp" | |
86 lastprintdate="$date" | |
87 n_emoji="$(countolderfiles "$emojidir" "$date")" | |
88 n_filter="$(countolderfiles "$filterdir" "$date"… | |
89 | |
90 printf '%s\t%s\t%s\t%s\t%s\t%s\t%s\n' \ | |
91 "$date" "$commit" "$n" "$timestamp" "$dn… | |
92 "$n_emoji" "$n_filter" \ | |
93 >> "${outputfile}" | |
94 | |
95 fi | |
96 fi | |
97 done | |
98 |