Code Monkey home page Code Monkey logo

nzbtomedia's Introduction

nzbToMedia

Provides an efficient way to handle postprocessing for CouchPotatoServer and SickBeard (and its forks) when using one of the popular NZB download clients like SABnzbd and NZBGet on low performance systems like a NAS. This script is based on sabToSickBeard (written by Nic Wolfe and supplied with SickBeard), with the support for NZBGet being added by thorli and further contributions by schumi2004 and hugbug. Torrent suport added by jkaberg and berkona Corrupt video checking, auto SickBeard fork determination and a whole lot of code improvement was done by echel0n Python3 compatibility, and much cleaner code base has been contributed by Labrys of Knossos

Introduction

Originally this was modified from the SickBeard version to allow for "on-demand" renaming and not have My QNAP TS-412 NAS constantly scanning the download directory. Later, a few failed downloads prompted me to incorporate "failed download" handling. Failed download handling is now provided for SABnzbd, by CouchPotatoServer; however on arm processors (e.g. small NAS systems) this can be un-reliable.

Failed download handling for SickBeard is available by using Tolstyak's fork SickBeard-failed). To use this feature, in autoProcessTV.cfg set the parameter "fork=failed". Default is "fork=default" and will work with the standard version of SickBeard and just ignores failed downloads. Development of Tolstyak's fork ended in 2013, but newer forks exist with significant feature updates such as Mr-Orange TPB (discontinued), SickRageTV and SickRage (active). See SickBeard Forks for a list of known forks.

Full support is provided for SickChill, SiCKRAGE, Medusa, and SickGear.

Torrent support has been added with the assistance of jkaberg and berkona. Currently supports uTorrent, Transmission, Deluge and possibly more. To enable Torrent extraction, on Windows, you need to install 7-zip or on *nix you need to install the following packages/commands.

"unrar", "unzip", "tar", "7zr"
note: "7zr" is available from the p7zip package. Available on Optware.

In order to use the transcoding option, and corrupt video checking you will need to install ffmpeg (and ffprobe). Installation instructions for this are available in the wiki

Contribution

We who have developed nzbToMedia believe in the openness of open-source, and as such we hope that any modifications will lead back to the original repo via pull requests.

Founder: clinton-hall

Contributors: Can be viewed here

Installation

See more detailed instructions in the wiki

Windows

Support of the compiled versions of this code has ceased. Compiling this expanding code is becoming very difficult and time-consuming. Installing Python and running from source is not too complex. Please follow the instructions on the Wiki link above. Sorry for any inconvenience caused here.

General

  1. Install Python

  2. Install pywin32

  3. Clone or copy all files into a directory wherever you want to keep them (eg. /scripts/ in the home directory of your download client) and change the permission accordingly so the download client can access these files.

git clone git://github.com/clinton-hall/nzbToMedia.git

Configuration

  1. Please read the wiki pages for configuration settings appropriate to your system.

  2. Please add to the wiki pages to help assist others ;)

Issues

  1. Please report all issues, or potential enhancements using the issues page on this repo.

nzbtomedia's People

Contributors

andrzejc avatar bbsan2k avatar berkona avatar cannfoddr avatar clinton-hall avatar echel0n avatar fativi avatar gibxxi avatar gunmantheh avatar hagaic avatar hmphargh avatar jaerin avatar jkaberg avatar joopnl avatar kriegsmanj avatar labrys avatar marvinpinto avatar nervling avatar nikagl avatar p0psicles avatar ratoaq2 avatar roderickvd avatar scambra avatar schumi2004 avatar serhatg avatar smenus avatar theholyroger avatar thorli avatar vergessen avatar withoutcord avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nzbtomedia's Issues

line 377: syntax error: bad substitution

Latest version generates syntax error

