Compare commits

..

6 Commits

Author SHA1 Message Date
c0c642892b added first eggs 2026-04-24 18:29:58 -04:00
02d064ceef Update tetosong 2026-04-24 11:10:22 -04:00
c4d479f161 fix install and update
no tetosong folder = cant download config
2026-04-24 11:07:43 -04:00
e1f9f755c2 Update updater.sh 2026-04-24 10:58:21 -04:00
8d3f5d6f63 update branch links 2026-04-24 10:56:53 -04:00
f7e8931630 moving things around
prepwork for easter eggs
2026-04-24 10:41:37 -04:00
18 changed files with 72 additions and 581 deletions

View File

@@ -2,15 +2,11 @@
## **Find songs nobody knows exist!** ## **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. Your original fortune command will remain untouched, tetosong just tells it to use a custom directory. 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.
## **Enable Audio to Hear "Teto Song of the Day!" in your terminal from Utau, SynthV, or SynthV2 Teto!**
Sound plays based on the song you get! Utau for Utau! SV for SV!
https://github.com/user-attachments/assets/bc2a9909-d24a-43fa-882a-5e785cda3020 https://github.com/user-attachments/assets/bc2a9909-d24a-43fa-882a-5e785cda3020
## **Now With Optional Automatic Updates!** ## **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 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** ## **Dependencies**
### install.sh and tetosong ### install.sh and tetosong
@@ -28,7 +24,7 @@ jq
Install the tetosong command with: Install the tetosong command with:
```bash ```bash
bash <(curl -s https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/installer.sh) bash <(curl -s https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/eggs/installer.sh)
``` ```
once installed, make sure you add ~/.local/bin to your $PATH if it is not already there. once installed, make sure you add ~/.local/bin to your $PATH if it is not already there.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,68 +0,0 @@
#!/usr/bin/env bash
cd $HOME
yes | rm -r tetosong
git clone git@github.com:eric5949/tetosong.git
cd tetosong
ARTIST=140308 # 116 is Kasane Teto
CHILDREN="true" # If we want child voicebanks, we do so we can get all songs from utau, sv, and sv2
START=0 # Start at the beginning of the recordset. if i wanted to make the file in chunks to use the api less i would use this and max to get the songs in chunks. They say dont use it "thousands of times a day", getting every teto song is 280 times. I think I'm ok. maybe.
RESULTS=100 # Max results. Limit is 100.
MAX=30000 # when to stop, there's as of 4-23-26 over 28,000 songs featuring Kasane Teto in the recordset i have selected.
if [ ! -f var.json ]; then # var.json has our latest date, we use it to know where to stop going back, past it the songs already exist in the fortune file.
echo '{"lastDate": "2000-04-21T00:00:00Z"}' > var.json # if it doesn't exist, we create it with a default date back in 2000.
fi
PREVDATE=$(jq -r '.lastDate' var.json)
AFTERDATE=$(date -u -d "$PREVDATE + 1 Second" +"%Y-%m-%dT%H:%M:%SZ")
echo "Result: $AFTERDATE"
#rm tetofortunes var.json tetofortunes.dat # during testing we will remove everything, or if we want to regenerate the fortune file from scratch.
# setting the latest date. just pulling the latest song from the api and setting the createDate as the latest date in var.json for use when we update the fortune file again, dont want to add the same songs twice. idk how I'll handle broken links and such, maybe just regenerate the whole thing periodically.
CURLURL="https://vocadb.net/api/songs?songTypes=Original&afterDate=${AFTERDATE}&&artistId%5B%5D=${ARTIST}&childVoicebanks=${CHILDREN}&onlyWithPvs=true&status=Finished&start=0&maxResults=1&sort=PublishDate&fields=PVs"
echo "CURLURL: $CURLURL"
DATA=$(curl -X 'GET' \
$CURLURL \
-H 'accept: application/json')
# making sure there are songs to add.
SONGS=$(echo "$DATA" | jq -c '.items | length')
if [ "$SONGS" -eq 0 ]; then
echo "Result is empty. No more songs."
exit 0
fi
DATE=$(echo "$DATA" | jq -r '.items[0].publishDate')
echo "DATE: $DATE"
echo "{\"lastDate\": \"$DATE\"}" > var.json
# looping the api to get all songs we need.
while true; do
CURLURL="https://vocadb.net/api/songs?songTypes=Original&afterDate=${AFTERDATE}&&artistId%5B%5D=${ARTIST}&childVoicebanks=${CHILDREN}&onlyWithPvs=true&status=Finished&start=${START}&maxResults=${RESULTS}&sort=PublishDate&fields=PVs"
DATA=$(curl -X 'GET' \
$CURLURL \
-H 'accept: application/json')
SONGS=$(echo "$DATA" | jq -r '.items | length')
if [ "$SONGS" -eq 0 ]; then
echo "Result is empty. No more songs."
break
else
START=$((START + SONGS))
echo "Found songs! Processing... (Total fetched: $START)"
echo "$DATA" | jq -r '.items[] | [.artistString, .defaultName, .pvs[0].url] | @tsv' | while IFS=$'\t' read -r artist name url; do
echo "TETO SONG OF THE DAY!"
echo ""
echo "$artist -- $name"
echo ""
echo "$url"
echo ""
echo "▼・ᴗ・▼"
echo "%"
done >> fortunes/tetosotd/tetofortunes
if [ "$START" -ge "$MAX" ]; then
echo "Reached max results. Stopping."
break
fi
echo "Done!"
fi
done
# create the fortune database from tetofortunes
rm fortunes/tetosotd/tetofortunes.dat # delete the old database if it extists.
strfile -c % fortunes/tetosotd/tetofortunes fortunes/tetosotd/tetofortunes.dat
git add fortunes/tetosotd/tetofortunes fortunes/tetosotd/tetofortunes.dat var.json
git commit -m "Update fortune files"
git push -u origin main

