•••

Сегодня, наконец, решил, что процесс «лайканья» надо бы упростить.

Чтобы на моём сайте появилась страничка со ссылкой с атрибутом like-of (при отсылке вебменшена с такой страницы это как раз и интерпретируется как «лайк», а Bridgy корректно пробрасывает такие «лайки» в Твиттер и прочий Мастодон), нужно, в общем-то, немного:

  1. придумать имя для файла — оно потом станет последней частью URL страницы, где будет храниться «лайк»;

  2. создать этот файл в нужной директории (обычно в /reactions/{год}/);

  3. записать в этот файл Front Matter из, как минимум, строчки с датой в правильном формате и строчки со ссылкой;

  4. git add * && git commit -m "like" && git push

Это всё совершенно несложно, но несколько утомительно. С одной стороны, мне нравится, что «лайканье» требует усилий больше, чем «просто ткнуть в кнопку» — это всякий раз даёт возможность лишний раз подумать, стоит ли вот это вообще «лайкнуть», или ну его. С другой стороны, усилий оказывается всё-таки многовато… В общем, сегодня у меня наступил как раз тот момент, когда пора уже автоматизировать — в полном соответствии с индивебным принципом «делай руками, пока руки не отваливаются». Делать нечего, сел писать скрипт.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/bin/bash
set -e

case $1 in 
	ru )	lang=("ru")
		shift
		;;
	en )	lang=("en")
		shift
		;;
	* )	lang=("ru" "en")
esac

if [ "$1" == "" ]; then
	echo "no URL to like"
	exit 1
fi
if [ "$2" != "" ]; then
	echo "too many arguments"
	exit 1
fi

now=$(date -Is | tr -d "\n")
year=$(date +%Y)
dir="content/reactions/"$year"/"
if [ ! -d $dir ]; then
	echo "$dir is not a directory"
	exit 1
fi

git pull

while true; do
	filename="like-"$(date -u +%j%H%M%S)"."
	filenames=()
	for language in "${lang[@]}"; do
		fn=$filename$language".md"
		if [ -f "$dir$fn" ]; then
			sleep 1
			continue 2
		fi
		filenames+=("$fn")
	done
	break
done

for fn in "${filenames[@]}"; do
	echo "$dir$fn"":"
	echo "+++" >> "$dir$fn"
	echo "date = $now" >> "$dir$fn"
	echo "like_of = \""$1"\"" >> "$dir$fn"
	echo "+++" >> "$dir$fn"
	cat "$dir$fn"
	echo ""
done

read -p "(G)o/(a)bort/(d)elete?" choice
case "$choice" in
	d|D )	for fn in "${filenames[@]}"; do
	       		rm "$dir$fn"
		done
		exit
		;;
	a|A )	exit
		;;
	* )	echo "proceeding..."
esac

for fn in "${filenames[@]}"; do
	git add "$dir$fn"
done
git commit -m "like"
git push

Времени ушло изрядно — я ведь всё-таки дилетант, да и скрипты на bash пишу не каждый день. Но в итоге, кажется, всё получилось и должно работать хорошо: теперь достаточно открыть в консоли директорию с сайтом и написать что-то вроде ./like https://cool.site/great/page (а потом нажать Enter, если всё в порядке). Можно даже вставить перед адресом страницы en или ru, чтобы этот «лайк» был только в одной из языковых версий сайта.

Правда, чтобы окончательно всё протестировать, нужно что-нибудь «лайкнуть» на пробу. Полез в Сеть — а лайкнуть-то и нечего…

Ну и для мобильника надо будет что-то придумать.