2020-01-06 15:35:22 -07:00
|
|
|
#!/bin/bash
|
|
|
|
# ogg2wav
|
|
|
|
#
|
|
|
|
# Convert .ogg files in downloads/ to .wav files.
|
|
|
|
# It checks sha1 before converting, re-downloads if bad.
|
2020-01-09 20:59:07 -07:00
|
|
|
# Dependency: vorbis-tools sox
|
2020-01-06 15:35:22 -07:00
|
|
|
#
|
|
|
|
# Usage:
|
|
|
|
# ogg2wav
|
|
|
|
# Example:
|
|
|
|
# ogg2wav
|
|
|
|
|
|
|
|
OGGDECOPT=""
|
|
|
|
|
|
|
|
cd download/ || exit
|
|
|
|
|
|
|
|
# Compile a list of ogg files (NOTE: THIS WILL BREAK AS ARCHIVE GROWS XXX)
|
|
|
|
echo "Total audio files: `ls -1 */satnogs_*.ogg | wc -l`"
|
2020-01-10 18:05:57 -07:00
|
|
|
for i in 13*/satnogs_*.ogg
|
2020-01-06 15:35:22 -07:00
|
|
|
do OBSID=`dirname $i`
|
|
|
|
# Go into directories with audiofiles
|
|
|
|
echo $OBSID
|
|
|
|
cd $OBSID
|
|
|
|
# See if there is an archive.org XML file, if not, download it.
|
|
|
|
XMLURL="https://archive.org/download/satnogs-observation-$OBSID/satnogs-observation-$OBSID""_files.xml"
|
|
|
|
XMLFILE=`basename "$XMLURL"`
|
|
|
|
[ ! -f "$XMLFILE" ] && \
|
|
|
|
curl \
|
|
|
|
--location \
|
|
|
|
--silent \
|
|
|
|
--http2 --ipv4 \
|
|
|
|
--remote-time \
|
|
|
|
--output $XMLFILE \
|
|
|
|
$XMLURL \
|
|
|
|
&& sleep `echo $((0 + RANDOM % 1))`
|
|
|
|
# Get name of audio file.
|
|
|
|
AUDIOURL=`cat $OBSID.json | jq --compact-output '.[0] | {archive_url}' | grep ogg | cut -f 2- -d : | sed -e 's/}//g' -e 's/http:/https:/g' -e 's/"//g'`
|
|
|
|
AUDIOFILE=`basename "$AUDIOURL"`
|
|
|
|
# Get sha1 for audio file. XXX sgrep dependency XXX
|
|
|
|
AUDIOXMLSHA1=`sgrep -g xml \
|
|
|
|
'"<file name=\"'$AUDIOFILE'\" source=\"original\"" .. "/file>"' \
|
|
|
|
"$XMLFILE" | \
|
|
|
|
grep "<sha1>" | \
|
|
|
|
sed -e 's/.*<sha1>//' -e 's/<\/sha1>//'`
|
|
|
|
AUDIOFILESHA1=`sha1sum $AUDIOFILE | cut -f 1 -d " "`
|
2020-01-09 20:59:07 -07:00
|
|
|
WAVFILE="`basename $AUDIOFILE .ogg`.wav"
|
|
|
|
AUDIOFILESEC=`soxi -D $AUDIOFILE`
|
|
|
|
WAVFILESEC=`soxi -D $WAVFILE`
|
2020-01-06 15:35:22 -07:00
|
|
|
echo -e -n "XML: $AUDIOXMLSHA1\nFile: $AUDIOFILESHA1 "
|
2020-01-09 20:59:07 -07:00
|
|
|
# Is OGG SHA1 checksum good?
|
2020-01-06 15:35:22 -07:00
|
|
|
if [ "$AUDIOXMLSHA1" = "$AUDIOFILESHA1" ] ; then
|
2020-01-09 20:59:07 -07:00
|
|
|
# Is WAV file same length as OGG? (or better way to see if WAV is OK?
|
|
|
|
if [ "$AUDIOFILESEC" = "$WAVFILESEC" ] ; then
|
|
|
|
echo "good wav"
|
|
|
|
else
|
|
|
|
echo "Encode"
|
|
|
|
echo "oggdec $OGGDECOPT $AUDIOFILE"
|
|
|
|
ls -hl $AUDIOFILE *wav
|
|
|
|
nice oggdec $OGGDECOPT $AUDIOFILE
|
|
|
|
fi
|
2020-01-06 15:35:22 -07:00
|
|
|
else
|
2020-01-09 20:59:07 -07:00
|
|
|
echo "Bad, re-downloading $AUDIOURL"
|
2020-01-06 15:35:22 -07:00
|
|
|
rm "$AUDIOFILE"
|
2020-01-09 20:59:07 -07:00
|
|
|
curl \
|
|
|
|
--location \
|
|
|
|
--silent \
|
|
|
|
--http2 --ipv4 \
|
|
|
|
--remote-time \
|
|
|
|
--output $AUDIOFILE \
|
|
|
|
$AUDIOURL \
|
|
|
|
&& sleep `echo $((0 + RANDOM % 1))`
|
|
|
|
AUDIOFILESHA1=`sha1sum $AUDIOFILE | cut -f 1 -d " "`
|
|
|
|
echo -e -n "XML: $AUDIOXMLSHA1\nFile: $AUDIOFILESHA1 "
|
|
|
|
if [ "$AUDIOXMLSHA1" = "$AUDIOFILESHA1" ] ; then
|
|
|
|
echo "Re-download is good, encode"
|
|
|
|
echo 'oggdec "$OGGDECOPT" "$AUDIOFILE"'
|
|
|
|
nice oggdec $OGGDECOPT $AUDIOFILE
|
|
|
|
else
|
|
|
|
echo "Still bad after re-downloading, remove"
|
|
|
|
rm "$AUDIOFILE"
|
|
|
|
fi
|
2020-01-06 15:35:22 -07:00
|
|
|
fi
|
2020-01-09 20:59:07 -07:00
|
|
|
cd ..
|
|
|
|
|
|
|
|
|
2020-01-06 15:35:22 -07:00
|
|
|
done
|
|
|
|
|