Thu Dec 20 10:02:29 2012 INFO Post-Process: Deleting rar-files
Thu Dec 20 10:02:30 2012 INFO Post-Process: Cleaning up
Thu Dec 20 10:02:30 2012 DETAIL Post-Process: /usr/local/nzbget/bin/nzbget-postprocess.sh: line 377: syntax error: bad substitution
Thu Dec 20 10:02:30 2012 INFO Completed post-process-script for Homeland.S02E12.PROPER.HDTV.x264-EVOLVE/homeland.s02e12.proper.hdtv.x264-evolve
Thu Dec 20 10:02:30 2012 INFO post-process-script for Homeland.S02E12.PROPER.HDTV.x264-EVOLVE/homeland.s02e12.proper.hdtv.x264-evolve terminated with unknown status
Thu Dec 20 10:02:30 2012 INFO Collection Homeland.S02E12.PROPER.HDTV.x264-EVOLVE added to history

Combined SB/CP support

Following on from the issue on the CPS (https://github.com/RuudBurger/CouchPotatoServer/issues/1380) though I would take a look at your scripts :)

How about extending it so that there is a config file that defines a list of 'categories' and which application should support them (or maybe applications and categories that get sent to them ..) so

[sickbeard]
category=tv
category=documentary

[couchpotato]
category=movies
category=movie
category=blah

Then the wrapper script can process the incoming parameters and work out the one that contains the label and thus can fork off to autoProcessMovie/ or autoProcessTV accordingly, we could end up with new apps like [mylar], [lazyLibrarian], [gamez] that way and handle postprocessing of a wide variety of types of files.

Does this approach sound sensible / any merit on me working on it?

NZBget syntax error

Hi,

We had a brief discussion here: https://github.com/RuudBurger/CouchPotatoServer/issues/1369#issuecomment-12816814

Script seems to error out after moving TV (SickBeard) file to its destination,please see log:

info Tue Jan 29 2013 02:28:47 Completed post-process-script for Once.Upon.a.Time.S02E11.HDTV.x264-LOL/once.upon.a.time.211.hdtv-lol
info Tue Jan 29 2013 02:28:47 Post-Process: SyntaxError: invalid syntax
info Tue Jan 29 2013 02:28:47 Post-Process: ^
info Tue Jan 29 2013 02:28:47 Post-Process: if nzbName = "Manual Run" and watch_dir == "":
info Tue Jan 29 2013 02:28:47 Post-Process: File "/opt/sybhttpd/localhost.drives/SATA_DISK/Apps/NZBget/scripts/autoProcessTV.py", line 89
info Tue Jan 29 2013 02:28:47 Post-Process: import autoProcessTV
info Tue Jan 29 2013 02:28:47 Post-Process: File "/share/Apps/NZBget/scripts/nzbToSickBeard.py", line 26, in
info Tue Jan 29 2013 02:28:47 Post-Process: Traceback (most recent call last):
info Tue Jan 29 2013 02:28:46 Post-Process: Running SickBeard's postprocessing script
info Tue Jan 29 2013 02:28:19 Post-Process: Moving TV shows to /share/Download/NZBGet/Complete/SickBeard/
info Tue Jan 29 2013 02:28:19 Post-Process: Cleaning up
info Tue Jan 29 2013 02:28:17 Post-Process: Deleting rar-files
info Tue Jan 29 2013 02:28:17 Post-Process: All OK

More Scene Exceptions

The two biggest headaches I have with sickbeard is that sometimes season packs have just episode numbering, and that anime episodes are generally absolutely numbered, but sickbeard only accepts them as seasons.

I'm go to go ahead and schedule this for 7.0. I'll take a look at what I need to do to get this running this weekend.

[Torrent] hardlink permission errors

Hardlinking dosnt come without problems, eg if a file is seeded by uTorrent, uTorrent will lock the file (and any file "linked to it")

So when creating a new hardlink we should really try to make it so that we call the renamer directly which outputs into final directory structure

Without looking into it to much I assume we need to enhance the renamer in Couchpotato and Sick-Beard for this to work

Or if there is another workaround?

Check renamer success when logging

One little bug in the manual invoking of nzbToCouchPotato. When the wrong api key is used the script reports:

  1. Wrong Api Key Used

but then reports

2)renamer.scan started on CouchPotatoServer for Manual Run

Sickbeard script not working

I had the default scripts installed but found your git and wanted to try it. I first used the normal scripts provided with sickbeard.

But the sickbeard script is giving a 404. The URL is correct but sickbeard returns an 404 error.