View File

@@ -1,7 +0,0 @@
[Unit]
Description=tetofortunes autoupdater
Wants=makefortune.timer
[Service]
Type=oneshot
ExecStart=%h/.local/bin/automakefortune.sh

View File

@@ -1,10 +0,0 @@
[Unit]
Description=Run automakefortune.sh once a week
[Timer]
OnCalendar=Sun *-*-* 03:00:00
Persistent=true
Unit=makefortune.service
[Install]
WantedBy=timers.target

View File

@@ -4,4 +4,4 @@ Wants=tetosong.timer
[Service] [Service]
Type=oneshot Type=oneshot
ExecStart=/usr/bin/bash -c "curl -s https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/autoupdater/updater.sh | bash" ExecStart=/usr/bin/bash -c "curl -s https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/eggs/autoupdater/updater.sh | bash"

View File

@@ -1,22 +1,21 @@
#!/usr/bin/bash #!/usr/bin/env bash
# download custom fortunes and config file # download custom fortunes and config file
echo "Updating tetosong..." echo "Updating tetosong..."
# check if the config file exists, if not download it and prompt the user for options.
mkdir -p ~/.local/share/tetosong
# past here is a modified installer.sh, if i build an update option into installer.sh i cant get it to run correctly with the curl command
# check if the config file exists, if not download it and prompt the user for options.
mkdir -p ~/.local/share/tetosong/
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/eggs/tetosong.config
fi
mkdir -p ~/.local/share/tetosong/fortunes mkdir -p ~/.local/share/tetosong/fortunes
mkdir -p ~/.local/share/tetosong/fortunes/tetosotd mkdir -p ~/.local/share/tetosong/fortunes/tetosotd
curl -sLo ~/.local/share/tetosong/fortunes/tetosotd/tetofortunes https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/fortunes/tetosotd/tetofortunes curl -sLo ~/.local/share/tetosong/fortunes/tetosotd/tetofortunes https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/eggs/fortunes/tetosotd/tetofortunes
curl -sLo ~/.local/sharetetosong/fortunes/tetosotd/tetofortunes.dat https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/fortunes/tetosotd/tetofortunes.dat curl -sLo ~/.local/share/tetosong/fortunes/tetosotd/tetofortunes.dat https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/eggs/fortunes/tetosotd/tetofortunes.dat
AUDIO="$(. ~/.local/share/tetosong/tetosong.config; echo $AUDIO)" curl -sLo ~/.local/share/tetosong/sv2SOTD.wav https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/eggs/sv2SOTD.wav
if [ "$AUDIO" = "YES" ]; then
curl -sLo ~/.local/share/tetosong/SOTD.zip https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/audio/teto/SOTD.zip
mkdir -p ~/.local/share/tetosong/audio/
mkdir -p ~/.local/share/tetosong/audio/teto/
unzip -o ~/.local/share/tetosong/SOTD.zip -d ~/.local/share/tetosong/audio/teto/
rm ~/.local/share/tetosong/SOTD.zip
fi
# set up autoupdater # set up autoupdater
# # i use systemd, so i use systemd timers. I'll figure out something for non-systemd users later. # # i use systemd, so i use systemd timers. I'll figure out something for non-systemd users later.
@@ -25,8 +24,8 @@ if [ "$AUTOUPDATE" = "YES" ]; then
# write and enable systemd service file and timer user services # write and enable systemd service file and timer user services
echo "Auto-Updater enabled, updating service..." echo "Auto-Updater enabled, updating service..."
mkdir -p ~/.config/systemd/user 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.service https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/eggs/autoupdater/tetosong.service
curl -sLo ~/.config/systemd/user/tetosong.timer https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/autoupdater/tetosong.timer curl -sLo ~/.config/systemd/user/tetosong.timer https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/eggs/autoupdater/tetosong.timer
systemctl --user daemon-reload systemctl --user daemon-reload
systemctl --user enable tetosong.timer systemctl --user enable tetosong.timer
systemctl --user start tetosong.timer systemctl --user start tetosong.timer
@@ -36,6 +35,6 @@ fi
# write tetosong to ~/.local/bin and tell the user how to use it. # write tetosong to ~/.local/bin and tell the user how to use it.
echo "writing tetosong to ~/.local/bin" echo "writing tetosong to ~/.local/bin"
mkdir -p ~/.local/bin mkdir -p ~/.local/bin
curl -sLo ~/.local/bin/tetosong https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/tetosong curl -sLo ~/.local/bin/tetosong https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/eggs/tetosong
chmod +x ~/.local/bin/tetosong chmod +x ~/.local/bin/tetosong
echo "Update complete" echo "Update complete"

