fine tuning and readme
parent
9373c99805
commit
b18605004b
@ -1,196 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
domain="http://localhost:5500" # Replace with your actual domain
|
|
||||||
main_folder="test_directory_not_elaborated"
|
|
||||||
|
|
||||||
# Function to compress and generate HTML links
|
|
||||||
compress_and_generate_links() {
|
|
||||||
local folder="$1"
|
|
||||||
local compressed_folder="$folder/compressed"
|
|
||||||
mkdir -p "$compressed_folder"
|
|
||||||
|
|
||||||
declare -a text_files
|
|
||||||
declare -a picture_files
|
|
||||||
declare -a video_files
|
|
||||||
declare -a audio_files
|
|
||||||
declare -a other_files
|
|
||||||
|
|
||||||
for file in "$folder"/*; do
|
|
||||||
if [ -f "$file" ]; then
|
|
||||||
case "$file" in
|
|
||||||
*.txt|*.md|*.sh|*.html)
|
|
||||||
text_files+=("$file")
|
|
||||||
;;
|
|
||||||
*.jpeg | *.jpg|*.png|*.gif|*.heic)
|
|
||||||
picture_files+=("$file")
|
|
||||||
;;
|
|
||||||
*.mp4|*.mov|*.mkv|*.avi)
|
|
||||||
video_files+=("$file")
|
|
||||||
;;
|
|
||||||
*.mp3|*.wav|*.flac|*.aiff)
|
|
||||||
audio_files+=("$file")
|
|
||||||
;;
|
|
||||||
*index.html) # Exclude index.html files TODO spiegalo poi
|
|
||||||
continue
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
other_files+=("$file")
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Create index.html file
|
|
||||||
index_file="$folder/index.html"
|
|
||||||
echo "<html>
|
|
||||||
<head>
|
|
||||||
<title>RADICAL LS! -> $folder</title>
|
|
||||||
<style>
|
|
||||||
body {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contents{
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contents div{
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
img, video {
|
|
||||||
width: 50%;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>" > "$index_file"
|
|
||||||
|
|
||||||
# Add link to parent folder at the top
|
|
||||||
parent_folder="$(dirname "$folder")"
|
|
||||||
echo "<p><a class="arrow_back" href=\"$domain/$parent_folder\">⬳</a></p>" >> "$index_file"
|
|
||||||
|
|
||||||
# Add links to subfolders with their names displayed
|
|
||||||
subfolders=()
|
|
||||||
for subfolder in "$folder"/*; do
|
|
||||||
if [ -d "$subfolder" ] && [ ! "$(basename "$subfolder")" == "compressed" ]; then
|
|
||||||
subfolder_name=$(basename "$subfolder")
|
|
||||||
subfolders+=("<p><a href=\"$domain/$subfolder\"><span class="arrow_forward">⟿</span> $subfolder_name</a></p>")
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ ${#subfolders[@]} -gt 0 ]; then
|
|
||||||
echo "" >> "$index_file"
|
|
||||||
for subfolder_link in "${subfolders[@]}"; do
|
|
||||||
echo "$subfolder_link" >> "$index_file"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "<h1>$folder</h1><div class='contents'>" >> "$index_file"
|
|
||||||
|
|
||||||
# Display text files in the subfolder
|
|
||||||
if [ ${#text_files[@]} -gt 0 ]; then
|
|
||||||
echo "<div class='text'>" >> "$index_file"
|
|
||||||
for text_file in "${text_files[@]}"; do
|
|
||||||
echo "<div><a href=\"$domain/$text_file\" target=\"_blank\">$text_file</a><br><p></p></div>" >> "$index_file"
|
|
||||||
done
|
|
||||||
echo "</div>" >> "$index_file"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Compress and display picture files in the subfolder
|
|
||||||
if [ ${#picture_files[@]} -gt 0 ]; then
|
|
||||||
echo "<div class='pics'>" >> "$index_file"
|
|
||||||
for picture_file in "${picture_files[@]}"; do
|
|
||||||
compressed_file="$compressed_folder/$(basename "$picture_file")_compressed.jpg"
|
|
||||||
if [ ! -f "$compressed_file" ]; then
|
|
||||||
convert "$picture_file" -resize 30% -dither Riemersma -colors 3 "$compressed_file" #TODO
|
|
||||||
fi
|
|
||||||
echo "<div>
|
|
||||||
<img loading=\"lazy\" src=\"$domain/$compressed_file\" alt=\"Compressed Image\">
|
|
||||||
<a href=\"$domain/$picture_file\" target=\"_blank\">Original ⇝ $picture_file</a>
|
|
||||||
</div>" >> "$index_file" #TODO: fix here the not-compressed path
|
|
||||||
done
|
|
||||||
echo "</div>" >> "$index_file"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Compress and display video files in the subfolder
|
|
||||||
if [ ${#video_files[@]} -gt 0 ]; then
|
|
||||||
echo "<div class='vids'>" >> "$index_file"
|
|
||||||
for video_file in "${video_files[@]}"; do
|
|
||||||
compressed_file="$compressed_folder/$(basename "$video_file")_compressed.mp4"
|
|
||||||
if [ ! -f "$compressed_file" ]; then
|
|
||||||
ffmpeg -i "$video_file" -vf "scale=640:480" -c:v libx264 -crf 23 -c:a aac -strict experimental "$compressed_file" -y
|
|
||||||
fi
|
|
||||||
echo "<div>
|
|
||||||
<video controls>
|
|
||||||
<source src=\"$domain/$compressed_file\" type=\"video/mp4\">
|
|
||||||
</video>
|
|
||||||
<a href=\"$domain/$video_file\" target=\"_blank\">Original ⇝ $video_file</a>
|
|
||||||
</div>" >> "$index_file"
|
|
||||||
done
|
|
||||||
echo "</div>" >> "$index_file"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Compress and display audio files in the subfolder
|
|
||||||
if [ ${#audio_files[@]} -gt 0 ]; then
|
|
||||||
echo "<div class="audios">" >> "$index_file"
|
|
||||||
for audio_file in "${audio_files[@]}"; do
|
|
||||||
compressed_file="$compressed_folder/$(basename "$audio_file")_compressed.mp3"
|
|
||||||
if [ ! -f "$compressed_file" ]; then
|
|
||||||
ffmpeg -i "$audio_file" -b:a 96k "$compressed_file" -y
|
|
||||||
fi
|
|
||||||
echo "<div>
|
|
||||||
<audio controls>
|
|
||||||
<source src=\"$domain/$compressed_file\" type=\"audio/mpeg\">
|
|
||||||
</audio>
|
|
||||||
<a href=\"$domain/$audio_file\" target=\"_blank\">Original ⇝ $audio_file</a>
|
|
||||||
</div>" >> "$index_file"
|
|
||||||
done
|
|
||||||
echo "</div>" >> "$index_file"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Display other files in the subfolder
|
|
||||||
if [ ${#other_files[@]} -gt 0 ]; then
|
|
||||||
echo "<h2>Other Files:</h2><ul>" >> "$index_file"
|
|
||||||
for other_file in "${other_files[@]}"; do
|
|
||||||
echo "<li><a href=\"$domain/$other_file\" target=\"_blank\">Original ⇝ $other_file</a></li>" >> "$index_file"
|
|
||||||
done
|
|
||||||
echo "</ul>" >> "$index_file"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Close HTML tags
|
|
||||||
echo "</div></body></html>" >> "$index_file"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to iterate through all subfolders excluding "compressed"
|
|
||||||
function iterate_subfolders() {
|
|
||||||
local folder="$1"
|
|
||||||
|
|
||||||
# Loop through each item in the folder
|
|
||||||
for item in "$folder"/*; do
|
|
||||||
# Check if the item is a directory
|
|
||||||
if [ -d "$item" ] && [ ! "$(basename "$item")" == "compressed" ] && [ ! "$(basename "$item")" == "*" ]; then
|
|
||||||
compress_and_generate_links "$item"
|
|
||||||
iterate_subfolders "$item"
|
|
||||||
echo "$item"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Start iterating from the main folder
|
|
||||||
iterate_subfolders $main_folder
|
|
||||||
|
|
||||||
echo "HTML files created for each subfolder."
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# stuff:
|
|
||||||
|
|
||||||
# imagemagick got different implementations called "delegates":
|
|
||||||
# "Delegates (built-in): bzlib fontconfig freetype gslib heic jng jp2 jpeg jxl lcms lqr ltdl lzma openexr png ps raw tiff webp xml zlib"
|
|
||||||
# you can configure it through a file called delegates.xml
|
|
Loading…
Reference in New Issue