#!/bin/bash CSV_FILE="tricks.csv" VIDEO_DIR="videos" DEMO_DIR="demos" ARCHIVE_DIR="public/archives" mkdir -p "$ARCHIVE_DIR" declare -A montage_videos declare -A montage_demos while IFS=',' read -r name players train_videos ingame_videos demos montage; do key="$(echo "$montage" | xargs)" videos_raw=$(echo "$ingame_videos" | xargs) demos_raw=$(echo "$demos" | xargs) key="$(echo "$key" | sed 's/ /_/g')" videos="" IFS=';' read -ra video_items <<< "$videos_raw" for item in "${video_items[@]}"; do videos+="${VIDEO_DIR}/${item}.mp4 " done demos="" IFS=';' read -ra demo_items <<< "$demos_raw" for item in "${demo_items[@]}"; do demos+="${DEMO_DIR}/${item} " done if [[ -z "$key" ]]; then key="Unused" fi if [[ -n "${montage_videos[$key]}" ]]; then montage_videos[$key]="${montage_videos[$key]} $videos" else montage_videos[$key]="$videos" fi if [[ -n "${montage_demos[$key]}" ]]; then montage_demos[$key]="${montage_demos[$key]} $demos" else montage_demos[$key]="$demos" fi done < <(tail -n +2 "$CSV_FILE") for montage in "${!montage_videos[@]}"; do [[ -n "${montage_videos[$montage]}" ]] \ && zip -r "${ARCHIVE_DIR}/${montage}_videos.zip" ${montage_videos[$montage]} continue done for montage in "${!montage_demos[@]}"; do [[ -n "${montage_demos[$montage]}" ]] \ && zip -r "${ARCHIVE_DIR}/${montage}_demos.zip" ${montage_demos[$montage]} done