26
fortunes/eggs/eggs Normal file
View File

@@ -0,0 +1,26 @@
TETO SONG OF THE DAY!
There is no song of the day! I'm on strike!
▼ >ᴗ< ▼
%
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡖⣉⡬⣷⣦⠶⠶⠞⠙⡦⠖⠒⠒⠒⢤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡤⢤⣠⠔⢦⡀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡞⢉⣩⢯⡴⠃⢀⡴⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠓⢦⡀⠀⠀⠀⠀⠀⠀⠀⠻⡀⠀⠁⠀⢀⡇⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⡜⡿⠉⠲⣵⠘⡆⠴⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⢦⡀⠀⠀⣀⣀⣀⠀⠙⣆⠀⡠⠎⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢀⡤⠞⠓⠓⠲⢄⡘⠃⠹⡄⠀⠀⠀⢀⡀⠀⠀⠀⡀⠀⠀⠀⢀⠀⠀⠈⢳⡀⠹⡄⢀⡇⢀⡞⠀⠀⠈⡏⠁⠀⠀⠀⠀
⠀⠀⠀⠀⢀⡴⠋⠀⠀⠀⠀⣀⡤⠽⠂⠀⠧⡄⣀⢀⡏⣇⠀⠀⢀⡿⣄⠀⢀⠈⣇⠀⠀⠀⠙⡆⢁⡟⢁⡞⠀⢀⡀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⣠⠞⠁⠀⠀⠀⠀⠀⠘⢧⡤⠖⢒⠿⡆⠹⡬⠻⣦⡘⢆⠀⡼⠀⣈⡽⠫⣀⠈⡆⠀⠀⠀⠓⡼⢀⡿⠚⠉⠉⢹⠀⠀⠀⠀⠀⠀⠀
⠀⢰⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡖⣱⠁⠱⡞⠱⡤⣄⡉⠀⠹⡇⠀⠁⢀⣠⠎⠙⢷⠀⠀⠀⢠⠃⠀⠀⠀⣠⠤⠚⠃⠀⠀⠀⠀⠀⠀
⠀⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠏⠀⡇⠐⢄⠟⡆⠳⡄⢙⣦⠀⠀⠀⠾⣍⡀⠀⠀⢸⡀⠀⢀⡏⠀⠀⡴⠋⠈⠉⠓⠦⡀⠀⠀⠀⠀⠀
⢸⠁⢀⡴⠂⠀⠀⠀⠀⡀⠀⡏⠀⢰⢁⡔⠋⠳⣷⠀⠙⡍⢰⠒⠚⡇⠀⠀⠙⠂⠀⣼⠃⣠⡜⠀⠀⡞⠁⠀⠀⠀⠀⠀⠈⠳⡄⠀⠀⠀
⣧⢞⡏⠀⠀⠀⠀⠀⡼⣇⠀⡇⠀⢸⠎⠀⡤⠖⠚⡧⠀⢳⠈⠓⠚⠁⠀⠀⠀⢀⡤⠿⠋⣰⠃⠀⣜⠁⠀⠀⠀⠀⠀⠀⠀⠀⠘⣆⠀⠀
⠀⢸⠀⠀⠀⠀⠀⠀⡇⠈⠳⠇⠀⠀⠀⡞⠁⠀⠀⠹⡔⠌⣇⡀⠀⠀⣀⡤⠞⠉⠀⠀⢀⡇⠀⣰⠃⠙⢦⠀⠀⠀⠀⠀⣤⣄⡀⢸⠀⠀
⠀⢸⡀⠀⠀⠀⠀⠀⡇⠀⠀⠀⢀⣔⣲⠟⠲⣄⣀⡠⠟⢻⢑⣏⡟⢩⡁⢀⡟⠦⣀⣀⣾⣄⣰⠃⠀⠀⠀⠱⡄⠀⠀⠀⠀⡇⠹⠃⠀⠀
⠀⠀⠑⠦⣄⡀⠀⠀⣧⠀⠀⢀⠏⣷⠃⠀⠀⠀⠉⠳⣄⡞⢯⡘⡖⣆⠳⣼⠀⠀⠉⠳⣴⠃⠉⠀⠀⠀⠀⢀⡇⠀⠀⠀⠀⢳⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠉⠉⠉⠁⠀⠀⢸⠀⠛⠀⠀⠀⠀⠀⢀⣈⡽⣶⡵⠃⠈⠙⠺⣄⠤⠀⠀⠘⢦⡀⠀⠀⠀⠠⠟⠚⡇⠀⠀⢰⡏⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠓⠦⠤⠤⠒⠖⢊⡝⠀⠀⠀⠀⠀⠀⠀⠀⢛⠖⠦⠖⠋⠉⠀⠀⠀⠀⠀⣠⣞⡥⠤⠤⠞⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠤⡯⠤⠤⠤⠤⠤⠤⠤⠤⠤⢼⠀⠀⠐⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⣇⠀⣄⠀⠀⠀⠀⠀⢀⡞⠀⠀⠀⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠞⠁⠉⠉⠉⠉⢦⡞⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
%

