Skip to content

Instantly share code, notes, and snippets.

@PProvost
Created February 12, 2015 04:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save PProvost/6f52133fb7fe8b4cde7d to your computer and use it in GitHub Desktop.
Save PProvost/6f52133fb7fe8b4cde7d to your computer and use it in GitHub Desktop.
Cron script to clean up Archived episodes in SickBeard
#!/bin/bash
# Source: http://sickbeard.com/forums/viewtopic.php?f=8&t=3945#p19232
SICKBEARD_CONFIG=/var/pvr/sickbeard/config.ini
ECHO=/bin/echo
GREP=/bin/grep
AWK=/usr/bin/awk
MKTEMP=/bin/mktemp
WGET=/usr/bin/wget
SED=/bin/sed
RM=/bin/rm
CAT=/bin/cat
FIND=/usr/bin/find
LS=/bin/ls
SORT=/usr/bin/sort
CUT=/usr/bin/cut
MV=/bin/mv
DATE=/bin/date
SBEARD_URL=''
if [[ $(${GREP} ^enable_https ${SICKBEARD_CONFIG} | ${AWK} '{print $NF}') == "1" ]]
then
SBEARD_URL='https://'
else
SBEARD_URL='http://'
fi
SICKBEARD_HOST=$(${GREP} ^web_host ${SICKBEARD_CONFIG} | ${AWK} '{print $NF}')
SICKBEARD_PORT=$(${GREP} ^web_port ${SICKBEARD_CONFIG} | ${AWK} '{print $NF}')
SBEARD_URL="${SBEARD_URL}${SICKBEARD_HOST}:${SICKBEARD_PORT}/api/$(${GREP} ^api_key ${SICKBEARD_CONFIG} | ${AWK} '{print $NF}')/?"
WORK_DIRECTORY=$(${MKTEMP} -d)
${WGET} --no-check-certificate -O ${WORK_DIRECTORY}/show_data "${SBEARD_URL}cmd=shows&sort=name" >/dev/null 2>&1
for ROOT_FOLDER in $(${GREP} ^root_dirs ${SICKBEARD_CONFIG} | ${AWK} '{print $NF}' | ${CUT} -c3- | ${SED} 's/|/ /g')
do
${LS} ${ROOT_FOLDER} >>${WORK_DIRECTORY}/show_list
done
${CAT} ${WORK_DIRECTORY}/show_list | ${SORT} -u >>${WORK_DIRECTORY}/show_list.sort
${MV} ${WORK_DIRECTORY}/show_list.sort ${WORK_DIRECTORY}/show_list
while read SHOW
do
TVDBID=$(${GREP} -A 15 "\"${SHOW}\": {" ${WORK_DIRECTORY}/show_data | ${GREP} '"tvdbid"' | ${AWK} '{print $2}' | ${SED} 's/,//g')
if [[ ! -z "${TVDBID}" ]]
then
shows[${TVDBID}]="${SHOW}"
fi
done<${WORK_DIRECTORY}/show_list
${RM} -f ${WORK_DIRECTORY}/show_data ${WORK_DIRECTORY}/show_list
for TVDBID in ${!shows[*]}
do
SHOW_NAME=${shows[$TVDBID]}
${WGET} --no-check-certificate -O ${WORK_DIRECTORY}/show_data.${TVDBID} "${SBEARD_URL}cmd=show&tvdbid=${TVDBID}" >/dev/null 2>&1
SHOW_DIRECTORY=$(${GREP} " \"location\": " ${WORK_DIRECTORY}/show_data.${TVDBID} | ${AWK} -F: '{print $NF}' | ${SED} 's/"//g;s/,$//g;s/, $//g;s/^ *//g')
for SEASON in $(${FIND} "${SHOW_DIRECTORY}" -type f | awk -F/ '{print $NF}' | ${GREP} -o -- '- S..' | ${CUT} -c4-5 | ${SORT} -u)
do
${WGET} --no-check-certificate -O ${WORK_DIRECTORY}/show_data.${TVDBID}.${SEASON} "${SBEARD_URL}cmd=show.seasons&tvdbid=${TVDBID}&season=${SEASON}" >/dev/null 2>&1
done
${FIND} "${SHOW_DIRECTORY}" -type f >${WORK_DIRECTORY}/show_data.${TVDBID}.files
while read FILE
do
FILE_NAME=$(${ECHO} "${FILE}" | ${AWK} -F/ '{print $NF}')
SEASON=$(${ECHO} ${FILE_NAME} | ${GREP} -o -- '- S..' | ${CUT} -c4-5)
EPISODE=$(${ECHO} ${FILE_NAME} | ${GREP} -o -- '- S..E..' | ${CUT} -c7-8 | ${SED} 's/^0//g')
EPISODE_DATA=$(${GREP} -A 5 " \"${EPISODE}\": {" ${WORK_DIRECTORY}/show_data.${TVDBID}.${SEASON})
SKIPPED=$(${ECHO} "${EPISODE_DATA}" | ${GREP} " \"status\": \"Skipped\"")
if [[ ! -z "${SKIPPED}" ]]
then
${ECHO} "$(${DATE}) : Deleting ${FILE}"
${RM} -f "${FILE}"
fi
done<${WORK_DIRECTORY}/show_data.${TVDBID}.files
${WGET} --no-check-certificate -O ${WORK_DIRECTORY}/show_data.${TVDBID}.refresh "${SBEARD_URL}cmd=show.refresh&tvdbid=${TVDBID}" >/dev/null 2>&1
done
${RM} -rf ${WORK_DIRECTORY}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment