about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--configs/configs_root_dir/etc/systemd/system/dyafk@.service14
-rwxr-xr-xsh/dyafk27
2 files changed, 41 insertions, 0 deletions
diff --git a/configs/configs_root_dir/etc/systemd/system/dyafk@.service b/configs/configs_root_dir/etc/systemd/system/dyafk@.service
new file mode 100644
index 0000000..e584070
--- /dev/null
+++ b/configs/configs_root_dir/etc/systemd/system/dyafk@.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=Douyu AFK for user %I
+After=network.target
+
+[Service]
+User=%i
+
+Type=simple
+ExecStart=/usr/bin/dyafk
+
+Restart=always
+
+[Install]
+WantedBy=multi-user.target
diff --git a/sh/dyafk b/sh/dyafk
new file mode 100755
index 0000000..caf1c66
--- /dev/null
+++ b/sh/dyafk
@@ -0,0 +1,27 @@
+#!/bin/sh
+# DouYu AFK
+
+# maybe another way: https://open.douyu.com/source
+
+pid=
+while :; do
+	# credit: MIT licensed https://github.com/DIYgod/RSSHub/blob/master/lib/routes/douyu/room.ts
+	if [ "$(curl -s https://www.douyu.com/betard/9640128 | jq '.room.show_status')" -eq 1 ]; then
+		if ! pidof -q firefox; then
+			firefox --headless --profile "$HOME/.mozilla/firefox/dyafk" https://www.douyu.com/9640128 &
+			# assign previous background process to pid variable
+			pid=$!
+		fi
+	else
+		if [ "$pid" ]; then
+			# seems need to only SIGTERM kill the parent firefox process, else firefox will prompt me firefox closed unexpectedly warning which cause firefox not actually open the url
+			# https://www.reddit.com/r/firefox/comments/fq1mhi/kill_firefox_gracefully_via_terminal_headless/
+			# firefox seems now can handle SIGTERM on linux? https://bugzilla.mozilla.org/show_bug.cgi?id=1837907
+			kill "$pid"
+			pid=
+		fi
+	fi
+	# open.douyu.com AUP for api request seems very high, about 6k/min per api? see https://open.douyu.com/source/api/5
+	# although I don't use open.douyu.com api but can be used as a reference, so I think 1 request per minute is ok
+	sleep 60
+done