Skip to content

Commit

Permalink
Merge pull request #20 from Arial-Z/dev
Browse files Browse the repository at this point in the history
prepare new release
  • Loading branch information
Arial-Z authored Jul 13, 2023
2 parents 392d423 + 98a5c53 commit df0d725
Show file tree
Hide file tree
Showing 7 changed files with 124 additions and 67 deletions.
8 changes: 6 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ Here what will be imported for each of your animes :
1: # Season 1 import
title: "Yuru Camp△" # Title from Anilist
user_rating: 8.3 # Rating from Anilist or MAL
label: score # Add label score to use PMM overlays
label: Fall 2021, score # Add label score to use PMM overlays and also add the season label (optionnal)
2: # Season 2 import
title: "Yuru Camp△ SEASON 2" # Title from Anilist
user_rating: 8.5 # Rating from Anilist or MAL
label: score # Add label score to use PMM overlays
label: Fall 2022,score # Add label score to use PMM overlays and also add the season label (optionnal)
critic_rating: 8.4 # Show rating average rating of the seasons (Or Anilist/ MAL score if no seasons)
```
Anilist Posters for animes and seasons can also be downloaded and imported inside the PMM assets folder
Expand Down Expand Up @@ -91,12 +91,16 @@ MAIN_TITLE_ENG=No
SORT_TITLE_ENG=No
# Download poster (Yes/No)
POSTER_DOWNLOAD=Yes
# Download seasons poster (Yes/No)
POSTER_SEASON_DOWNLOAD=Yes
# Source for poster (MAL / ANILIST)
POSTER_SOURCE=ANILIST
# Ignore seasons rating and poster (Yes/No)
IGNORE_SEASONS=No
# Anilist have some full uppercase title, this settings will remove them "86 EIGHTY-SIX" > "86 Eighty-Six" (Yes/No)
REDUCE_TITLE_CAPS=Yes
#Add the anime season to the season label in plex (Fall 2022, Spring 2021, ...)
SEASON_YEAR=No
# Mal Data cache time (in days min : 1)
DATA_CACHE_TIME=3
Expand Down
11 changes: 5 additions & 6 deletions animes-renamer.sh
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,9 @@ do
line=$(awk -F"\t" '{print $1}' "$SCRIPT_FOLDER/tmp/plex_animes_export.tsv" | grep -w -n "$tvdb_id" | cut -d : -f 1)
plex_title=$(sed -n "${line}p" "$SCRIPT_FOLDER/tmp/plex_animes_export.tsv" | awk -F"\t" '{print $2}')
asset_name=$(sed -n "${line}p" "$SCRIPT_FOLDER/tmp/plex_animes_export.tsv" | awk -F"\t" '{print $3}')
last_season=$(sed -n "${line}p" "$SCRIPT_FOLDER/tmp/plex_animes_export.tsv" | awk -F"\t" '{print $4}')
total_seasons=$(sed -n "${line}p" "$SCRIPT_FOLDER/tmp/plex_animes_export.tsv" | awk -F"\t" '{print $5}')
seasons_list=$(sed -n "${line}p" "$SCRIPT_FOLDER/tmp/plex_animes_export.tsv" | awk -F"\t" '{print $4}')
printf "%s\t\t - Found override for tvdb id : %s / anilist id : %s\n" "$(date +%H:%M:%S)" "$tvdb_id" "$anilist_id" | tee -a "$LOG"
printf "%s\t%s\t%s\t%s\t%s\t%s\n" "$tvdb_id" "$anilist_id" "$plex_title" "$asset_name" "$last_season" "$total_seasons" >> "$SCRIPT_FOLDER/ID/animes.tsv"
printf "%s\t%s\t%s\t%s\t%s\n" "$tvdb_id" "$anilist_id" "$plex_title" "$asset_name" "$seasons_list" >> "$SCRIPT_FOLDER/ID/animes.tsv"
fi
fi
done < "$SCRIPT_FOLDER/override-ID-animes.tsv"
Expand All @@ -73,7 +72,7 @@ do
fi
fi
done < "$SCRIPT_FOLDER/tmp/plex_animes_export.tsv"
printf "%s - Done\n\n" "$(date +%H:%M:%S)"
printf "%s - Done\n\n" "$(date +%H:%M:%S)" | tee -a "$LOG"

# Create an ongoing list at $SCRIPT_FOLDER/data/ongoing.csv
printf "%s - Creating Anilist airing list\n" "$(date +%H:%M:%S)"
Expand Down Expand Up @@ -129,11 +128,11 @@ printf "%s - Done\n\n" "$(date +%H:%M:%S)"
# write PMM metadata file from ID/animes.tsv and jikan API
printf "%s - Start wrinting the metadata file \n" "$(date +%H:%M:%S)" | tee -a "$LOG"
printf "metadata:\n" > "$METADATA"
while IFS=$'\t' read -r tvdb_id anilist_id plex_title asset_name last_season total_seasons
while IFS=$'\t' read -r tvdb_id anilist_id plex_title asset_name seasons_list
do
printf "%s\t - Writing metadata for tvdb id : %s / Anilist id : %s \n" "$(date +%H:%M:%S)" "$tvdb_id" "$anilist_id" | tee -a "$LOG"
write-metadata
printf "%s\t - Done\n" "$(date +%H:%M:%S)" | tee -a "$LOG"
done < "$SCRIPT_FOLDER/ID/animes.tsv"
printf "%s - Run finished\n\n" "$(date +%H:%M:%S)" | tee -a "$LOG"
printf "%s - Run finished\n\n\n" "$(date +%H:%M:%S)" | tee -a "$LOG"
exit 0
4 changes: 4 additions & 0 deletions default.env
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,16 @@ MAIN_TITLE_ENG=No
SORT_TITLE_ENG=No
# Download poster (Yes/No)
POSTER_DOWNLOAD=Yes
# Download seasons poster (Yes/No)
POSTER_SEASON_DOWNLOAD=Yes
# Source for poster (MAL / ANILIST)
POSTER_SOURCE=ANILIST
# Ignore seasons rating and poster (Yes/No)
IGNORE_SEASONS=No
# Anilist have some full uppercase title, this settings will remove them "86 EIGHTY-SIX" > "86 Eighty-Six" (Yes/No)
REDUCE_TITLE_CAPS=Yes
#Add the anime season to the season label in plex (Fall 2022, Spring 2021, ...)
SEASON_YEAR=No
# Mal Data cache time (in days min : 1)
DATA_CACHE_TIME=3

Expand Down
123 changes: 75 additions & 48 deletions functions.sh
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,9 @@ function download-anime-id-mapping () {
function get-anilist-id () {
if [[ $media_type == "animes" ]]
then
jq --arg tvdb_id "$tvdb_id" '.[] | select( .tvdb_id == $tvdb_id ) | select( .tvdb_season == "1" or .tvdb_season == "-1" ) | select( .tvdb_epoffset == "0" ) | .anilist_id' -r "$SCRIPT_FOLDER/tmp/list-animes-id.json"
jq --arg tvdb_id "$tvdb_id" '.[] | select( .tvdb_id == $tvdb_id ) | select( .tvdb_season == "1" or .tvdb_season == "-1" ) | select( .tvdb_epoffset == "0" ) | .anilist_id' -r "$SCRIPT_FOLDER/tmp/list-animes-id.json" | head -n 1
else
jq --arg imdb_id "$imdb_id" '.[] | select( .imdb_id == $imdb_id ) | .anilist_id' -r "$SCRIPT_FOLDER/tmp/list-movies-id.json"
jq --arg imdb_id "$imdb_id" '.[] | select( .imdb_id == $imdb_id ) | .anilist_id' -r "$SCRIPT_FOLDER/tmp/list-movies-id.json" | head -n 1
fi
}
function get-mal-id () {
Expand All @@ -64,7 +64,7 @@ function get-anilist-infos () {
curl -s 'https://graphql.anilist.co/' \
-X POST \
-H 'content-type: application/json' \
--data '{ "query": "{ Media(type: ANIME, id: '"$anilist_id"') { title { romaji(stylised:false), english(stylised:false) }, averageScore, genres, tags { name, rank },studios { edges { node { name, isAnimationStudio } } }, coverImage { extraLarge }, idMal} }" }' > "$SCRIPT_FOLDER/data/anilist-$anilist_id.json" -D "$SCRIPT_FOLDER/tmp/anilist-limit-rate.txt"
--data '{ "query": "{ Media(type: ANIME, id: '"$anilist_id"') { title { romaji(stylised:false), english(stylised:false) }, averageScore, genres, tags { name, rank },studios { edges { node { name, isAnimationStudio } } }, season, seasonYear, coverImage { extraLarge }, idMal} }" }' > "$SCRIPT_FOLDER/data/anilist-$anilist_id.json" -D "$SCRIPT_FOLDER/tmp/anilist-limit-rate.txt"
rate_limit=0
rate_limit=$(grep -oP '(?<=x-ratelimit-remaining: )[0-9]+' "$SCRIPT_FOLDER/tmp/anilist-limit-rate.txt")
if [[ rate_limit -lt 3 ]]
Expand Down Expand Up @@ -148,15 +148,11 @@ function less-caps-title () {
function get-score () {
anime_score=0
anime_score=$(jq '.data.Media.averageScore' -r "$SCRIPT_FOLDER/data/anilist-$anilist_id.json" | awk '{print $1 / 10 }')
if [[ "$anime_score" == "null" ]] || [[ "$anime_score" == '' ]]
if [[ "$anime_score" == "0" ]]
then
rm "$SCRIPT_FOLDER/data/anilist-$anilist_id.json"
get-anilist-infos
anime_score=$(jq '.data.Media.averageScore' -r "$SCRIPT_FOLDER/data/anilist-$anilist_id.json" | awk '{print $1 / 10 }')
if [[ "$anime_score" == "null" ]]
then
echo 0
fi
else
echo "$anime_score"
fi
Expand All @@ -180,7 +176,7 @@ function get-mal-score () {
fi
}
function get-tags () {
(jq '.data.Media.genres | .[]' -r "$SCRIPT_FOLDER/data/anilist-$anilist_id.json" && jq '.data.Media.tags | .[] | select( .rank >= 70 ) | .name' -r "$SCRIPT_FOLDER/data/anilist-$anilist_id.json") | awk '{print $0}' | paste -s -d, -
(jq '.data.Media.genres | .[]' -r "$SCRIPT_FOLDER/data/anilist-$anilist_id.json" && jq '.data.Media.tags | .[] | select( .rank >= 70 ) | .name' -r "$SCRIPT_FOLDER/data/anilist-$anilist_id.json") | awk '{print $0}' | paste -sd ','
}
function get-studios() {
if awk -F"\t" '{print $2}' "$SCRIPT_FOLDER/$OVERRIDE" | grep -q -w "$anilist_id"
Expand All @@ -203,6 +199,9 @@ function get-studios() {
fi
fi
}
function get-animes-season-year () {
(jq '.data.Media.season' -r "$SCRIPT_FOLDER/data/anilist-$anilist_id.json" && jq '.data.Media.seasonYear' -r "$SCRIPT_FOLDER/data/anilist-$anilist_id.json") | paste -sd ' ' | tr '[:upper:]' '[:lower:]' | sed "s/\( \|^\)\(.\)/\1\u\2/g"
}
function get-poster () {
if [[ $POSTER_DOWNLOAD == "Yes" ]]
then
Expand Down Expand Up @@ -258,7 +257,7 @@ function get-poster () {
fi
}
function get-season-poster () {
if [[ $POSTER_DOWNLOAD == "Yes" ]]
if [[ $POSTER_SEASON_DOWNLOAD == "Yes" ]]
then
if [[ $season_number -lt 10 ]]
then
Expand Down Expand Up @@ -320,62 +319,90 @@ function get-season-poster () {
function get-season-infos () {
anilist_backup_id=$anilist_id
season_check=$(jq --arg anilist_id "$anilist_id" '.[] | select( .anilist_id == $anilist_id ) | .tvdb_season' -r "$SCRIPT_FOLDER/tmp/list-animes-id.json")
if [[ $season_check != -1 ]] && [[ $total_seasons -ge 2 ]]
first_season=$(echo "$seasons_list" | awk -F "," '{print $1}')
last_season=$(echo "$seasons_list" | awk -F "," '{print $NF}')
total_seasons=$(echo "$seasons_list" | awk -F "," '{print NF}')
if [[ "$first_season" -eq 0 ]]
then
total_seasons=$((total_seasons - 1))
fi
if [[ $season_check != -1 ]]
then
total_score=0
score_season=0
printf " seasons:\n" >> "$METADATA"
if [[ $last_season -eq 1 ]] && [[ $total_seasons -eq 2 ]]
then
printf " 0:\n label.remove: score\n 1:\n label.remove: score\n" >> "$METADATA"
anilist_id=$anilist_backup_id
if [[ $RATING_SOURCE == "ANILIST" ]]
then
score=$(get-score)
else
score=$(get-mal-score)
fi
score=$(printf '%.*f\n' 1 "$score")
else
if [[ $last_season -ne $total_seasons ]]
IFS=","
for season_number in $seasons_list
do
if [[ $season_number -eq 0 ]]
then
printf " 0:\n label.remove: score\n" >> "$METADATA"
fi
season_number=1
total_score=0
while [ $season_number -le "$last_season" ];
do
anilist_id=$(jq --arg tvdb_id "$tvdb_id" --arg season_number "$season_number" '.[] | select( .tvdb_id == $tvdb_id ) | select( .tvdb_season == $season_number ) | select( .tvdb_epoffset == "0" ) | .anilist_id' -r "$SCRIPT_FOLDER/tmp/list-animes-id.json")
if [[ -n "$anilist_id" ]]
else
if [[ $last_season -eq 1 ]]
then
get-anilist-infos
romaji_title=$(get-romaji-title)
english_title=$(get-english-title)
if [[ $MAIN_TITLE_ENG == "Yes" ]]
then
english_title=$romaji_title
fi
anilist_id=$anilist_backup_id
anime_season=$(get-animes-season-year)
if [[ $RATING_SOURCE == "ANILIST" ]]
then
score_season=$(get-score)
else
score_season=$(get-mal-score)
fi
score_season=$(printf '%.*f\n' 1 "$score_season")
if [[ $MAIN_TITLE_ENG == "Yes" ]]
if [[ $SEASON_YEAR == "Yes" ]]
then
printf " %s:\n title: |-\n %s\n user_rating: %s\n label: score\n" "$season_number" "$english_title" "$score_season" >> "$METADATA"
anime_season=$(get-animes-season-year)
printf " 1:\n label.sync: %s\n" "$anime_season" >> "$METADATA"
else
printf " %s:\n title: |-\n %s\n user_rating: %s\n label: score\n" "$season_number" "$romaji_title" "$score_season" >> "$METADATA"
printf " 1:\n label.remove: score\n" >> "$METADATA"
fi
total_score=$(echo | awk -v v1="$score_season" -v v2="$total_score" '{print v1 + v2 }')
get-season-poster
else
anilist_id=$(jq --arg tvdb_id "$tvdb_id" --arg season_number "$season_number" '.[] | select( .tvdb_id == $tvdb_id ) | select( .tvdb_season == $season_number ) | select( .tvdb_epoffset == "0" ) | .anilist_id' -r "$SCRIPT_FOLDER/tmp/list-animes-id.json" | head -n 1)
if [[ -n "$anilist_id" ]]
then
get-anilist-infos
romaji_title=$(get-romaji-title)
english_title=$(get-english-title)
if [[ $MAIN_TITLE_ENG == "Yes" ]]
then
english_title=$romaji_title
fi
if [[ $RATING_SOURCE == "ANILIST" ]]
then
score_season=$(get-score)
else
score_season=$(get-mal-score)
fi
score_season=$(printf '%.*f\n' 1 "$score_season")
anime_season=$(get-animes-season-year)
if [[ $MAIN_TITLE_ENG == "Yes" ]]
then
if [[ $SEASON_YEAR == "Yes" ]]
then
anime_season=$(get-animes-season-year)
printf " %s:\n title: |-\n %s\n user_rating: %s\n label.sync: %s,score\n" "$season_number" "$english_title" "$score_season" "$anime_season" >> "$METADATA"
else
printf " %s:\n title: |-\n %s\n user_rating: %s\n label: score\n" "$season_number" "$english_title" "$score_season" >> "$METADATA"
fi
else
if [[ $SEASON_YEAR == "Yes" ]]
then
anime_season=$(get-animes-season-year)
printf " %s:\n title: |-\n %s\n user_rating: %s\n label.sync: %s,score\n" "$season_number" "$romaji_title" "$score_season" "$anime_season" >> "$METADATA"
else
printf " %s:\n title: |-\n %s\n user_rating: %s\n label: score\n" "$season_number" "$romaji_title" "$score_season" >> "$METADATA"
fi
fi
total_score=$(echo | awk -v v1="$score_season" -v v2="$total_score" '{print v1 + v2 }')
get-season-poster
fi
fi
((season_number++))
done
score=$(echo | awk -v v1="$total_score" -v v2="$last_season" '{print v1 / v2 }')
score=$(printf '%.*f\n' 1 "$score")
fi
fi
done
score=$(echo | awk -v v1="$total_score" -v v2="$total_seasons" '{print v1 / v2 }')
score=$(printf '%.*f\n' 1 "$score")
else
anilist_id=$anilist_backup_id
if [[ $RATING_SOURCE == "ANILIST" ]]
then
score=$(get-score)
Expand Down
2 changes: 1 addition & 1 deletion movies-renamer.sh
Original file line number Diff line number Diff line change
Expand Up @@ -84,5 +84,5 @@ do
write-metadata
printf "%s\t - Done\n" "$(date +%H:%M:%S)" | tee -a "$LOG"
done < "$SCRIPT_FOLDER/ID/movies.tsv"
printf "%s - Run finished\n\n" "$(date +%H:%M:%S)" | tee -a "$LOG"
printf "%s - Run finished\n\n\n" "$(date +%H:%M:%S)" | tee -a "$LOG"
exit 0
6 changes: 3 additions & 3 deletions plex_animes_export.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,10 @@
location = str(video.locations)[2:-2]
path = pathlib.PurePath(location)
folder = str(path.name)
total_seasons = str(video.childCount)
seasons = str(video.seasons())
last_season = re.search("(\d+)(?!.*\d)", seasons).group()
export=(tvdb + "\t" + title + "\t" + folder + "\t" + last_season + "\t" + total_seasons + "\n")
seasonslist = re.findall("\-(\d*)\>", seasons)
cleanseasonslist = ',' .join(seasonslist)
export=(tvdb + "\t" + title + "\t" + folder + "\t" + str(cleanseasonslist) + "\n")
export_plex.write(export)
else :
export=(title + " no id found" + ids + "\n")
Expand Down
37 changes: 30 additions & 7 deletions seasonal-animes-download.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,37 @@
# SCRIPT VARIABLES
export LC_ALL=en_US.UTF-8
SCRIPT_FOLDER=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)
media_type=seasonal
source "$SCRIPT_FOLDER/.env"
source "$SCRIPT_FOLDER/functions.sh"
media_type=animes

#SCRIPT
# check if files and folder exist
if [ ! -d "$SCRIPT_FOLDER/data" ] #check if exist and create folder for json data
then
mkdir "$SCRIPT_FOLDER/data"
fi
if [ ! -d "$SCRIPT_FOLDER/tmp" ] #check if exist and create folder for json data
then
mkdir "$SCRIPT_FOLDER/tmp"
fi
:> "$SCRIPT_FOLDER/data/seasonal.tsv"

#SCRIPT
printf "%s - Starting script\n\n" "$(date +%H:%M:%S)" | tee -a "$LOG"
download-anime-id-mapping
printf "%s - checking current season\n" "$(date +%H:%M:%S)" | tee -a "$LOG"
curl -s -L -A "Mozilla/5.0 (X11; Linux x86_64)" "https://livechart.me/" -o "$SCRIPT_FOLDER/tmp/this-season.html"
season=$(awk -v IGNORECASE=1 -v RS='</title' 'RT{gsub(/.*<title[^>]*>/,"");print;exit}' "$SCRIPT_FOLDER/tmp/this-season.html" | awk '{print $1}'| tr '[:lower:]' '[:upper:]')
year=$(awk -v IGNORECASE=1 -v RS='</title' 'RT{gsub(/.*<title[^>]*>/,"");print;exit}' "$SCRIPT_FOLDER/tmp/this-season.html" | awk '{print $2}')
printf "\nCurrent season : %s %s\n\n" "$season" "$year"
printf "%s - Current season : %s %s\n\n" "$(date +%H:%M:%S)" "$season" "$year" | tee -a "$LOG"
printf "%s - Creating seasonal list\n" "$(date +%H:%M:%S)" | tee -a "$LOG"
printf "%s\t - Downloading anilist season list\n" "$(date +%H:%M:%S)" | tee -a "$LOG"
curl -s 'https://graphql.anilist.co/' \
-X POST \
-H 'content-type: application/json' \
--data '{ "query": "{ Page(page: 1, perPage: 100) { pageInfo { hasNextPage } media(type: ANIME, seasonYear: '"$year"' season: '"$season"', format: TV, sort: POPULARITY_DESC) { id } } }" }' | jq '.data.Page.media[] | .id' > "$SCRIPT_FOLDER/tmp/seasonal-anilist.tsv"

printf "%s\t - Done\n" "$(date +%H:%M:%S)" | tee -a "$LOG"
printf "%s\t - Sorting seasonal list\n" "$(date +%H:%M:%S)" | tee -a "$LOG"
while read -r anilist_id
do
tvdb_id=a
Expand All @@ -27,18 +42,26 @@ do
tvdb_id=$(get-tvdb-id)
if [[ "$tvdb_id" == 'null' ]] || [[ "${#tvdb_id}" == '0' ]]
then
printf "Seasonal invalid TVDB ID for Anilist : %s\n" "$anilist_id"
printf "%s\t\t - Seasonal invalid TVDB ID for Anilist : %s\n" "$(date +%H:%M:%S)" "$anilist_id" | tee -a "$LOG"
continue
else
tvdb_season=$(jq --arg anilist_id "$anilist_id" '.[] | select( .anilist_id == $anilist_id ) | .tvdb_season' -r "$SCRIPT_FOLDER/tmp/list-animes-id.json")
tvdb_epoffset=$(jq --arg anilist_id "$anilist_id" '.[] | select( .anilist_id == $anilist_id ) | .tvdb_epoffset' -r "$SCRIPT_FOLDER/tmp/list-animes-id.json")
if [[ "$tvdb_season" -eq 1 ]] && [[ "$tvdb_epoffset" -eq 0 ]]
then
printf "%s\n" "$tvdb_id" >> "$SCRIPT_FOLDER/data/seasonal.tsv"
printf "%s\t\t - New seasonal anime adding to list : Anilist id : %s / tvdb id : %s\n" "$(date +%H:%M:%S)" "$anilist_id" "$tvdb_id" | tee -a "$LOG"
else
printf "%s\t\t - Sequel seasonal anime not adding to list : Anilist id : %s / tvdb id : %s\n" "$(date +%H:%M:%S)" "$anilist_id" "$tvdb_id" | tee -a "$LOG"
fi
fi
done < "$SCRIPT_FOLDER/tmp/seasonal-anilist.tsv"
printf "%s - Done\n\n" "$(date +%H:%M:%S)" | tee -a "$LOG"


tvdb_list=$(head -"$DOWNLOAD_LIMIT" "$SCRIPT_FOLDER/data/seasonal.tsv" | awk '{printf("%s,",$0)}' | sed 's/,\s*$//')
printf "list of tvdb id to be added : %s\n" "$tvdb_list"
printf "collections:\n seasonal animes download:\n tvdb_show: %s\n sync_mode: sync\n sonarr_add_missing: true\n build_collection: false\n" "$tvdb_list" > "$DOWNLOAD_ANIMES_COLLECTION"
printf "%s - Wrinting seasonal collection\n" "$(date +%H:%M:%S)" | tee -a "$LOG"
printf "%s - Seasonal list : tvdb id added : %s\n" "$(date +%H:%M:%S)" "$tvdb_list"| tee -a "$LOG"
printf "collections:\n seasonal animes download:\n tvdb_show: %s\n sync_mode: append\n sonarr_add_missing: true\n build_collection: false\n" "$tvdb_list" > "$DOWNLOAD_ANIMES_COLLECTION"
printf "%s - Done\n\n" "$(date +%H:%M:%S)" | tee -a "$LOG"
printf "%s - Run finished\n\n\n" "$(date +%H:%M:%S)" | tee -a "$LOG"

0 comments on commit df0d725

Please sign in to comment.