BIN
fortunes/eggs/eggs.dat Normal file

Binary file not shown.

View File

@@ -221286,419 +221286,3 @@ http://www.nicovideo.jp/watch/sm46218113
▼・ᴗ・▼ ▼・ᴗ・▼
% %
TETO SONG OF THE DAY!
栗山夕璃 feat. 重音テトSV -- 怪文書
https://youtu.be/FmeDAT0WqII
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
qμasi feat. 重音テトSV -- 戦場のレクイエム
http://www.nicovideo.jp/watch/sm46224016
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
碓氷P feat. 重音テトSV -- 群衆
http://www.nicovideo.jp/watch/sm46235424
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
Ele. feat. 重音テトSV -- 夏雨 弾き語り
http://www.nicovideo.jp/watch/sm46237144
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
ryota01 feat. 重音テトSV2 -- ORDER
http://www.nicovideo.jp/watch/sm46235604
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
火燵 feat. 重音テトSV -- VT
http://www.nicovideo.jp/watch/sm46197396
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
秋原 零 feat. 初音ミク, 重音テトSV -- good bye my life
http://www.nicovideo.jp/watch/sm46236215
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
ぬ! feat. 重音テトSV -- ふたりごっこ
http://www.nicovideo.jp/watch/sm46236460
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
みりん feat. 重音テトSV -- 砂漠と憧憬
http://www.nicovideo.jp/watch/sm46236581
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
みなみ遣水 feat. フリモメン, 重音テトSV -- 交信 -コミュニケーション-
http://www.nicovideo.jp/watch/sm46233113
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
PN4bi feat. 重音テト -- れういて
http://www.nicovideo.jp/watch/sm46233403
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
かぇさる feat. 重音テト -- 空の底を散歩したい
http://www.nicovideo.jp/watch/sm46233829
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
67(ろくなな) feat. 重音テトSV -- Sink or Swim
http://www.nicovideo.jp/watch/sm46227867
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
なおみし feat. 小春六花 (Unknown), 重音テトSV -- 足湯で疲れをふっとばす!!
http://www.nicovideo.jp/watch/sm46231683
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
まくらP feat. 重音テト -- スイセイになれたなら
http://www.nicovideo.jp/watch/sm46232321
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
thus feat. 重音テトSV -- エスパー。
http://www.nicovideo.jp/watch/sm46229326
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
ISSY feat. Mai, 重音テトSV -- 星灯り
http://www.nicovideo.jp/watch/sm46228682
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
アルル学園プロジェクト feat. various -- 欲しい
http://www.nicovideo.jp/watch/sm46232828
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
Kiui feat. 重音テトSV -- 夢中
http://www.nicovideo.jp/watch/sm46233105
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
やどかる feat. 重音テトSV -- 最期のおねだり
http://www.nicovideo.jp/watch/sm46233269
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
fuka feat. 重音テトSV -- 独りきり
http://www.nicovideo.jp/watch/sm46232938
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
カクタスP feat. 重音テト -- 1k SUBSCRIBERS! (short ver.)
https://youtu.be/t4N-n3_9uns
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
Lucky Studios feat. 桃音モモ連続音Soft -- ノンセンス
https://youtu.be/JhUFkJ_38G0
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
ユレリル feat. 重音テトSV -- ノミナ
http://www.nicovideo.jp/watch/sm46229145
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
qμasi feat. 重音テトSV -- 廻游
http://www.nicovideo.jp/watch/sm46224008
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
yaccill feat. 重音テトSV -- shadow
http://www.nicovideo.jp/watch/sm46229595
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
ridume feat. 重音テト -- Others
http://www.nicovideo.jp/watch/sm46229036
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
都幾川なつき feat. 重音テトSV -- 夏で溶かして
http://www.nicovideo.jp/watch/sm46230696
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
乖正 feat. 重音テトSV -- 微積気分
http://www.nicovideo.jp/watch/sm46230485
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
fuka feat. 重音テト -- Revolution of Solitude
http://www.nicovideo.jp/watch/sm46231381
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
voqx feat. various -- $$$ Ultimate Finance Guide April 2026 🤑💸💰
https://youtu.be/XMOQlI5J7Tc
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
qμasi feat. 重音テトSV -- 重唱
http://www.nicovideo.jp/watch/sm46211890
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
カミナシ feat. various -- 十分な理由
http://www.nicovideo.jp/watch/sm46212309
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
Goigana feat. 沨漪, 重音テトSV -- CHINATOWN
https://youtu.be/xVR0UywxaOk
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
エイビー feat. 重音テトSV -- ポスト・エピローグ
http://www.nicovideo.jp/watch/sm46223577
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
GoDa feat. 重音テトSV -- 二つ折り
http://www.nicovideo.jp/watch/sm46226142
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
fuka feat. 重音テトSV -- 諦め
http://www.nicovideo.jp/watch/sm46227111
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
のどぼとけ feat. 重音テトSV -- 冷徹
http://www.nicovideo.jp/watch/sm46227384
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
学級歌チャンネル feat. 重音テト -- たけのこ学級歌
http://www.nicovideo.jp/watch/sm46227409
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
吉田夜世 feat. 重音テトSV -- ハッピーアンドエンド
https://youtu.be/hUg0dMeMgi0
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
イバラナ feat. 重音テトSV -- ゆらりゆらり
https://youtu.be/wnHU20M-0DE
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
ギリギリP, ギリギリPレコードズ feat. 重音テト -- 創
http://www.nicovideo.jp/watch/sm46224377
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
たたたさぁ feat. 重音テト -- くりみなる!
http://www.nicovideo.jp/watch/sm46219869
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
PN4bi feat. 重音テト -- カップケーキ落ちた!
http://www.nicovideo.jp/watch/sm46223137
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
原口沙輔 feat. 重音テト -- ツクリモノ
https://youtu.be/QS5ohf5zrCU
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
マキシウキョウ feat. 重音テトSV -- シーンプル
https://youtu.be/mtYUOnUFLvc
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
フロクロ feat. 重音テト -- る=る=るぅ論
https://youtu.be/lQriDKquUHk
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
マサラダ feat. 重音テトSV -- エネルギー
https://youtu.be/MPohJKiekXM
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
薄塩指数 feat. 重音テトSV -- QとI
https://youtu.be/1afF5t6PemI
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
薄塩指数 feat. 重音テトSV -- やるだけなんだ!
https://youtu.be/yM18ljmjUAI
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
薄塩指数 feat. 重音テトSV -- かきならせ! 未来!
https://youtu.be/-_lm2rObn4E
▼・ᴗ・▼
%
TETO SONG OF THE DAY!
薄塩指数 feat. 重音テトSV -- I T8KE ME
https://youtu.be/KW47caPLyUE
▼・ᴗ・▼
%

