Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 135b7e5da8 | |||
| cccddb7045 | |||
| d9372881bf | |||
| e9add46de0 | |||
| e0728a6ab3 | |||
| bd7b0be8e6 | |||
| 70e2b73883 | |||
| c5397a501b | |||
| 542ba1b9b0 | |||
| a7cb1db0bc | |||
| fe5c02be27 | |||
| 478877475b | |||
|
|
0445d33adc | ||
| bb2c970a71 | |||
| b5f64677ee |
@@ -1,9 +1,10 @@
|
|||||||
# **Kasane Teto in Your Terminal!**
|
# **Kasane Teto in Your Terminal!**
|
||||||
## **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 fortune type script that picks a random Teto song of the day from any of over 28,000 original, finished songs with videos on VocaDB.
|
||||||
|
|
||||||
## **Enable Audio to Hear "Teto Song of the Day!" in your terminal from Utau, SynthV, or SynthV2 Teto!**
|
## **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!
|
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!**
|
||||||
@@ -11,15 +12,11 @@ Disabled by default, opt-in during setup to enable a systemd user service and ti
|
|||||||
|
|
||||||
|
|
||||||
## **Dependencies**
|
## **Dependencies**
|
||||||
|
NO LONGER REQUIRES FORTUNE
|
||||||
### install.sh and tetosong
|
### install.sh and tetosong
|
||||||
fortune/fortune-mod or misfortune
|
|
||||||
|
|
||||||
ffmpeg -optional for speaking Teto
|
ffmpeg -optional for speaking Teto
|
||||||
|
|
||||||
### makefortune.sh
|
### makefortune.sh
|
||||||
fortune/fortune-mod (for strfile)
|
|
||||||
|
|
||||||
jq
|
jq
|
||||||
|
|
||||||
## *Install and Run*
|
## *Install and Run*
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
#!/usr/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
cd $HOME
|
||||||
|
yes | rm -r tetosong
|
||||||
git clone git@github.com:eric5949/tetosong.git
|
git clone git@github.com:eric5949/tetosong.git
|
||||||
cd tetosong
|
cd tetosong
|
||||||
ARTIST=140308 # 116 is Kasane Teto
|
ARTIST=140308 # 116 is Kasane Teto
|
||||||
@@ -6,10 +8,10 @@ CHILDREN="true" # If we want child voicebanks, we do so we can get all songs fro
|
|||||||
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.
|
||||||
RESULTS=100 # Max results. Limit is 100.
|
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.
|
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.
|
if [ ! -f dates/${ARTIST}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.
|
echo '{"lastDate": "2000-04-21T00:00:00Z"}' > dates/${ARTIST}var.json # if it doesn't exist, we create it with a default date back in 2000.
|
||||||
fi
|
fi
|
||||||
PREVDATE=$(jq -r '.lastDate' var.json)
|
PREVDATE=$(jq -r '.lastDate' dates/${ARTIST}var.json)
|
||||||
AFTERDATE=$(date -u -d "$PREVDATE + 1 Second" +"%Y-%m-%dT%H:%M:%SZ")
|
AFTERDATE=$(date -u -d "$PREVDATE + 1 Second" +"%Y-%m-%dT%H:%M:%SZ")
|
||||||
echo "Result: $AFTERDATE"
|
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.
|
#rm tetofortunes var.json tetofortunes.dat # during testing we will remove everything, or if we want to regenerate the fortune file from scratch.
|
||||||
@@ -25,9 +27,9 @@ if [ "$SONGS" -eq 0 ]; then
|
|||||||
echo "Result is empty. No more songs."
|
echo "Result is empty. No more songs."
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
DATE=$(echo "$DATA" | jq -r '.items[0].publishDate')
|
DATE=$(date -u +%Y-%m-%dT00:00:00Z)
|
||||||
echo "DATE: $DATE"
|
echo "DATE: $DATE"
|
||||||
echo "{\"lastDate\": \"$DATE\"}" > var.json
|
echo "{\"lastDate\": \"$DATE\"}" > dates/${ARTIST}var.json
|
||||||
# looping the api to get all songs we need.
|
# looping the api to get all songs we need.
|
||||||
while true; do
|
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"
|
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"
|
||||||
@@ -49,8 +51,8 @@ while true; do
|
|||||||
echo "$url"
|
echo "$url"
|
||||||
echo ""
|
echo ""
|
||||||
echo "▼・ᴗ・▼"
|
echo "▼・ᴗ・▼"
|
||||||
echo "%"
|
echo "\`"
|
||||||
done >> tetofortunes
|
done >> vocafortunes/vocadb/$ARTIST
|
||||||
if [ "$START" -ge "$MAX" ]; then
|
if [ "$START" -ge "$MAX" ]; then
|
||||||
echo "Reached max results. Stopping."
|
echo "Reached max results. Stopping."
|
||||||
break
|
break
|
||||||
@@ -58,8 +60,42 @@ while true; do
|
|||||||
echo "Done!"
|
echo "Done!"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
readarray -d '`' tetosongs < vocafortunes/vocadb/$ARTIST
|
||||||
|
|
||||||
|
readarray -td '' dups < <(
|
||||||
|
(( ${#tetosongs[@]} == 0 )) ||
|
||||||
|
printf '%s\0' "${tetosongs[@]}" |
|
||||||
|
LC_ALL=C sort -z |
|
||||||
|
LC_ALL=C uniq -zd
|
||||||
|
)
|
||||||
|
readarray -td '' uniq < <(
|
||||||
|
(( ${#tetosongs[@]} == 0 )) ||
|
||||||
|
printf '%s\0' "${tetosongs[@]}" |
|
||||||
|
LC_ALL=C sort -z |
|
||||||
|
LC_ALL=C uniq -zu
|
||||||
|
)
|
||||||
|
|
||||||
|
echo ${#tetosongs[@]}
|
||||||
|
if ((${#dups[@]} > 0)); then
|
||||||
|
echo >&2 "array has duplicates:"
|
||||||
|
echo ${#dups[@]}
|
||||||
|
fi
|
||||||
|
if ((${#uniq[@]} > 0)); then
|
||||||
|
echo >&2 "Uniques:"
|
||||||
|
echo ${#uniq[@]}
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf >&2 '%s' "${dups[@]}" > dups
|
||||||
|
printf >&2 '%s' "${uniq[@]}" > uniq
|
||||||
|
|
||||||
|
cat uniq > fixed
|
||||||
|
cat dups >> fixed
|
||||||
|
sed -i '1,/^TETO SONG OF THE DAY!/{/^TETO SONG OF THE DAY!$/!d}' fixed
|
||||||
|
rm vocafortunes/vocadb/$ARTIST
|
||||||
|
rm uniq dups
|
||||||
|
mv fixed vocafortunes/vocadb/$ARTIST
|
||||||
# create the fortune database from tetofortunes
|
# create the fortune database from tetofortunes
|
||||||
rm tetofortunes.dat # delete the old database if it extists.
|
git add vocafortunes/vocadb/$ARTIST dates/${ARTIST}var.json
|
||||||
strfile -c % tetofortunes tetofortunes.dat
|
|
||||||
git commit -m "Update fortune files"
|
git commit -m "Update fortune files"
|
||||||
git push -u origin main
|
git push -u origin main
|
||||||
|
|||||||
@@ -1,14 +1,19 @@
|
|||||||
#!/usr/bin/bash
|
#!/usr/bin/bash
|
||||||
|
#
|
||||||
|
# Updated 5-1-2026 to use new vocafortunes script instead of fortune/misfortune
|
||||||
|
#
|
||||||
|
#
|
||||||
# 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.
|
# check if the config file exists, if not download it and prompt the user for options.
|
||||||
|
|
||||||
|
#### remove files from old version
|
||||||
|
rm -rf ~/.local/share/tetosong/fortunes/
|
||||||
|
# add new files
|
||||||
mkdir -p ~/.local/share/tetosong
|
mkdir -p ~/.local/share/tetosong
|
||||||
|
mkdir -p ~/.local/share/tetosong/vocafortunes
|
||||||
|
mkdir -p ~/.local/share/tetosong/vocafortunes/vocadb
|
||||||
mkdir -p ~/.local/share/tetosong/fortunes
|
curl -sLo ~/.local/share/tetosong/vocafortunes/vocadb/140308 https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/vocafortunes/vocadb/140308
|
||||||
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/sharetetosong/fortunes/tetosotd/tetofortunes.dat https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/fortunes/tetosotd/tetofortunes.dat
|
|
||||||
AUDIO="$(. ~/.local/share/tetosong/tetosong.config; echo $AUDIO)"
|
AUDIO="$(. ~/.local/share/tetosong/tetosong.config; echo $AUDIO)"
|
||||||
if [ "$AUDIO" = "YES" ]; then
|
if [ "$AUDIO" = "YES" ]; then
|
||||||
curl -sLo ~/.local/share/tetosong/SOTD.zip https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/audio/teto/SOTD.zip
|
curl -sLo ~/.local/share/tetosong/SOTD.zip https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/audio/teto/SOTD.zip
|
||||||
@@ -37,5 +42,7 @@ fi
|
|||||||
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/main/tetosong
|
||||||
|
curl -sLo ~/.local/bin/tetosong https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/vocafortune
|
||||||
chmod +x ~/.local/bin/tetosong
|
chmod +x ~/.local/bin/tetosong
|
||||||
echo "Update complete"
|
chmod +x ~/.local/bin/vocafortune
|
||||||
|
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 :)"
|
||||||
|
|||||||
1
dates/140308var.json
Normal file
1
dates/140308var.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"lastDate": "2026-05-02T00:00:00Z"}
|
||||||
Binary file not shown.
37
installer.sh
37
installer.sh
@@ -1,27 +1,20 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# check which fortune command is installed if any.
|
#
|
||||||
if ! [ -x "$(command -v fortune)" ]; then
|
# Updated 5-1-2026 to use new vocafortunes script instead of fortune/misfortune
|
||||||
echo 'fortune is not installed, checking for misfortune'm
|
#
|
||||||
if ! [ -x "$(command -v misfortune)" ]; then
|
#
|
||||||
echo 'neither program is installed, exiting'
|
#
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
echo 'misfortune found'
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo 'fortune found'
|
|
||||||
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/test/tetosong.config
|
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
|
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/test/audio/teto/SOTD.zip
|
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/
|
||||||
mkdir -p ~/.local/share/tetosong/audio/teto/
|
mkdir -p ~/.local/share/tetosong/audio/teto/
|
||||||
unzip -o /tmp/SOTD.zip -d ~/.local/share/tetosong/audio/teto/
|
unzip -o /tmp/SOTD.zip -d ~/.local/share/tetosong/audio/teto/
|
||||||
@@ -38,10 +31,10 @@ case $yn in
|
|||||||
* ) 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/vocafortunes
|
||||||
mkdir -p ~/.local/share/tetosong/fortunes/tetosotd
|
mkdir -p ~/.local/share/tetosong/vocafortunes/vocadb
|
||||||
curl -sLo ~/.local/share/tetosong/fortunes/tetosotd/tetofortunes https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/test/fortunes/tetosotd/tetofortunes
|
curl -sLo ~/.local/share/tetosong/vocafortunes/vocadb/140308 https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/vocafortunes/vocadb/140308
|
||||||
curl -sLo ~/.local/share/tetosong/fortunes/tetosotd/tetofortunes.dat https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/test/fortunes/tetosotd/tetofortunes.dat
|
|
||||||
|
|
||||||
# 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 +43,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/test/autoupdater/tetosong.service
|
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/test/autoupdater/tetosong.timer
|
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 daemon-reload
|
||||||
systemctl --user enable tetosong.timer
|
systemctl --user enable tetosong.timer
|
||||||
systemctl --user start tetosong.timer
|
systemctl --user start tetosong.timer
|
||||||
@@ -61,6 +54,8 @@ 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/test/tetosong
|
curl -sLo ~/.local/bin/tetosong https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/tetosong
|
||||||
|
curl -sLo ~/.local/bin/vocafortune https://raw.githubusercontent.com/eric5949/tetosong/refs/heads/main/vocafortune
|
||||||
chmod +x ~/.local/bin/tetosong
|
chmod +x ~/.local/bin/tetosong
|
||||||
|
chmod +x ~/.local/bin/vocafortune
|
||||||
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 :)"
|
||||||
|
|||||||
@@ -4,10 +4,10 @@ CHILDREN="true" # If we want child voicebanks, we do so we can get all songs fro
|
|||||||
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.
|
||||||
RESULTS=100 # Max results. Limit is 100.
|
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.
|
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.
|
if [ ! -f dates/${ARTIST}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.
|
echo '{"lastDate": "2000-04-21T00:00:00Z"}' > dates/${ARTIST}var.json # if it doesn't exist, we create it with a default date back in 2000.
|
||||||
fi
|
fi
|
||||||
PREVDATE=$(jq -r '.lastDate' var.json)
|
PREVDATE=$(jq -r '.lastDate' dates/${ARTIST}var.json)
|
||||||
AFTERDATE=$(date -u -d "$PREVDATE + 1 Second" +"%Y-%m-%dT%H:%M:%SZ")
|
AFTERDATE=$(date -u -d "$PREVDATE + 1 Second" +"%Y-%m-%dT%H:%M:%SZ")
|
||||||
echo "Result: $AFTERDATE"
|
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.
|
#rm tetofortunes var.json tetofortunes.dat # during testing we will remove everything, or if we want to regenerate the fortune file from scratch.
|
||||||
@@ -23,9 +23,9 @@ if [ "$SONGS" -eq 0 ]; then
|
|||||||
echo "Result is empty. No more songs."
|
echo "Result is empty. No more songs."
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
DATE=$(echo "$DATA" | jq -r '.items[0].publishDate')
|
DATE=$(date -u +%Y-%m-%dT00:00:00Z)
|
||||||
echo "DATE: $DATE"
|
echo "DATE: $DATE"
|
||||||
echo "{\"lastDate\": \"$DATE\"}" > var.json
|
echo "{\"lastDate\": \"$DATE\"}" > dates/${ARTIST}var.json
|
||||||
# looping the api to get all songs we need.
|
# looping the api to get all songs we need.
|
||||||
while true; do
|
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"
|
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"
|
||||||
@@ -47,8 +47,8 @@ while true; do
|
|||||||
echo "$url"
|
echo "$url"
|
||||||
echo ""
|
echo ""
|
||||||
echo "▼・ᴗ・▼"
|
echo "▼・ᴗ・▼"
|
||||||
echo "%"
|
echo "\`"
|
||||||
done >> tetofortunes
|
done >> vocafortunes/vocadb/$ARTIST
|
||||||
if [ "$START" -ge "$MAX" ]; then
|
if [ "$START" -ge "$MAX" ]; then
|
||||||
echo "Reached max results. Stopping."
|
echo "Reached max results. Stopping."
|
||||||
break
|
break
|
||||||
@@ -56,6 +56,42 @@ while true; do
|
|||||||
echo "Done!"
|
echo "Done!"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
readarray -d '`' tetosongs < vocafortunes/vocadb/$ARTIST
|
||||||
|
|
||||||
|
readarray -td '' dups < <(
|
||||||
|
(( ${#tetosongs[@]} == 0 )) ||
|
||||||
|
printf '%s\0' "${tetosongs[@]}" |
|
||||||
|
LC_ALL=C sort -z |
|
||||||
|
LC_ALL=C uniq -zd
|
||||||
|
)
|
||||||
|
readarray -td '' uniq < <(
|
||||||
|
(( ${#tetosongs[@]} == 0 )) ||
|
||||||
|
printf '%s\0' "${tetosongs[@]}" |
|
||||||
|
LC_ALL=C sort -z |
|
||||||
|
LC_ALL=C uniq -zu
|
||||||
|
)
|
||||||
|
|
||||||
|
echo ${#tetosongs[@]}
|
||||||
|
if ((${#dups[@]} > 0)); then
|
||||||
|
echo >&2 "array has duplicates:"
|
||||||
|
echo ${#dups[@]}
|
||||||
|
fi
|
||||||
|
if ((${#uniq[@]} > 0)); then
|
||||||
|
echo >&2 "Uniques:"
|
||||||
|
echo ${#uniq[@]}
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf >&2 '%s' "${dups[@]}" > dups
|
||||||
|
printf >&2 '%s' "${uniq[@]}" > uniq
|
||||||
|
|
||||||
|
cat uniq > fixed
|
||||||
|
cat dups >> fixed
|
||||||
|
sed -i '1,/^TETO SONG OF THE DAY!/{/^TETO SONG OF THE DAY!$/!d}' fixed
|
||||||
|
rm vocafortunes/vocadb/$ARTIST
|
||||||
|
rm uniq dups
|
||||||
|
mv fixed vocafortunes/vocadb/$ARTIST
|
||||||
|
|
||||||
# create the fortune database from tetofortunes
|
# create the fortune database from tetofortunes
|
||||||
rm tetofortunes.dat # delete the old database if it extists.
|
#rm tetofortunes.dat # delete the old database if it extists.
|
||||||
strfile -c % tetofortunes tetofortunes.dat
|
#strfile -c % tetofortunes tetofortunes.dat
|
||||||
|
|||||||
51
tetosong
51
tetosong
@@ -1,4 +1,9 @@
|
|||||||
#!/usr/bin/bash
|
#!/usr/bin/bash
|
||||||
|
#
|
||||||
|
# Updated 5-1-26 to use new vocafortune script and not require fortune/misfortune.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
|
||||||
# argument handling
|
# argument handling
|
||||||
while [[ $# -gt 0 ]]; do
|
while [[ $# -gt 0 ]]; do
|
||||||
case $1 in
|
case $1 in
|
||||||
@@ -31,41 +36,17 @@ 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)"
|
||||||
|
|
||||||
# check which fortune command is installed if any and then run it
|
vocafortune >> /tmp/fortune
|
||||||
if ! [ -x "$(command -v fortune)" ]; then
|
if [ "$AUDIO" = "YES" ]; then
|
||||||
if ! [ -x "$(command -v misfortune)" ]; then
|
if grep -q "SV2" /tmp/fortune; then
|
||||||
echo 'No fortune commmand is installed, exiting!'
|
nohup ffplay -nodisp -autoexit -v quiet ~/.local/share/tetosong/audio/teto/sv2SOTD.wav 2>/dev/null >/dev/null &
|
||||||
exit 1
|
elif grep -q "SV" /tmp/fortune; then
|
||||||
else
|
nohup ffplay -nodisp -autoexit -v quiet ~/.local/share/tetosong/audio/teto/svSOTD.wav 2>/dev/null >/dev/null &
|
||||||
misfortune ~/.local/share/tetosong/fortunes/*/* >> /tmp/fortune # fortune and misfortune handle directories differently
|
elif grep -q "重音テト" /tmp/fortune; then
|
||||||
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
|
nohup ffplay -nodisp -autoexit -v quiet ~/.local/share/tetosong/audio/teto/utSOTD.wav 2>/dev/null >/dev/null &
|
||||||
if grep -q "SV2" /tmp/fortune; then
|
else
|
||||||
nohup ffplay -nodisp -autoexit -v quiet ~/.local/share/tetosong/audio/teto/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 &
|
||||||
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 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
|
fi
|
||||||
|
fi
|
||||||
cat /tmp/fortune
|
cat /tmp/fortune
|
||||||
rm /tmp/fortune
|
rm /tmp/fortune
|
||||||
fi
|
|
||||||
|
|||||||
10
vocafortune
Executable file
10
vocafortune
Executable file
@@ -0,0 +1,10 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# VOCAFORTUNE! Make tetosong not need fortune anymore!
|
||||||
|
while [ $# -gt 0 ]; do export "${1#-}"="$2"; shift 2; done # now it can be -l ./vocafortunes like a proper program!!!! # argument handling # i can use this anywhere!!!!!!! save this you!!!!!!
|
||||||
|
#fortune script
|
||||||
|
shopt -s globstar
|
||||||
|
if [ -z "$l" ]; then export "DIR"="$HOME/.local/share/tetosong/vocafortunes/**"; else export "DIR"="$l/**"; fi
|
||||||
|
for file in $DIR; do if [[ -f "$file" ]]; then readarray -td '`' temp < "$file"; array+=("${temp[@]}"); fi; done
|
||||||
|
export "ITEMS"="${#array[@]}"
|
||||||
|
export "CHOICE"="$(shuf -i 1-$ITEMS -n 1)"
|
||||||
|
echo "${array[$CHOICE]}"
|
||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user