diff --git a/scripts/get_images.sh b/scripts/01_download_images.sh similarity index 80% rename from scripts/get_images.sh rename to scripts/01_download_images.sh index 5649b5df77d49fa5391c9f56d6808146c0756373..09af291cdca34048a508c33b8f8b60077be597fe 100755 --- a/scripts/get_images.sh +++ b/scripts/01_download_images.sh @@ -1,26 +1,20 @@ #!/usr/bin/env bash -command -v optipng >/dev/null 2>&1 || { echo >&2 "I require optipng but it's not installed. Aborting."; exit 1; } command -v convert >/dev/null 2>&1 || { echo >&2 "I require convert (imagemagick) but it's not installed. Aborting."; exit 1; } command -v jq >/dev/null 2>&1 || { echo >&2 "I require jq (json parser) but it's not installed. Aborting."; exit 1; } CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" BASE_DIR="$(dirname "${CURRENT_DIR}")" -IMAGES_CACHE_FOLDER="${CURRENT_DIR}/cache" +IMAGES_CACHE_FOLDER="${CURRENT_DIR}/cache/download" INPUT_WORDS_LIST="${BASE_DIR}/assets/files/words-fr.json" -COUNT_BY_WEYWORD_VARIANT=3 - +# Images variants KEYWORD_VARIANTS=",image,picture,drawing,black and white,painting,icon" +COUNT_BY_WEYWORD_VARIANT=3 KEYWORD_VARIANTS_LIST="$(echo "${KEYWORD_VARIANTS}" | tr "," "\n")" -RESIZE_OPTION="128x128" -CROP_PARAMETERS="-auto-orient -trim +repage -gravity center -background white -extent ${RESIZE_OPTION}^" -CONVERT_OPTIONS="-alpha off +dither -colors 256 -depth 4" - -OPTIPNG_OPTIONS="-preserve -quiet -o7" - +# QWANT parameters LANG="fr_FR" TYPE="images" OFFSET=0 @@ -71,9 +65,7 @@ while read -r KEYWORD; do wget --quiet --timeout=10 "${URL}" -O "${TMP_IMAGE_FILE}" if [[ -f "${TMP_IMAGE_FILE}" ]]; then echo " + Converting..." - convert "${TMP_IMAGE_FILE}" -resize "${RESIZE_OPTION}^" ${CROP_PARAMETERS} ${CONVERT_OPTIONS} "${OUTPUT_FILE}" - echo " + Optimizing..." - optipng ${OPTIPNG_OPTIONS} "${OUTPUT_FILE}" + convert "${TMP_IMAGE_FILE}" "${OUTPUT_FILE}" fi if [[ -f "${TMP_IMAGE_FILE}" ]]; then @@ -85,6 +77,3 @@ while read -r KEYWORD; do done < <(echo "${KEYWORD_VARIANTS_LIST}") fi done < <(echo "${WORDS_LIST}") - -# Build assets list -"${CURRENT_DIR}/build_assets_list.sh" diff --git a/scripts/02_prepare_images.sh b/scripts/02_prepare_images.sh new file mode 100755 index 0000000000000000000000000000000000000000..caaa392376330c377f2eba94c9cb884ec8144527 --- /dev/null +++ b/scripts/02_prepare_images.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" + +IMAGES_CACHE_FOLDER="${CURRENT_DIR}/cache" + +IMAGES_DOWNLOAD_FOLDER="${CURRENT_DIR}/cache/download" +IMAGES_SELECTED_FOLDER="${CURRENT_DIR}/cache/download" + +# delete empty/temp files +find "${IMAGES_CACHE_FOLDER}" -type f -name "*.png" -empty -exec rm {} \; +find "${IMAGES_CACHE_FOLDER}" -type f -name "*.tmp*" -exec rm {} \; +find "${IMAGES_CACHE_FOLDER}" -type d -empty -exec rm -rf {} \; + +# copy missing files from "download" to "selected" +rsync --ignore-existing -raz --progress "${IMAGES_DOWNLOAD_FOLDER}/*" "${IMAGES_SELECTED_FOLDER}" + +echo "done: copy files from download to selected." +echo "please remove unwanted files from selected folders." diff --git a/scripts/03_optimize_images.sh b/scripts/03_optimize_images.sh new file mode 100755 index 0000000000000000000000000000000000000000..419bf99bfb7262d398666d7d213c185b8d5b3844 --- /dev/null +++ b/scripts/03_optimize_images.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash + +command -v optipng >/dev/null 2>&1 || { echo >&2 "I require optipng but it's not installed. Aborting."; exit 1; } +command -v convert >/dev/null 2>&1 || { echo >&2 "I require convert (imagemagick) but it's not installed. Aborting."; exit 1; } + +CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" + +IMAGES_CACHE_FOLDER="${CURRENT_DIR}/cache" + +IMAGES_SELECTED_FOLDER="${CURRENT_DIR}/cache/download" +IMAGES_OPTIMIZED_FOLDER="${CURRENT_DIR}/cache/optimized" + +RESIZE_OPTION="128x128" +CROP_PARAMETERS="-auto-orient -trim +repage -gravity center -background white -extent ${RESIZE_OPTION}^" +CONVERT_OPTIONS="-alpha off +dither -colors 256 -depth 4" + +OPTIPNG_OPTIONS="-preserve -quiet -o7" + +# delete empty/temp files +find "${IMAGES_CACHE_FOLDER}" -type f -name "*.png" -empty -exec rm {} \; +find "${IMAGES_CACHE_FOLDER}" -type f -name "*.tmp*" -exec rm {} \; +find "${IMAGES_CACHE_FOLDER}" -type d -empty -exec rm -rf {} \; + +IMAGES="$(find "${IMAGES_SELECTED_FOLDER}" -type f -name "*.png" | sort)" + +while read -r INPUT_FILE; do + if [[ -n "${INPUT_FILE}" ]]; then + OUTPUT_FILE="$(echo "${INPUT_FILE}" | sed "s|^${IMAGES_SELECTED_FOLDER}/|${IMAGES_OPTIMIZED_FOLDER}/|g")" + echo " OUTPUT_FILE: ${OUTPUT_FILE}" + + if [[ -f "${OUTPUT_FILE}" ]]; then + echo " - Already optimized" + else + mkdir -p "$(dirname ${OUTPUT_FILE})" + + echo " + Converting..." + convert "${INPUT_FILE}" -resize "${RESIZE_OPTION}^" ${CROP_PARAMETERS} ${CONVERT_OPTIONS} "${OUTPUT_FILE}" + echo " + Optimizing..." + optipng ${OPTIPNG_OPTIONS} "${OUTPUT_FILE}" + fi + fi +done < <(echo "${IMAGES}") + +echo "done." diff --git a/scripts/build_assets_list.sh b/scripts/04_build_assets_list.sh similarity index 75% rename from scripts/build_assets_list.sh rename to scripts/04_build_assets_list.sh index 82527cabab562d8ef6767712b820cbcd6fc74b8d..1ec330e096f5592a2e4013ae19d9310f1417c53c 100755 --- a/scripts/build_assets_list.sh +++ b/scripts/04_build_assets_list.sh @@ -11,16 +11,19 @@ OUTPUT_ASSETS_FILE="${ASSETS_BASE_FOLDER}/assets_images.json" touch "${OUTPUT_ASSETS_FILE}" IMAGES_CACHE_FOLDER="${CURRENT_DIR}/cache" +IMAGES_OPTIMIZED_FOLDER="${IMAGES_CACHE_FOLDER}/optimized" -# delete empty/temp files -find "${IMAGES_CACHE_FOLDER}" -type f -name "*.png" -empty -exec rm {} \; -find "${IMAGES_CACHE_FOLDER}" -type f -name "*.tmp*" -exec rm {} \; -find "${IMAGES_CACHE_FOLDER}" -type d -empty -exec rm -rf {} \; +echo "Cleaning empty/temp files..." +find "${IMAGES_OPTIMIZED_FOLDER}" -type f -name "*.png" -empty -exec rm {} \; +find "${IMAGES_OPTIMIZED_FOLDER}" -type f -name "*.tmp*" -exec rm {} \; +find "${IMAGES_OPTIMIZED_FOLDER}" -type d -empty -exec rm -rf {} \; + +echo "Cleaning existing assets..." find "${IMAGES_ASSETS_FOLDER}" -type f -name "*.png" -exec rm {} \; echo "Building assets json file..." -FILES="$(find "${IMAGES_CACHE_FOLDER}" -type f -name "*.png" | sed "s|^${IMAGES_CACHE_FOLDER}/||g" | sort)" +FILES="$(find "${IMAGES_OPTIMIZED_FOLDER}" -type f -name "*.png" | sed "s|^${IMAGES_OPTIMIZED_FOLDER}/||g" | sort)" KEYWORDS="$(echo "${FILES}" | cut -d'/' -f1 | sort | uniq)" OUTPUT_ASSETS_FILE_TMP="${OUTPUT_ASSETS_FILE}.tmp" @@ -29,6 +32,7 @@ echo " \"images\": {" >> "${OUTPUT_ASSETS_FILE_TMP}" FIRST_KEYWORD=1 while read -r KEYWORD; do if [[ -n "${KEYWORD}" ]]; then + echo "- ${KEYWORD}" if [[ ${FIRST_KEYWORD} -eq 0 ]]; then echo " ," >> "${OUTPUT_ASSETS_FILE_TMP}" fi @@ -41,7 +45,7 @@ while read -r KEYWORD; do fi echo " \"$(echo "${FILE}" | sed "s|${KEYWORD}/||g")\"" >> "${OUTPUT_ASSETS_FILE_TMP}" FIRST_FILE=0 - cp -f "${IMAGES_CACHE_FOLDER}/${FILE}" "${IMAGES_ASSETS_FOLDER}" + cp -f "${IMAGES_OPTIMIZED_FOLDER}/${FILE}" "${IMAGES_ASSETS_FOLDER}" done < <(echo "${FILES_KEYWORD}") echo " ]" >> "${OUTPUT_ASSETS_FILE_TMP}" FIRST_KEYWORD=0 diff --git a/scripts/cache/download/.gitkeep b/scripts/cache/download/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/scripts/cache/optimized/.gitkeep b/scripts/cache/optimized/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/scripts/cache/selected/.gitkeep b/scripts/cache/selected/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391