I'm back using the normal sickbeard postprocessing script, and that is working.

Using sab with the correct permissions offcourse and settings (couch is working). To be clear: Sickbeard is getting the request by sab, but sickbeard trows an 404.

[Torrent] Ignore sample files etc

The extractor will fail if the script finds media files first, and it does if the download has sample files in the directory

Maybe we need to start ignoring stuff like samples

Heres the "usual" stuff we could ignore: sample, trailer, extras, deleted scenes, music video, scrapbook, behind the scenes

Improve matching for failed download

Currently requires exact format of the nzbname give by sabnzbd and the release name in CPS. this can fail a match when any naming substitutes are used in CPS.

Options:

  1. Match only ttxxxx imdb id
    • when available, this is most accurate, but any renaming or truncating from sabnzbd will be problematic.
  2. Convert both strings to their words and match arrays
    • will this match too many releases? and does that matter since we just tell CPS to snatch the next best release for the movie... i.e. we only uses this to id the movie.
  3. Hybrid
    • just use the imdb id to tell CPS to snatch next best for that movie, when available, and otherwise try and match exact name, and then try and match array of words...

[CP] Release processed to managed section when it actually failed.

I'm using nzbToMedia in manage mode for CouchPotato and i recently noticed that when a release is downloaded which is failed it's being marked for managed section in CP.

I'm not sure if this is a CP issue or a script issue, when a release is failed it should stay in the wanted section not being moved to managed.

Maybe CP is acting this way since there wasn't any other release available at that point but then again it still shouldn't be processed to managed when it failed.

Remove "delay" from manual run

Normally we run manual to clean up files that got stuck some time ago, or to test the system... we don't want or need to wait a minute (or more) in this case.

Also, if a watch_dir directory is entered in autoProcessTV.cfg then it should be possible to allow nzbToSickBeard to also run in manual mode.

Proper check for CPS complete

Do in autoProcessMovie.py

Extract imdb I'd from nzbname or directory (creat separate def)

Also need to do api call to CPS to get status list and determine completed status.
Then in loop (with 3 min timeout) do api call to get movie status... If = complete status, break and log completed.

Help with post processing, SB and Oversight

hi clintonhall,

I've been trying to use your nzbToMedia scripts, but keep getting either "Could not start script: Exec format error" or "Could not find file" errors with nzbget-postprocess.sh on my PCH A-210 with NZBget 10.0.

I was using Oversight unpack with SB until groups started posting encrypted file names. So I switched to hugbug's post processing script, and it works well, but it doesn't work well with Oversight, and I guess SB, but I've not run into any problems with SB and Oversight's unpack in the past.

Here's what I'm trying to do...

  1. Have SB push nzbs to NZBget, download/unpack, move to my TV directory, and have Oversight index them.
  2. Have Dognzb push nzbs to NZBget, download/unpack, move to my Movie directory, and have Oversight index them.

moddigi suggested i try your scripts, but I don't use CP and I'm having the problem above.

Can you suggest something?

thx.

Remove parameter clutter

We should add a key to autoProcessMedia.cfg.sample called client-agent or something similar. Basically, it would be a value like: "transmission", "utorrent", "deluge", "cron", "rtorrent". I don't see many users using more than one torrent client per install, so this would eliminate the need to pass 'utorrent' etc. when calling the script. It would also support a better driver-based way to deal with processing torrents.

I can knock up some code later today.

Add windows nzbget support

I have compiled versions of the nzbToCouchPotato and nzbToSickBeard scripts. I also have a compiled version of sendEmail.

I have verified that the postprocess settings (.conf) file loads in windows. So the only missing step is to get the actual postprocess script to work

1 possible option is to try and compile the postprocess.sh script in Cygwin. But I am thinking that the entire script could be relatively easily written in cmd.

This would then require the main .conf file to be edited (during setup) to point to the postprocess.cmd file. And then in theory, full postprocessing and email support would be available in windows.

So. If anyone is comfortable with cmd scripting, feel free to try porting these two scripts (or even just the 9.0 script) and send me a pull request ;)

Otherwise, this is something I will try and follow up at some future date.

