diff --git a/migrate_data.sh b/migrate_data.sh index d7455b3..f9501ef 100644 --- a/migrate_data.sh +++ b/migrate_data.sh @@ -5,27 +5,41 @@ . "$HOME/.tweepy.conf" . "$NOAA_HOME/common.sh" -# TODO: Warn the user +# This is the original path where images were stored BASEPATH="/var/www/wx/image" + +# This is the destination path (AKA the new path) FINALPATH="/var/www/wx/images" + +# This is a list of satellite names SAT_NAMES="NOAA15 NOAA18 NOAA19 METEOR-M2" -DB_PATH="${NOAA_HOME}/panel.db" +# Here's where the database will live +DB_PATH="${NOAA_HOME}/panel.db" ( + # To speed up the migration process and + # reduce the SD card wear, the database + # operations are done over the RAMFS + # partition cd "${RAMFS_AUDIO}" || exit 1 sqlite3 < "${NOAA_HOME}/panel.sql" ) cd "$BASEPATH" || exit 1 + +# The webpanel have thumbnails! mkdir -p "$FINALPATH/thumb" +# Find all the images for filename in $(find . -name *.jpg); do + # Grab just the filename without the yyyy/mm/dd path basename="$(echo "$filename" | sed 's~.*/~~')" for prefix in $SAT_NAMES; do basedate="$(echo "$basename" | sed -e "s/^$prefix//" | cut -f1,2 -d'-' | sed -e "s/-//")" if [[ $basename == *"$prefix"* ]]; then + # Grab the satellite name from the file name sat_name=$prefix fi done @@ -33,25 +47,31 @@ for filename in $(find . -name *.jpg); do date_normalized=$(echo "$basedate" | sed -e "s/^$sat_name//;s/./&:/12;s/./&:/10;s/./& /8;s/./&\//6;s/./&\//4") epoch_date=$(date "+%s" -d "$date_normalized") if [[ $basename == *"METEOR"* ]]; then + # Meteor files have one more dash on its name passname=$(echo "$basename" | cut -f1,2,3 -d'-') else passname=$(echo "$basename" | cut -f1,2 -d'-') fi echo "Migration in progress: $basename" cp "$BASEPATH/$filename" "$FINALPATH" + + # Create thumbnails for old images convert -thumbnail 300 "$BASEPATH/$filename" "$FINALPATH/thumb/$basename" if [[ $basename == *"METEOR"* ]]; then - sqlite3 "${RAMFS_AUDIO}/panel.db" "insert into decoded_passes (pass_start, file_path, daylight_pass, is_noaa) values ($epoch_date,\"$passname\",1,0);" - sqlite3 "${RAMFS_AUDIO}/panel.db" "insert into decoded_passes (pass_start, file_path, daylight_pass, is_noaa) values ($epoch_date,\"$passname\",1,0);" - sqlite3 "${RAMFS_AUDIO}/panel.db" "insert or replace into predict_passes (sat_name,pass_start,pass_end,max_elev) values (\"$sat_name\",$epoch_date,$epoch_date,0);" + # Insert each pass on the database. Also insert the pass prediction + sqlite3 "${RAMFS_AUDIO}/panel.db" "INSERT INTO decoded_passes (pass_start, file_path, daylight_pass, is_noaa) VALUES ($epoch_date,\"$passname\",1,0);" + sqlite3 "${RAMFS_AUDIO}/panel.db" "INSERT OR REPLACE INTO predict_passes (sat_name,pass_start,pass_end,max_elev) VALUES (\"$sat_name\",$epoch_date,$epoch_date,0);" elif [[ $basename == *"ZA"* ]]; then - sqlite3 "${RAMFS_AUDIO}/panel.db" "insert or replace into predict_passes (sat_name,pass_start,pass_end,max_elev) values (\"$sat_name\",$epoch_date,$epoch_date,0);" + sqlite3 "${RAMFS_AUDIO}/panel.db" "INSERT OR REPLACE INTO predict_passes (sat_name,pass_start,pass_end,max_elev) VALUES (\"$sat_name\",$epoch_date,$epoch_date,0);" if [[ -f "$FINALPATH/$passname-MSA.jpg" ]]; then - sqlite3 "${RAMFS_AUDIO}/panel.db" "insert into decoded_passes (pass_start, file_path, daylight_pass, is_noaa) values ($epoch_date,\"$passname\",1,1);" + # MSA requires a daylight pass and daylight pass is a column of decoded_passes so this is the way to grab them + sqlite3 "${RAMFS_AUDIO}/panel.db" "INSERT INTO decoded_passes (pass_start, file_path, daylight_pass, is_noaa) VALUES ($epoch_date,\"$passname\",1,1);" else - sqlite3 "${RAMFS_AUDIO}/panel.db" "insert into decoded_passes (pass_start, file_path, daylight_pass, is_noaa) values ($epoch_date,\"$passname\",0,1);" + sqlite3 "${RAMFS_AUDIO}/panel.db" "INSERT INTO decoded_passes (pass_start, file_path, daylight_pass, is_noaa) VALUES ($epoch_date,\"$passname\",0,1);" fi fi + + # Move the database file to its final destination mv "${RAMFS_AUDIO}/panel.db" "$DB_PATH" echo "Done." echo ""