Hi,
I am quite new to all this automated nzb stuff and have been quite impressed. Had a problem overnight where I downloaded 21gb of old tv episodes but I think thats my fault.
I use some RSS feeds from newzbin where I have done all the filtering etc..
I have a concern however with TV episodes. What happens if someone reposts a old episode? It passes my filter and I am not sure how I can stop this from downloading. I have the episode in question as I got it via another method. Is there anything in place I can use to prevent a double up from occuring?
RSS feeds with old content reposted
Forum rules
Help us help you:
Help us help you:
- Are you using the latest stable version of SABnzbd? Downloads page.
- Tell us what system you run SABnzbd on.
- Adhere to the forum rules.
- Do you experience problems during downloading?
Check your connection in Status and Interface settings window.
Use Test Server in Config > Servers.
We will probably ask you to do a test using only basic settings. - Do you experience problems during repair or unpacking?
Enable +Debug logging in the Status and Interface settings window and share the relevant parts of the log here using [ code ] sections.
Re: RSS feeds with old content reposted
Only if the report titles are 100% identical.
The RSS feature already checks this and you can also let SABnzbd use
the NZB backup folder for an extra check.
If someone decides to upload an old show under a slightly different name
your are out of luck.
Making SABnzbd guess at equality is not feasible.
The RSS feature already checks this and you can also let SABnzbd use
the NZB backup folder for an extra check.
If someone decides to upload an old show under a slightly different name
your are out of luck.
Making SABnzbd guess at equality is not feasible.
Re: RSS feeds with old content reposted
So, bringing this post back from the dead to see if it can be re-addressed. Below is a BASH script that parses filenames and has been thoroughly tested for detecting season and episode numbers. Could this code be ported into sabnzbd, and included as an optional filter for RSS via a checkbox? It would probably be best if the option was on each individual feed, vs globally applied to all.
It leaves SEASON and EPISODE variables in the format of 01-NN. If we could somehow store these with the RSS feed identifier, we could track which episodes were already received. Btw, I'm a seasoned developer, happy to help out in implementing this.
Thoughts?
Thanks!
It leaves SEASON and EPISODE variables in the format of 01-NN. If we could somehow store these with the RSS feed identifier, we could track which episodes were already received. Btw, I'm a seasoned developer, happy to help out in implementing this.
Thoughts?
Thanks!
Code: Select all
# TV path formats supported. Filenames will be searched in
# this order, and case insensitively.
# */<title>.s##e##.*
# */<title> - ##x##.*
# */<title> - s##e##.*
# */<title> - s##e##_*
# */<title> - s##e## *
# */<title>_s##e##_*
# */<title>.s##e#.*
# */<title>_s##e#_*
# */<title>.s#e##.*
# */<title>_s#e##_*
# */<title>.s#e#.*
# */<title>_s#e#_*
# */<title>.s##.e##.*
# */<title>_s##_e##_*
# */<title>.s##.e#.*
# */<title>_s##_e#_*
# */<title>.s#.e##.*
# */<title>_s#_e##_*
# */<title>.s#.e#.*
# */<title>_s#_e#_*
# */<title>.###.*
# */<title>_###_*
# */<title>.####.*
# */<title>_####_*
# */<title>.##.##.*
# */<title>_##_##_*
# */<title>.##x##.*
# */<title>_##x##_*
# */<title>.#x##.*
# */<title>_#x##_*
# */<title>.##x#.*
# */<title>_##x#_*
# */<title>.#x#.*
# */<title>_#x#_*
TITLE="";
SEASON="";
EPISODE="";
FILEPATH=`echo "$1" |sed 's/%20/ /g'`
FILENAME=${FILEPATH##*/}
NOTFOUND=true
# Time to find the season and episode numbers
# *.s##e##.*
if $NOTFOUND; then
if [[ "$FILENAME" =~ [\.\_][sS][0-9][0-9][eE][0-9][0-9][\.\_] ]]; then
TITLE=`echo "${FILENAME%${BASH_REMATCH[0]}*}" |sed 's/[\.\_]/ /g'`
[[ "$FILENAME" =~ [sS][0-9][0-9] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9][0-9] ]]
SEASON="${BASH_REMATCH[0]}"
[[ "$FILENAME" =~ [eE][0-9][0-9] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9][0-9] ]]
EPISODE="${BASH_REMATCH[0]}"
NOTFOUND=false;
fi;
fi;
# * - ##x##.*
if $NOTFOUND; then
if [[ "$FILENAME" =~ [\ ][\-][\ ][0-9][0-9][xX][0-9][0-9][\.\_\ ] ]]; then
TITLE=`echo "${FILENAME%${BASH_REMATCH[0]}*}" |sed 's/[\.\_]/ /g'`
[[ "$FILENAME" =~ [0-9][0-9][xX] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9][0-9] ]]
SEASON="${BASH_REMATCH[0]}"
[[ "$FILENAME" =~ [xX][0-9][0-9] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9][0-9] ]]
EPISODE="${BASH_REMATCH[0]}"
NOTFOUND=false;
fi;
fi;
# * - s##e##.*
if $NOTFOUND; then
if [[ "$FILENAME" =~ [\ ][\-][\ ][sS][0-9][0-9][eE][0-9][0-9][\.\_\ ] ]]; then
TITLE=`echo "${FILENAME%${BASH_REMATCH[0]}*}" |sed 's/[\.\_]/ /g'`
[[ "$FILENAME" =~ [sS][0-9][0-9] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9][0-9] ]]
SEASON="${BASH_REMATCH[0]}"
[[ "$FILENAME" =~ [eE][0-9][0-9] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9][0-9] ]]
EPISODE="${BASH_REMATCH[0]}"
NOTFOUND=false;
fi;
fi;
# *.s##e#.*
if $NOTFOUND; then
if [[ "$FILENAME" =~ [\.\_][sS][0-9][0-9][eE][0-9][\.\_] ]]; then
TITLE=`echo "${FILENAME%${BASH_REMATCH[0]}*}" |sed 's/[\.\_]/ /g'`
[[ "$FILENAME" =~ [sS][0-9][0-9] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9][0-9] ]]
SEASON="${BASH_REMATCH[0]}"
[[ "$FILENAME" =~ [eE][0-9] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9] ]]
EPISODE="0${BASH_REMATCH[0]}"
NOTFOUND=false;
fi;
fi;
# *.s#e##.*
if $NOTFOUND; then
if [[ "$FILENAME" =~ [\.\_][sS][0-9][eE][0-9][0-9][\.\_] ]]; then
TITLE=`echo "${FILENAME%${BASH_REMATCH[0]}*}" |sed 's/[\.\_]/ /g'`
[[ "$FILENAME" =~ [sS][0-9] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9] ]]
SEASON="0${BASH_REMATCH[0]}"
[[ "$FILENAME" =~ [eE][0-9][0-9] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9][0-9] ]]
EPISODE="${BASH_REMATCH[0]}"
NOTFOUND=false;
fi;
fi;
# *.s#e#.*
if $NOTFOUND; then
if [[ "$FILENAME" =~ [\.\_][sS][0-9][eE][0-9][\.\_] ]]; then
TITLE=`echo "${FILENAME%${BASH_REMATCH[0]}*}" |sed 's/[\.\_]/ /g'`
[[ "$FILENAME" =~ [sS][0-9] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9] ]]
SEASON="0${BASH_REMATCH[0]}"
[[ "$FILENAME" =~ [eE][0-9] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9] ]]
EPISODE="0${BASH_REMATCH[0]}"
NOTFOUND=false;
fi;
fi;
# *.s##.e##.*
if $NOTFOUND; then
if [[ "$FILENAME" =~ [\.\_][sS][0-9][0-9][\.\_][eE][0-9][0-9][\.\_] ]]; then
TITLE=`echo "${FILENAME%${BASH_REMATCH[0]}*}" |sed 's/[\.\_]/ /g'`
[[ "$FILENAME" =~ [sS][0-9][0-9] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9][0-9] ]]
SEASON="${BASH_REMATCH[0]}"
[[ "$FILENAME" =~ [eE][0-9][0-9] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9][0-9] ]]
EPISODE="${BASH_REMATCH[0]}"
NOTFOUND=false;
fi;
fi;
# *.s##.e#.*
if $NOTFOUND; then
if [[ "$FILENAME" =~ [\.\_][sS][0-9][0-9].[eE][0-9][\.\_] ]]; then
TITLE=`echo "${FILENAME%${BASH_REMATCH[0]}*}" |sed 's/[\.\_]/ /g'`
[[ "$FILENAME" =~ [sS][0-9][0-9] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9][0-9] ]]
SEASON="${BASH_REMATCH[0]}"
[[ "$FILENAME" =~ [eE][0-9] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9] ]]
EPISODE="0${BASH_REMATCH[0]}"
NOTFOUND=false;
fi;
fi;
# *.s#.e##.*
if $NOTFOUND; then
if [[ "$FILENAME" =~ [\.\_][sS][0-9][\.\_][eE][0-9][0-9][\.\_] ]]; then
TITLE=`echo "${FILENAME%${BASH_REMATCH[0]}*}" |sed 's/[\.\_]/ /g'`
[[ "$FILENAME" =~ [sS][0-9] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9] ]]
SEASON="0${BASH_REMATCH[0]}"
[[ "$FILENAME" =~ [eE][0-9][0-9] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9][0-9] ]]
EPISODE="${BASH_REMATCH[0]}"
NOTFOUND=false;
fi;
fi;
# *.s#.e#.*
if $NOTFOUND; then
if [[ "$FILENAME" =~ [\.\_][sS][0-9][\.\_][eE][0-9][\.\_] ]]; then
TITLE=`echo "${FILENAME%${BASH_REMATCH[0]}*}" |sed 's/[\.\_]/ /g'`
[[ "$FILENAME" =~ [sS][0-9] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9] ]]
SEASON="0${BASH_REMATCH[0]}"
[[ "$FILENAME" =~ [eE][0-9] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9] ]]
EPISODE="0${BASH_REMATCH[0]}"
NOTFOUND=false;
fi;
fi;
# *.###.*
if $NOTFOUND; then
if [[ "$FILENAME" =~ [\.\_][0-9][0-9][0-9][\.\_] ]]; then
TITLE=`echo "${FILENAME%${BASH_REMATCH[0]}*}" |sed 's/[\.\_]/ /g'`
[[ "$FILENAME" =~ [\.\_][0-9] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9] ]]
SEASON="0${BASH_REMATCH[0]}"
[[ "$FILENAME" =~ [0-9][0-9][\.\_] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9][0-9] ]]
EPISODE="${BASH_REMATCH[0]}"
NOTFOUND=false;
fi;
fi;
# *.####.*
if $NOTFOUND; then
if [[ "$FILENAME" =~ [\.\_][0-9][0-9][0-9][0-9][\.\_] ]]; then
TITLE=`echo "${FILENAME%${BASH_REMATCH[0]}*}" |sed 's/[\.\_]/ /g'`
[[ "$FILENAME" =~ [\.\_][0-9][0-9] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9][0-9] ]]
SEASON="${BASH_REMATCH[0]}"
[[ "$FILENAME" =~ [0-9][0-9][\.\_] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9][0-9] ]]
EPISODE="${BASH_REMATCH[0]}"
NOTFOUND=false;
fi;
fi;
# *.##.##.*
if $NOTFOUND; then
if [[ "$FILENAME" =~ [\.\_][0-9][0-9][\.\_][0-9][0-9][\.\_] ]]; then
TITLE=`echo "${FILENAME%${BASH_REMATCH[0]}*}" |sed 's/[\.\_]/ /g'`
[[ "$FILENAME" =~ [\.\_][0-9][0-9][\.\_][0-9] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9][0-9] ]]
SEASON="${BASH_REMATCH[0]}"
[[ "$FILENAME" =~ [0-9][\.\_][0-9][0-9][\.\_] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9][0-9] ]]
EPISODE="${BASH_REMATCH[0]}"
NOTFOUND=false;
fi;
fi;
# *.##x##.*
if $NOTFOUND; then
if [[ "$FILENAME" =~ [\.\_][0-9][0-9][x][0-9][0-9][\.\_] ]]; then
TITLE=`echo "${FILENAME%${BASH_REMATCH[0]}*}" |sed 's/[\.\_]/ /g'`
[[ "$FILENAME" =~ [\.\_][0-9][0-9][x][0-9] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9][0-9] ]]
SEASON="${BASH_REMATCH[0]}"
[[ "$FILENAME" =~ [0-9][x][0-9][0-9][\.\_] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9][0-9] ]]
EPISODE="${BASH_REMATCH[0]}"
NOTFOUND=false;
fi;
fi;
# *.#x##.*
if $NOTFOUND; then
if [[ "$FILENAME" =~ [\.\_][0-9][x][0-9][0-9][\.\_] ]]; then
TITLE=`echo "${FILENAME%${BASH_REMATCH[0]}*}" |sed 's/[\.\_]/ /g'`
[[ "$FILENAME" =~ [\.\_][0-9][x][0-9][0-9] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9] ]]
SEASON="0${BASH_REMATCH[0]}"
[[ "$FILENAME" =~ [0-9][x][0-9][0-9][\.\_] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9][0-9] ]]
EPISODE="${BASH_REMATCH[0]}"
NOTFOUND=false;
fi;
fi;
# *.##x#.*
if $NOTFOUND; then
if [[ "$FILENAME" =~ [\.\_][0-9][0-9][x][0-9][\.\_] ]]; then
TITLE=`echo "${FILENAME%${BASH_REMATCH[0]}*}" |sed 's/[\.\_]/ /g'`
[[ "$FILENAME" =~ [\.\_][0-9][0-9][x][0-9] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9][0-9] ]]
SEASON="${BASH_REMATCH[0]}"
[[ "$FILENAME" =~ [x][0-9][\.\_] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9] ]]
EPISODE="0${BASH_REMATCH[0]}"
NOTFOUND=false;
fi;
fi;
# *.#x#.*
if $NOTFOUND; then
if [[ "$FILENAME" =~ [\.\_][0-9][x][0-9][\.\_] ]]; then
TITLE=`echo "${FILENAME%${BASH_REMATCH[0]}*}" |sed 's/[\.\_]/ /g'`
[[ "$FILENAME" =~ [\.\_][0-9][x] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9] ]]
SEASON="0${BASH_REMATCH[0]}"
[[ "$FILENAME" =~ [x][0-9][\.\_] ]]
[[ "${BASH_REMATCH[0]}" =~ [0-9] ]]
EPISODE="0${BASH_REMATCH[0]}"
NOTFOUND=false;
fi;
fi;
Re: RSS feeds with old content reposted
The problem is not in determining seasons and episodes, SABnzbd already does that for SeasonSort.
So far the RSS module does not use titles, seasons, episodes for remembering RSS content.
It may do so in a future release.
Other than that, we're not trying to compete with a extensive front-end like SickBeard,
which does a much better job at scouting and keeping track of series material.
So far the RSS module does not use titles, seasons, episodes for remembering RSS content.
It may do so in a future release.
Other than that, we're not trying to compete with a extensive front-end like SickBeard,
which does a much better job at scouting and keeping track of series material.
Re: RSS feeds with old content reposted
Ahh, I had actually never heard of SickBeard. Thanks for pointing me in that direction.shypike wrote:The problem is not in determining seasons and episodes, SABnzbd already does that for SeasonSort.
So far the RSS module does not use titles, seasons, episodes for remembering RSS content.
It may do so in a future release.
Other than that, we're not trying to compete with a extensive front-end like SickBeard,
which does a much better job at scouting and keeping track of series material.
Thanks again.