Compiled versions can't be hosted here anymore, so once I have the cmd script on GitHub, I'll create a compiled build and host this somewhere... Possibly sourceforgenet, Dropbox, freefilehosting... Let me know what you think is the best place to host a build.

Sample file overwrites larger completed episode

Hello,

Just noticed this (on NZBget, though don;t know why it wouldn't apply to other installs), the post-process script seems to recognise that the Sample file is smaller than the completed larger TV episode however it proceeds to overwrite it anyway (rather than simply copy across, or delete?)


info Thu Jan 31 2013 05:13:32 Post-Process: Processing succeeded for /opt/sybhttpd/localhost.drives/SATA_DISK/Download/NZBget/Complete/SickBeard/ETC/124723-Sample.mkv

info Thu Jan 31 2013 05:13:32 Post-Process: Moving file from /opt/sybhttpd/localhost.drives/SATA_DISK/Download/NZBget/Complete/SickBeard/ETC/124723-Sample.srs to /share/TV and Movies/TV/ETC/Season 1/ETC - s01e12 - LOL.srs

info Thu Jan 31 2013 05:13:32 Post-Process: Moving file from /opt/sybhttpd/localhost.drives/SATA_DISK/Download/NZBget/Complete/SickBeard/ETC/124723-Sample.mkv to /share/TV and Movies/TV/ETC/Season 1/ETC - s01e12 - LOL.mkv

info Thu Jan 31 2013 05:13:32 Post-Process: Destination folder for this episode: /share/TV and Movies/TV/ETC/Season 1

info Thu Jan 31 2013 05:13:32 Post-Process: Deleting file /share/TV and Movies/TV/ETC/Season 1/ETC - s01e12 - LOL.mkv

info Thu Jan 31 2013 05:13:32 Post-Process: This download is marked a priority download so I'm going to replace an existing file if I find one

info Thu Jan 31 2013 05:13:32 Post-Process: File /share/TV and Movies/TV/ETC/Season 1/ETC - s01e12 - LOL.mkv is larger than /opt/sybhttpd/localhost.drives/SATA_DISK/Download/NZBget/Complete/SickBeard/EPISODE/124723-Sample.mkv

info Thu Jan 31 2013 05:13:32 Post-Process: Found release name ETC

Thoughts?

Update scripts for NZBget version 10

I installed latest NZBget version 10 (r529)

Developer hugbug has added custom destinations for categories like added in the scripts from nzbToMedia, see attached image.

21-12-2012 10-33-37

mv completed files instead of cp? [NZBget]

Hi,

In the final part of the script, where nzbtomedia moves the tv/movie to its completed directory,I notice it uses a cp(copy) command rather than a mv and a cosequence of this seems to be a long time taken to copy the file over (about 2 minutes for a 600mb tv ep, 10+ mins for an 8GB film)

Is there any reason mv can't be used instead?


if [ "$NZBPP_CATEGORY" = "$SickBeardCategory" -a -d "$TvDownloadDir" ]; then
echo "[INFO] Post-Process: Moving TV shows to $TvDownloadDir"
cp -R "$NZBPP_DIRECTORY" "$TvDownloadDir"
if [ "$?" -ne 0 ]; then
echo "[ERROR] Post-Process: Moving to $TvDownloadDir"
exit $POSTPROCESS_ERROR
else
rm -fr *
cd ..
rmdir "$NZBPP_DIRECTORY"
NZBPP_DIRECTORY="$TvDownloadDir"
cd "$NZBPP_DIRECTORY"
fi
fi

De-dup Startup

Is the following code common to all entry point python scripts?

If so, I'd recomend either moving it to the env module (i.e., every time nzbToMediaEnv.py is including, logging is 'configured') or create a util module and a make a function called start_logging() (and all entry points import & call this). The latter is nicer if you think any of the autoprocess*.py classes would ever need something in nzbToMediaEnv.py as it would mean that you can know that the code is only ever run once.

Logger = logging.getLogger()
logFile = os.path.join(os.path.dirname(sys.argv[0]), "postprocess.log")
logging.config.fileConfig(os.path.join(os.path.dirname(sys.argv[0]), "logger.conf"))
fileHandler = logging.FileHandler(logFile, encoding='utf-8', delay=True)
fileHandler.formatter = logging.Formatter('%(asctime)s|%(levelname)-7.7s %(message)s', '%H:%M:%S')
fileHandler.level = logging.DEBUG
Logger.addHandler(fileHandler)

NZBGet failed download handling

This is something that looks possible. Essentially nzbToCouchPotato.py needs to pass through 0 if all is good and not 0 if anything went wrong.

This requires some edits to the postprocess.sh. There are a few parameters passes for parcheck result and a few others. Just need to work out the right checks to then pass through.

If anyone has any ideas and want to play with it, please feel free ;)

Select buttons for email options

In nzbget-postprocessing.conf add a space after # for email options to get select buttons.

"# Specify if you want emails to be sent for successful downloads (yes, no)."
Email_successful=yes

"# Specify if you want emails to be sent for failed downloads (yes, no)."
Email_failed=yes

Add Popcorn Hour NMJ update

Have a script.. just trying to figure out how to use this stand-alone and in conjunction with current scripts...

i.e. Do we have a script for nzbToCouchPotato+NMJ or do we just use nzbToCouchPotato and then have options in the .cfg file to use NMJ update?

Comments are appreciated ;)

logging on submodules

was looking at our called modules in https://github.com/clinton-hall/nzbToMedia/blob/refactor0.7/nzbToMediaUtil.py for example

me and clinton talked abit about it, thought id get your opinion aswell @berkona

while we have alot of logging, almost none of it actully outputs the "real" error (like permission errors etc)

got any good suggestions on how to follow up on this? catching errors and outputing them into a good manner in the log?

thought id dive into this later, as its alot easier to debug when you got the real error instead of a exception msg

Scene Exceptions

As our friends over in Netherlands have pointed out, some scenes do weird things to their file names that might need more processing. Maybe we should abstract this into a list of regex's mapped to function or if you wanted to be more object-oriented style into classes (i.e., a SceneException class, maybe some isException(), performException() methods).

I'm anticipating having to support many different sets of folder-naming/file-naming processing features. One idea that I've been chewing on is that some season packs on torrents come as
SHOWNAME.S08.DVDRIP/SHOWNAME - 01 - EPNAME- DVDRIP.RESGROUP.mkv.

Sickbeard generally barfs on processing these because it doesn't know what season it should be. An idea I had was that if we have found a unique directory for our torrent, we can test if the folder contains some version of S## or season## (case insensitive) and if it does, and the video files don't contain any of these: ### or ##x## or S##E##, then we insert the season number into the video file name before trying to process.

I'm setting this for 6.0, but probably would be better as a 7.0 issue. Depends on when we want to start being serious about refactoring.

create_destination

I'm creating an issue cuz I'm unsure. The following code eats the exception and returns false. Isn't being unable to create a folder a failure condition? I think we should raise the exception and exit at a level that knows how to properly exit.

in TorrentToMedia.py

def create_destination(outputDestination):
    if not os.path.exists(outputDestination):
        try:
            Logger.info("CREATE DESTINATION: Creating destination folder: %s", outputDestination)
            os.makedirs(outputDestination)
        except Exception, e:
            Logger.error("CREATE DESTINATION: Not possible to create destination folder: %s", e)
            return False

Not Moving Files For CouchPotato

Hey,

Seems to not be working with CouchPotato. The files are not being moved at the end.

What am I doing wrong?

Please see: https://sourceforge.net/apps/phpbb/nzbget/viewtopic.php?f=3&t=570&start=0

It's like its not even running at all. I turned on debugging and nothing logged.

And email options not working either.

I started over and same result. Made sure I followed readme and did so perfectly both times and still as if its not even trying to run the scripts.

Thanks,

Will

Remove torrents after xxxx

I'm not sure exactly what api options are available for utorrent... But we could call a number of api calls... If utorrent had a seed for x hours then delete... We could call it...
http://www.utorrent.com/community/developers/webapi

They do have a
http://[IP]:[PORT]/gui/?action=removedata&hash=[TORRENT HASH]
This action removes the specified torrent job(s) from the torrent jobs list and removes the corresponding torrent contents (data) from disk. Multiple hashes may be specified to act on multiple torrent jobs. This action respects the option "Move to trash if possible".

