diff --git a/README.md b/README.md index 0102eb7..1bb155f 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ # **Kasane Teto in Your Terminal!** ## **Find songs nobody knows exist!** -A small wrapper and custom list for fortune/misfortune that picks a random Teto song of the day from any of almost 28,000 original, finished songs with videos on VocaDB. +A small wrapper and custom list for fortune/misfortune that picks a random Teto song of the day from any of almost 28,000 original, finished songs with videos on VocaDB. Your original fortune command will remain untouched, tetosong just tells it to use a custom directory. -Now with optional Teto speaking in your terminal via ffplay! Just SV2, for now ;) +https://github.com/user-attachments/assets/bc2a9909-d24a-43fa-882a-5e785cda3020 - - +## **Now With Optional Automatic Updates!** +Disabled by default, opt-in during setup to enable a systemd user service and timer to update the script and song list every Sunday at 5AM UTC. I check for new songs and push new tetofortunes from my server every Sunday at 3AM UTC ## **Dependencies** @@ -14,7 +14,6 @@ fortune/fortune-mod or misfortune ffmpeg -optional for speaking Teto - ### makefortune.sh fortune/fortune-mod (for strfile) @@ -33,9 +32,7 @@ You can get your Teto song of the day by running: ```bash tetosong ``` -You can update the script and fortunes from github using: +You can manually update the script and fortunes from github using: ```bash tetosong -u ``` - -Your original fortune command will remain untouched, tetosong just tells it to use a custom directory. diff --git a/autoupdater/tetosong.service b/autoupdater/tetosong.service new file mode 100644 index 0000000..a7cde3c --- /dev/null +++ b/autoupdater/tetosong.service @@ -0,0 +1,7 @@ +[Unit] +Description=tetosong updater +Wants=tetosong.timer + +[Service] +Type=oneshot +ExecStart=/usr/bin/bash -c "curl -s file:///home/eric/GitHub/TetoSongOfTheDay/autoupdater/updater.sh | bash" diff --git a/autoupdater/tetosong.timer b/autoupdater/tetosong.timer new file mode 100644 index 0000000..3a70ff6 --- /dev/null +++ b/autoupdater/tetosong.timer @@ -0,0 +1,10 @@ +[Unit] +Description=Run tetosong service once a week + +[Timer] +OnCalendar=Sun *-*-* 05:00:00 +Persistent=true +Unit=tetosong.service + +[Install] +WantedBy=timers.target diff --git a/autoupdater/updater.sh b/autoupdater/updater.sh new file mode 100644 index 0000000..9266515 --- /dev/null +++ b/autoupdater/updater.sh @@ -0,0 +1,34 @@ +#!/usr/bin/bash +# download custom fortunes and config file +echo "Updating tetosong..." +# check if the config file exists, if not download it and prompt the user for options. +if [ ! -f ~/.local/share/tetosong/tetosong.config ]; then + echo "Config file not found, downloading default..." + curl -sLo ~/.local/share/tetosong/tetosong.config https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/tetosong.config +fi +mkdir -p ~/.local/share/tetosong +curl -sLo ~/.local/share/tetosong/tetofortunes https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/tetofortunes +curl -sLo ~/.local/share/tetosong/tetofortunes.dat https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/tetofortunes.dat +curl -sLo ~/.local/share/tetosong/sv2SOTD.wav https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/sv2SOTD.wav + +# set up autoupdater +# # i use systemd, so i use systemd timers. I'll figure out something for non-systemd users later. +AUTOUPDATE="$(. ~/.local/share/tetosong/tetosong.config; echo $AUTOUPDATE)" +if [ "$AUTOUPDATE" = "YES" ]; then + # write and enable systemd service file and timer user services + echo "Auto-Updater enabled, updating service..." + mkdir -p ~/.config/systemd/user + curl -sLo ~/.config/systemd/user/tetosong.service https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/autoupdater/tetosong.service + curl -sLo ~/.config/systemd/user/tetosong.timer https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/autoupdater/tetosong.timer + systemctl --user daemon-reload + systemctl --user enable tetosong.timer + systemctl --user start tetosong.timer +else + echo "Autoupdater disabled, skipping service update." +fi +# write tetosong to ~/.local/bin and tell the user how to use it. +echo "writing tetosong to ~/.local/bin" +mkdir -p ~/.local/bin +curl -sLo ~/.local/bin/tetosong https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/tetosong +chmod +x ~/.local/bin/tetosong +echo "Update complete" diff --git a/installer.sh b/installer.sh index f01fad2..54b96e3 100644 --- a/installer.sh +++ b/installer.sh @@ -14,20 +14,41 @@ fi # download custom fortunes and config file echo "Downloading custom fortunes and config file..." -mkdir -p ~/.local/share/tetosong -curl -sLo ~/.local/share/tetosong/tetofortunes https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/tetofortunes -curl -sLo ~/.local/share/tetosong/tetofortunes.dat https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/tetofortunes.dat -curl -sLo ~/.local/share/tetosong/tetosong.config https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/tetosong.config -curl -sLo ~/.local/share/tetosong/sv2SOTD.wav https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/sv2SOTD.wav +# download the config file and prompt the user for options. -# prompt the user to hear Teto in their terminal +curl -sLo ~/.local/share/tetosong/tetosong.config https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/tetosong.config read -p "Do you want to hear Teto in your terminal? (y/n) " yn case $yn in [Yy]* ) sed -i 's|^AUDIO=.*|AUDIO="YES"|' ~/.local/share/tetosong/tetosong.config ;; [Nn]* ) sed -i 's|^AUDIO=.*|AUDIO="NO"|' ~/.local/share/tetosong/tetosong.config ;; * ) echo "Please answer yes or no.";; esac +read -p "Do you want to enable automatic updates? (y/n) " yn +case $yn in + [Yy]* ) sed -i 's|^AUTOUPDATE=.*|AUTOUPDATE="YES"|' ~/.local/share/tetosong/tetosong.config ;; + [Nn]* ) sed -i 's|^AUTOUPDATE=.*|AUTOUPDATE="NO"|' ~/.local/share/tetosong/tetosong.config ;; + * ) echo "Please answer yes or no.";; +esac +mkdir -p ~/.local/share/tetosong +curl -sLo ~/.local/share/tetosong/tetofortunes https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/tetofortunes +curl -sLo ~/.local/share/tetosong/tetofortunes.dat https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/tetofortunes.dat +curl -sLo ~/.local/share/tetosong/sv2SOTD.wav https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/sv2SOTD.wav +# set up autoupdater +# i use systemd, so i use systemd timers. I'll figure out something for non-systemd users later. +AUTOUPDATE="$(. ~/.local/share/tetosong/tetosong.config; echo $AUTOUPDATE)" +if [ "$AUTOUPDATE" = "YES" ]; then + # write and enable systemd service file and timer user services + echo "Autoupdater enabled, updating service..." + mkdir -p ~/.config/systemd/user + curl -sLo ~/.config/systemd/user/tetosong.service https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/autoupdater/tetosong.service + curl -sLo ~/.config/systemd/user/tetosong.timer https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/autoupdater/tetosong.timer + systemctl --user daemon-reload + systemctl --user enable tetosong.timer + systemctl --user start tetosong.timer +else + echo "Auto-Updater disabled, skipping service update." +fi # write tetosong to ~/.local/bin and tell the user how to use it. echo "writing tetosong to ~/.local/bin" mkdir -p ~/.local/bin diff --git a/tetosong b/tetosong index b257e3b..3e87c1e 100644 --- a/tetosong +++ b/tetosong @@ -3,8 +3,8 @@ while [[ $# -gt 0 ]]; do case $1 in -u|--update) - echo "Updating tetosong..." - bash <(curl -s https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/installer.sh) + echo "Downloading tetosong updater..." + bash <(curl -s https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/autoupdater/updater.sh) shift exit 0 ;;