first commit eheh
commit
9373c99805
@ -0,0 +1,196 @@
|
|||||||
|
#!/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