So.. I wouldn't want the script looping for 24 hours... But what we could do is schedule a cron job to run in 24 hours time... But not sure if we can easily define the hash within the cron job...

Otherwise we could schedule a cron job to do regular checks (at defined intervals) to get the time since finish etc...
Since utorrent does support a seed ratio and it appears from the link above that you can set a default seed time, perhaps these could be set there, and then a regular cron job could just remove torrents after x hours/days etc...

Otherwise we could write the torrent hash and end time into a file and have a regular cron job that would parse this file and when the times are met, call utorrent api to remove that torrent... And then remove the entry from that file...

The message below is from Rizo. This confirms that everything is currently working correctly (CPS and SB). Rizo is the originator of this potential enhancement.

...................
[quote='Rizo']
Confirmed, all works well.

You got it, I'll have to make a github account and start updating parts I'm more comfortable with explaining. I'll try and start over the weekend when I'm done with my lab work.

On a side note, is there a list of parameters you can link me to so I define my own end command when renamer has run? After skimming the code, I tried editing the last bit:

[code]

Hardlink solution with uTorrent

if inputHash and useLink:
Logger.debug("MAIN: Starting torrent %s in uTorrent", inputName)
utorrentClass.start(inputHash)

[/code]

I see in client.py you've defined start, stop, pause, forcestart, etc. Say I wanted to stop and delete the torrent after 24 hrs of seeding (per BTN tracker rules), how would I go about that? I realize the script would be running continually, but that's fine.

Also this is a big one, but do you think it would be possible to vary the end command depending on what tracker the file is associated with? That would bring the script to god tier complete automation. ๐Ÿ†’

Like I said, legendary work man. Really nice script, thanks again.

"universal" extraction tool

still dont like that we're so dependent on external tools, we should try to implent a library that we can call

edit to self: transmission dosnt support os enviromental variables

Setup.py support?

Wouldn't it be nice if we could hook into dist-utils and auto-install our scripts to /usr/local/bin and our code to $PYTHONPATH/site-packages? This is what I followed when I was first learning about packaging.

P.S, better name-spacing too

Logging: for future reference

Just creating this to have it in mind later on