Binary file not shown.

View File

@@ -15,33 +15,25 @@ fi
# download custom fortunes and config file # download custom fortunes and config file
echo "Downloading custom fortunes and config file..." echo "Downloading custom fortunes and config file..."
# download the config file and prompt the user for options. # download the config file and prompt the user for options.
mkdir -p ~/.local/share/tetosong mkdir -p ~/.local/share/tetosong/
curl -sLo ~/.local/share/tetosong/tetosong.config https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/tetosong.config curl -sLo ~/.local/share/tetosong/tetosong.config https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/eggs/tetosong.config
read -p "Do you want to hear Teto in your terminal? (y/n) " yn read -p "Do you want to hear Teto in your terminal? (y/n) " yn
case $yn in case $yn in
[Yy]* ) [Yy]* ) sed -i 's|^AUDIO=.*|AUDIO="YES"|' ~/.local/share/tetosong/tetosong.config ;;
sed -i 's|^AUDIO=.*|AUDIO="YES"|' ~/.local/share/tetosong/tetosong.config
curl -sLo /tmp/SOTD.zip https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/audio/teto/SOTD.zip
mkdir -p ~/.local/share/tetosong/audio/
mkdir -p ~/.local/share/tetosong/audio/teto/
unzip -o /tmp/SOTD.zip -d ~/.local/share/tetosong/audio/teto/
rm /tmp/SOTD.zip
;;
[Nn]* ) sed -i 's|^AUDIO=.*|AUDIO="NO"|' ~/.local/share/tetosong/tetosong.config ;; [Nn]* ) sed -i 's|^AUDIO=.*|AUDIO="NO"|' ~/.local/share/tetosong/tetosong.config ;;
* ) echo "Please answer yes or no.";; * ) echo "Please answer yes or no.";;
esac esac
read -p "Do you want to enable automatic updates? (y/n) " yn read -p "Do you want to enable automatic updates? (y/n) " yn
case $yn in case $yn in
[Yy]* ) [Yy]* ) sed -i 's|^AUTOUPDATE=.*|AUTOUPDATE="YES"|' ~/.local/share/tetosong/tetosong.config ;;
sed -i 's|^AUTOUPDATE=.*|AUTOUPDATE="YES"|' ~/.local/share/tetosong/tetosong.config ;;
[Nn]* ) sed -i 's|^AUTOUPDATE=.*|AUTOUPDATE="NO"|' ~/.local/share/tetosong/tetosong.config ;; [Nn]* ) sed -i 's|^AUTOUPDATE=.*|AUTOUPDATE="NO"|' ~/.local/share/tetosong/tetosong.config ;;
* ) echo "Please answer yes or no.";; * ) echo "Please answer yes or no.";;
esac esac
mkdir -p ~/.local/share/tetosong/fortunes mkdir -p ~/.local/share/tetosong/fortunes
mkdir -p ~/.local/share/tetosong/fortunes/tetosotd mkdir -p ~/.local/share/tetosong/fortunes/tetosotd
curl -sLo ~/.local/share/tetosong/fortunes/tetosotd/tetofortunes https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/fortunes/tetosotd/tetofortunes curl -sLo ~/.local/share/tetosong/fortunes/tetosotd/tetofortunes https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/eggs/fortunes/tetosotd/tetofortunes
curl -sLo ~/.local/share/tetosong/fortunes/tetosotd/tetofortunes.dat https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/fortunes/tetosotd/tetofortunes.dat curl -sLo ~/.local/share/tetosong/fortunes/tetosotd/tetofortunes.dat https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/eggs/fortunes/tetosotd/tetofortunes.dat
curl -sLo ~/.local/share/tetosong/sv2SOTD.wav https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/eggs/sv2SOTD.wav
# set up autoupdater # set up autoupdater
# i use systemd, so i use systemd timers. I'll figure out something for non-systemd users later. # i use systemd, so i use systemd timers. I'll figure out something for non-systemd users later.
@@ -50,8 +42,8 @@ if [ "$AUTOUPDATE" = "YES" ]; then
# write and enable systemd service file and timer user services # write and enable systemd service file and timer user services
echo "Autoupdater enabled, updating service..." echo "Autoupdater enabled, updating service..."
mkdir -p ~/.config/systemd/user 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.service https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/eggs/autoupdater/tetosong.service
curl -sLo ~/.config/systemd/user/tetosong.timer https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/autoupdater/tetosong.timer curl -sLo ~/.config/systemd/user/tetosong.timer https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/eggs/autoupdater/tetosong.timer
systemctl --user daemon-reload systemctl --user daemon-reload
systemctl --user enable tetosong.timer systemctl --user enable tetosong.timer
systemctl --user start tetosong.timer systemctl --user start tetosong.timer
@@ -61,6 +53,6 @@ fi
# write tetosong to ~/.local/bin and tell the user how to use it. # write tetosong to ~/.local/bin and tell the user how to use it.
echo "writing tetosong to ~/.local/bin" echo "writing tetosong to ~/.local/bin"
mkdir -p ~/.local/bin mkdir -p ~/.local/bin
curl -sLo ~/.local/bin/tetosong https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/tetosong curl -sLo ~/.local/bin/tetosong https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/eggs/tetosong
chmod +x ~/.local/bin/tetosong chmod +x ~/.local/bin/tetosong
echo "Make sure ~/.local/bin is in your PATH and you can get your Teto Song Of the Day by typing in tetosong or adding it to your bashrc :)" echo "Make sure ~/.local/bin is in your PATH and you can get your Teto Song Of the Day by typing in tetosong or adding it to your bashrc :)"

