#!/bin/bash # OUTFILE=$1 SOURCEID=$2 [[ -z $OUTFILE ]] && echo "ERROR!!! No output file specified, assuming /dev/stdout" >&2 && OUTFILE="/dev/stdout" [[ -z $SOURCEID ]] && echo "ERROR!!! No source ID specified, assuming 1" >&2 && SOURCEID=1 echo > ${OUTFILE} echo "DELETE FROM dtv_multiplex WHERE sourceid = ${SOURCEID};" > ${OUTFILE} while read LINE; do SERVICEID="`echo ${LINE} | gawk -F: '{print $1}'`" CALLSIGN="`echo ${LINE} | gawk -F: '{print $2}'`" FREQUENCY="`echo ${LINE} | gawk -F: '{print $3}'`" SYMBOLRATE="`echo ${LINE} | gawk -F: '{print $4}'`" MODULATION="`echo ${LINE} | gawk -F: '{print $5}'`" TRANSPORTID="`echo ${LINE} | gawk -F: '{print $6}'`" if [ -z $SERVICEID ]; then continue; fi CHANID=$[ $SOURCEID * 1000 + $SERVICEID ] if [ -z ${TIDS[${TRANSPORTID}]} ]; then echo "INSERT IGNORE INTO dtv_multiplex (sourceid, transportid, networkid, frequency, symbolrate, modulation) VALUES (${SOURCEID}, ${TRANSPORTID}, 1, ${FREQUENCY}, ${SYMBOLRATE}, LOWER(\"${MODULATION}\"));" >> ${OUTFILE} TIDS[${TRANSPORTID}]=1 fi echo "INSERT INTO channel (chanid, channum, callsign, name, sourceid, mplexid, serviceid) VALUES ($CHANID, ${SERVICEID}, \"${CALLSIGN}\", \"${CALLSIGN}\", ${SOURCEID}, (SELECT mplexid FROM dtv_multiplex WHERE transportid = ${TRANSPORTID} AND sourceid = ${SOURCEID}), ${SERVICEID}) ON DUPLICATE KEY UPDATE callsign = VALUES(callsign), name = VALUES(name), mplexid = VALUES(mplexid);" >> ${OUTFILE} done