Berkona wrote:
While I was looking at your code, trying to figure this out, I notice that you hijack stdout and redirect it to a log. Is there a reason why you use print functions for output? Something to consider since you already use a ConfigParser to parse your ini config, you could use the logging module (http://docs.python.org/2/library/logging.html) for all calls. The main advantage is that you gain the ability for clients to configure logging differently/add multiple output points. Check out dir_linker.main() (https://github.com/berkona/dirlinker/blob/master/dirlinker.py) and log_config.ini (https://github.com/berkona/dirlinker/blob/master/log_config.ini) to see one way to implement both stdout and file logging. You could also check out my work in qtimer (qtimer.core.configure_logging : https://github.com/berkona/qtimer/blob/master/qtimer/core.py). That scheme uses a static log file in combination with a logging directory. The log file 'debug.log' is rotated on every time the core is created so that you end up with neat little log files for each run. Each foo.log.N is a seperate run going backwards in time (i.e., debug.log, debug.log.1, debug.log.2, debug.log.3).

refactor the code

we should really try to sort all code to defines or classes, and call them when we need them to save cpu and ram (I know the script dosnt take much, but I'll take this on by learning how to structure code properly). Some functions dosnt even need to be called when running one client or the other

im seting this for 6.0 release, perhaps to early?

[REQ] Option to delete all files after failed download

I noticed that with both SABnzbd and NZBget when there is a failed download the files won't be deleted.

I think it should be possible to have a option for at least NZBget to delete complete failed download folder?

Do you think this is possible?

I noticed this with CouchPotato, SickBeard (failed download handling fork) has an option to delete files after failed download, haven't seen such in CP.

Change the name

I just got this error:

Processing folder /media/nas/Downloads/tmp/The.Walking.Dead.S03E11.1080p.WEB-DL.AAC2.0.H.264-NLSubs [=-< Q o Q >-=]

Recursively processing a folder: M1080f1d9df91d2bf3d8s3e11

Processing folder /media/nas/Downloads/tmp/The.Walking.Dead.S03E11.1080p.WEB-DL.AAC2.0.H.264-NLSubs [=-< Q o Q >-=]/M1080f1d9df91d2bf3d8s3e11

Recursively processing a folder: LEES DIT

Processing folder /media/nas/Downloads/tmp/The.Walking.Dead.S03E11.1080p.WEB-DL.AAC2.0.H.264-NLSubs [=-< Q o Q >-=]/M1080f1d9df91d2bf3d8s3e11/LEES DIT

Processing /media/nas/Downloads/tmp/The.Walking.Dead.S03E11.1080p.WEB-DL.AAC2.0.H.264-NLSubs [=-< Q o Q >-=]/M1080f1d9df91d2bf3d8s3e11/QoQ-sbusLN.462x.LD-BEW.0801.01E30S.daed.gniklaW.ehT.mkv (None)

Parsed QoQ-sbusLN.462x.LD-BEW.0801.01E30S.daed.gniklaW.ehT.mkv into QoQ-sbusLN 462x LD-BEW - S8E1 - 01E30S.daed.gniklaW.ehT [ABD: False]

Checking scene exceptions for a match on QoQ-sbusLN 462x LD-BEW

Looking up QoQ-sbusLN 462x LD-BEW in the DB

Looking up name QoQ-sbusLN 462x LD-BEW on TVDB

Looking up name QoQ-sbusLN 462x LD-BEW in all languages on TVDB

Parsed /media/nas/Downloads/tmp/The.Walking.Dead.S03E11.1080p.WEB-DL.AAC2.0.H.264-NLSubs [=-< Q o Q >-=]/M1080f1d9df91d2bf3d8s3e11/QoQ-sbusLN.462x.LD-BEW.0801.01E30S.daed.gniklaW.ehT.mkv into QoQ-sbusLN 462x LD-BEW - S8E1 - 01E30S.daed.gniklaW.ehT [ABD: False]

Checking scene exceptions for a match on QoQ-sbusLN 462x LD-BEW

Looking up QoQ-sbusLN 462x LD-BEW in the DB

Looking up name QoQ-sbusLN 462x LD-BEW on TVDB

Looking up name QoQ-sbusLN 462x LD-BEW in all languages on TVDB

Parsed M1080f1d9df91d2bf3d8s3e11 QoQ-sbusLN.462x.LD-BEW.0801.01E30S.daed.gniklaW.ehT.mkv into M1080f1d9df91d2bf3d8s3e11 QoQ-sbusLN 462x LD-BEW - S8E1 - 01E30S.daed.gniklaW.ehT [ABD: False]

Checking scene exceptions for a match on M1080f1d9df91d2bf3d8s3e11 QoQ-sbusLN 462x LD-BEW

Looking up M1080f1d9df91d2bf3d8s3e11 QoQ-sbusLN 462x LD-BEW in the DB

Looking up name M1080f1d9df91d2bf3d8s3e11 QoQ-sbusLN 462x LD-BEW on TVDB

Looking up name M1080f1d9df91d2bf3d8s3e11 QoQ-sbusLN 462x LD-BEW in all languages on TVDB

Processing failed for /media/nas/Downloads/tmp/The.Walking.Dead.S03E11.1080p.WEB-DL.AAC2.0.H.264-NLSubs [=-< Q o Q >-=]/M1080f1d9df91d2bf3d8s3e11/QoQ-sbusLN.462x.LD-BEW.0801.01E30S.daed.gniklaW.ehT.mkv: 

This is QoQ that is using the name backwards, is there any option to just use the folder name instead ? or perhaps (way better) when the script finds: QoQ-sbusLN string reverse it?

transcoding feature

I've been toying with the idea of implenting such a feature. the main goal would be to be able to set a few input parameters (such as video and audio codec) and output the processed file

advantages would be to use the files with ipads, phones, ps3 etc..

What do you guys think?

Sync forked repo?

I basically want to totally wipe out my fork and rebase from master and dev branches on the upstream. Is there a way to do this?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.