View File

@@ -1,4 +1,4 @@
#!/usr/bin/bash #!/usr/bin/env bash
ARTIST=140308 # 116 is Kasane Teto ARTIST=140308 # 116 is Kasane Teto
CHILDREN="true" # If we want child voicebanks, we do so we can get all songs from utau, sv, and sv2 CHILDREN="true" # If we want child voicebanks, we do so we can get all songs from utau, sv, and sv2
START=0 # Start at the beginning of the recordset. if i wanted to make the file in chunks to use the api less i would use this and max to get the songs in chunks. They say dont use it "thousands of times a day", getting every teto song is 280 times. I think I'm ok. maybe. START=0 # Start at the beginning of the recordset. if i wanted to make the file in chunks to use the api less i would use this and max to get the songs in chunks. They say dont use it "thousands of times a day", getting every teto song is 280 times. I think I'm ok. maybe.
@@ -48,7 +48,7 @@ while true; do
echo "" echo ""
echo "▼・ᴗ・▼" echo "▼・ᴗ・▼"
echo "%" echo "%"
done >> tetofortunes done >> fortunes/tetosotd/tetofortunes
if [ "$START" -ge "$MAX" ]; then if [ "$START" -ge "$MAX" ]; then
echo "Reached max results. Stopping." echo "Reached max results. Stopping."
break break
@@ -57,5 +57,5 @@ while true; do
fi fi
done done
# create the fortune database from tetofortunes # create the fortune database from tetofortunes
rm tetofortunes.dat # delete the old database if it extists. rm fortunes/tetofortunes.dat # delete the old database if it extists.
strfile -c % tetofortunes tetofortunes.dat strfile -c % fortunes/tetofortunes fortunes/tetofortunes.dat

View File

@@ -1,10 +1,10 @@
#!/usr/bin/bash #!/usr/bin/env bash
# argument handling # argument handling
while [[ $# -gt 0 ]]; do while [[ $# -gt 0 ]]; do
case $1 in case $1 in
-u|--update) -u|--update)
echo "Downloading tetosong updater..." echo "Downloading tetosong updater..."
bash <(curl -s https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/autoupdater/updater.sh) bash <(curl -s https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/eggs/autoupdater/updater.sh)
shift shift
exit 0 exit 0
;; ;;
@@ -26,7 +26,7 @@ done
# check if the config file exists, if not download it # check if the config file exists, if not download it
if [ ! -f ~/.local/share/tetosong/tetosong.config ]; then if [ ! -f ~/.local/share/tetosong/tetosong.config ]; then
echo "Config file not found, downloading default..." 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 curl -sLo ~/.local/share/tetosong/tetosong.config https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/eggs/tetosong.config
fi fi
# check if the user wants to play audio # check if the user wants to play audio
AUDIO="$(. ~/.local/share/tetosong/tetosong.config; echo $AUDIO)" AUDIO="$(. ~/.local/share/tetosong/tetosong.config; echo $AUDIO)"
@@ -37,35 +37,14 @@ if ! [ -x "$(command -v fortune)" ]; then
echo 'No fortune commmand is installed, exiting!' echo 'No fortune commmand is installed, exiting!'
exit 1 exit 1
else else
misfortune ~/.local/share/tetosong/fortunes/*/* >> /tmp/fortune # fortune and misfortune handle directories differently
if [ "$AUDIO" = "YES" ]; then # i guess i could foregoe checking and just run the audio either way since i dont download it unless the user enables it, but i want them to be ableto turn it off if they choose to
if grep -q "SV2" /tmp/fortune; then
nohup ffplay -nodisp -autoexit -v quiet ~/.local/share/tetosong/audio/teto/sv2SOTD.wav 2>/dev/null >/dev/null &
elif grep -q "SV" /tmp/fortune; then
nohup ffplay -nodisp -autoexit -v quiet ~/.local/share/tetosong/audio/teto/svSOTD.wav 2>/dev/null >/dev/null &
elif grep -q "重音テト" /tmp/fortune; then
nohup ffplay -nodisp -autoexit -v quiet ~/.local/share/tetosong/audio/teto/utSOTD.wav 2>/dev/null >/dev/null &
else
nohup ffplay -nodisp -autoexit -v quiet ~/.local/share/tetosong/audio/teto/sv2SOTD.wav 2>/dev/null >/dev/null &
fi
fi
cat /tmp/fortune
rm /tmp/fortune
fi
else
fortune ~/.local/share/tetosong/fortunes/* >> /tmp/fortune
if [ "$AUDIO" = "YES" ]; then if [ "$AUDIO" = "YES" ]; then
if grep -q "SV2" /tmp/fortune; then nohup ffplay -nodisp -autoexit -v quiet ~/.local/share/tetosong/sv2SOTD.wav 2>/dev/null >/dev/null &
nohup ffplay -nodisp -autoexit -v quiet ~/.local/share/tetosong/audio/teto/sv2SOTD.wav 2>/dev/null >/dev/null & fi
elif grep -q "SV" /tmp/fortune; then misfortune ~/.local/share/tetosong/fortunes/**/*/* # fortune doesnt care if you give it a directory, apparently misfortune does. watch this be a problem when i go to add easter eggs in a separate file...
nohup ffplay -nodisp -autoexit -v quiet ~/.local/share/tetosong/audio/teto/svSOTD.wav 2>/dev/null >/dev/null & fi
elif grep -q "重音テト" /tmp/fortune; then
nohup ffplay -nodisp -autoexit -v quiet ~/.local/share/tetosong/audio/teto/utSOTD.wav 2>/dev/null >/dev/null &
else else
nohup ffplay -nodisp -autoexit -v quiet ~/.local/share/tetosong/audio/teto/sv2SOTD.wav 2>/dev/null >/dev/null & if [ "$AUDIO" = "YES" ]; then
nohup ffplay -nodisp -autoexit -v quiet ~/.local/share/tetosong/sv2SOTD.wav 2>/dev/null >/dev/null &
fi fi
fi fortune ~/.local/share/tetosong/fortunes/**/*/
cat /tmp/fortune
rm /tmp/fortune
fi fi

View File

@@ -1 +1 @@
{"lastDate": "2026-05-27T00:00:00Z"} {"lastDate": "2026-04-24T00:00:00Z"}