clinton-hall / nzbToMedia

Provides NZB and Torrent postprocessing To CouchPotatoServer, SickBeard/SickRage, HeadPhones, Mylar and Gamez
GNU General Public License v3.0
671 stars 176 forks source link

Category is not unique. #548

Closed ghost closed 9 years ago

ghost commented 10 years ago

Everything disabled (SB, NZBDrone), except the UserScript category. TorrentToMedia.py not detecting it properly and failing.

[02:25:17] [ERROR]::MAIN: Category:[tv] is not unique, ['SickBeard', 'UserScript'] are using it. Please rename it or disable all other sections using the same category name in your autoProcessMedia.cfg and try again.
[02:25:17] [ERROR]::MAIN: A problem was reported when trying to perform a manual run for UserScript:tv.
[02:25:17] [ERROR]::MAIN: A problem was reported in the ./TorrentToMedia.py script.
[SickBeard]
    #### autoProcessing for TV Series
    #### tv - category that gets called for post-processing with SB
    [[tv]]
        enabled = 0
        host = localhost
        port = 8081

[NzbDrone]
    #### autoProcessing for TV Series
    #### ndCategory - category that gets called for post-processing with NzbDrone
    [[tv]]
        enabled = 0
        apikey = ""
        host = localhost
        port = 8989

[UserScript]
    #Use user_script for uncategorized downloads
    #Set the categories to use external script.
    #Use "UNCAT" to process non-category downloads, and "ALL" for all defined categories.
    [[tv]]
        enabled = 1
        user_script_mediaExtensions = ALL
        extract = 1
        user_script_path = /path/uncat.sh
        user_script_param = DN, TN, TL
        user_script_runOnce = 1
        unique_path = 1
        user_script_successCodes = 0
        user_script_clean = 1
        delay = 120
        watch_dir = /path
clinton-hall commented 10 years ago

I just can't reproduce this. if I set [SickBeard][[tv]] enabled = 1 I get this, but if enabled = 0 This works as expected and only finds UserScript.

I thought perhaps there may have been a command that wasn't working on some versions of python etc, but if that was the case it would identify UserScript, SickBeard AND NzbDrone.

so the interesting thing here is that this same call determines NzbDrone to not be eneabled, but it thinks SickBeard is enabled?

Can you send through your complete autoProcessMedis,cfg (via email) so I can test? Strip out apis and passwords etc

ghost commented 10 years ago

it looks like safe_mode may have been the issue. just disabled and now seems to be working.

ghost commented 10 years ago
# nzbToMedia Configuration
# For more information, visit https://github.com/clinton-hall/nzbToMedia/wiki

[General]
    # Enable/Disable update notifications
    version_notify = 0
    # Enable/Disable automatic updates
    auto_update = 0
    # Set to where your git executable is located
    git_path = /usr/bin
    # GitHUB user for repo
    git_user = ""
    # GitHUB branch for repo
    git_branch = dev
    # Enable/Disable forceful cleaning of leftover files following postprocess 
    force_clean = 1
    # Enable/Disable logging debug messages to nzbtomedia.log
    log_debug = 1
    # Enable/Disable logging database messages to nzbtomedia.log
    log_db = 1
    # Enable/Disable logging environment variables to nzbtomedia.log (helpful to track down errors calling external tools.)
    log_env = 1
    # Set to where your ffmpeg/ffprobe executables are located
    ffmpeg_path = /usr/bin
    # Enable/Disable media file checking using ffprobe.
    check_media = 0
    # Enable/Disable a safety check to ensure we don't process all downloads in the default_downloadDirectories by mistake.
    safe_mode = 0

[Posix]
    ### Process priority setting for External commands (Extractor and Transcoder) on Posix (Unix/Linux/OSX) systems.
    # Set the Niceness value for the nice command. These range from -20 (most favorable to the process) to 19 (least favorable to the process).
    niceness = 0
    # Set the ionice scheduling class. 0 for none, 1 for real time, 2 for best-effort, 3 for idle.
    ionice_class = 2
    # Set the ionice scheduling class data. This defines the class data, if the class accepts an argument. For real time and best-effort, 0-7 is valid data.
    ionice_classdata = 4

[CouchPotato]
    #### autoProcessing for Movies
    #### movie - category that gets called for post-processing with CPS
    [[movie]]
        enabled = 0
        apikey = ""
        host = localhost
        port = 5050
        ###### ADVANCED USE - ONLY EDIT IF YOU KNOW WHAT YOU'RE DOING ######
        ssl = 0
        web_root = ""
        # Enable/Disable linking for Torrents
        Torrent_NoLink = 0
        method = renamer
        delete_failed = 0
        wait_for = 2
        extract = 1
        # Set this to minimum required size to consider a media file valid (in MB)
        minSize = 0
        # Enable/Disable deleteing ignored files (samples and invalid media files)
        delete_ignored = 0
        ##### Enable if Couchpotato is on a remote server for this category
        remote_path = 0
        ##### Set to path where download client places completed downloads locally for this category
        watch_dir = ""
    [[couchpotato]]
        enabled = 1
        apikey = 123
        host = 127.0.0.1
        port = 123
        ssl = 0
        web_root = /couchpotato
        delay = 65
        method = renamer
        delete_failed = 1
        wait_for = 2
        watch_dir = /path/couchpotato
        extract = 1
        delete_ignored = 1
        minSize = 0
        nzbExtractionBy = Destination
        Torrent_NoLink = 0

[SickBeard]
    #### autoProcessing for TV Series
    #### tv - category that gets called for post-processing with SB
    [[tv]]
        enabled = 0
        host = localhost
        port = 8081
        username = ""
        password = ""
        ###### ADVANCED USE - ONLY EDIT IF YOU KNOW WHAT YOU'RE DOING ######
        web_root = ""
        ssl = 0
        fork = auto
        delete_failed = 0
        # Enable/Disable linking for Torrents
        Torrent_NoLink = 0
        process_method = ""
        # force processing of already processed content when running a manual scan.
        force = 0
        extract = 1
        nzbExtractionBy = Downloader
        # Set this to minimum required size to consider a media file valid (in MB)
        minSize = 0
        # Enable/Disable deleteing ignored files (samples and invalid media files)
        delete_ignored = 0
        ##### Enable if SickBeard is on a remote server for this category
        remote_path = 0
        ##### Set to path where download client places completed downloads locally for this category
        watch_dir = ""
    [[sickbeard]]
        enabled = 1
        host = 127.0.0.1
        port = 123
        username = ""
        password = ""
        web_root = /sickbeard
        ssl = 0
        delay = 0
        watch_dir = /path/sickbeard
        fork = auto
        delete_failed = 1
        Torrent_NoLink = 0
        process_method = ""
        extract = 0
        minSize = 0
        delete_ignored = 1
        nzbExtractionBy = Destination

[NzbDrone]
    #### autoProcessing for TV Series
    #### ndCategory - category that gets called for post-processing with NzbDrone
    [[tv]]
        enabled = 0
        apikey = ""
        host = localhost
        port = 8989
        username = ""
        password = ""
        ###### ADVANCED USE - ONLY EDIT IF YOU KNOW WHAT YOU'RE DOING ######
        web_root = ""
        ssl = 0
        delete_failed = 0
        # Enable/Disable linking for Torrents
        Torrent_NoLink = 0
        extract = 1
        nzbExtractionBy = Downloader
        wait_for = 2
        # Set this to minimum required size to consider a media file valid (in MB)
        minSize = 0
        # Enable/Disable deleteing ignored files (samples and invalid media files)
        delete_ignored = 0
        ##### Enable if NzbDrone is on a remote server for this category
        remote_path = 0
        ##### Set to path where download client places completed downloads locally for this category
        watch_dir = ""

[HeadPhones]
    #### autoProcessing for Music
    #### music - category that gets called for post-processing with HP
    [[music]]
        enabled = 0
        apikey = ""
        host = localhost
        port = 8181
        ###### ADVANCED USE - ONLY EDIT IF YOU KNOW WHAT YOU'RE DOING ######
        ssl = 0
        web_root = ""
        wait_for = 2
        # Enable/Disable linking for Torrents
        Torrent_NoLink = 0
        extract = 1
        # Set this to minimum required size to consider a media file valid (in MB)
        minSize = 0
        # Enable/Disable deleteing ignored files (samples and invalid media files)
        delete_ignored = 0
        ##### Enable if HeadPhones is on a remote server for this category
        remote_path = 0
        ##### Set to path where download client places completed downloads locally for this category
        watch_dir = ""

[Mylar]
    #### autoProcessing for Comics
    #### comics - category that gets called for post-processing with Mylar
    [[comics]]
        enabled = 0
        host = localhost
        port = 8090
        username = ""
        password = ""
        ###### ADVANCED USE - ONLY EDIT IF YOU KNOW WHAT YOU'RE DOING ######
        web_root = ""
        ssl = 0
        # Enable/Disable linking for Torrents
        Torrent_NoLink = 0
        extract = 1
        # Set this to minimum required size to consider a media file valid (in MB)
        minSize = 0
        # Enable/Disable deleteing ignored files (samples and invalid media files)
        delete_ignored = 0
        ##### Enable if Mylar is on a remote server for this category
        remote_path = 0
        ##### Set to path where download client places completed downloads locally for this category
        watch_dir = ""

[Gamez]
    #### autoProcessing for Games
    #### games - category that gets called for post-processing with Gamez
    [[games]]
        enabled = 0
        apikey = ""
        host = localhost
        port = 8085
        ###### 
        library = Set to path where you want the processed games to be moved to.
        ###### ADVANCED USE - ONLY EDIT IF YOU KNOW WHAT YOU'RE DOING ######
        ssl = 0
        web_root = ""
        # Enable/Disable linking for Torrents
        Torrent_NoLink = 0
        extract = 1
        # Set this to minimum required size to consider a media file valid (in MB)
        minSize = 0
        # Enable/Disable deleteing ignored files (samples and invalid media files)
        delete_ignored = 0
        ##### Enable if Gamez is on a remote server for this category
        remote_path = 0
        ##### Set to path where download client places completed downloads locally for this category
        watch_dir = ""

[Network]
    # Enter Mount points as LocalPath,RemotePath and separate each pair with '|'
    # e.g. MountPoints = /volume1/Public/,E:\|/volume2/share/,\\NAS\
    mount_points = ""

[Nzb]
    ###### clientAgent - Supported clients: sabnzbd, nzbget
    clientAgent = sabnzbd
    ###### SabNZBD (You must edit this if your using nzbToMedia.py with SabNZBD)
    sabnzbd_host = 127.0.0.1
    sabnzbd_port = 123
    sabnzbd_apikey = 123
    ###### Enter the default path to your default download directory (non-category downloads). this directory is protected by safe_mode.
    default_downloadDirectory = ""

[Torrent]
    ###### clientAgent - Supported clients: utorrent, transmission, deluge, rtorrent, other
    clientAgent = rtorrent
    ###### useLink - Set to hard for physical links, sym for symbolic links, move to move, and no to not use links (copy)
    useLink = hard
    ###### outputDirectory - Default output directory (categories will be appended as sub directory to outputDirectory)
    outputDirectory = /path
    ###### Enter the default path to your default download directory (non-category downloads). this directory is protected by safe_mode. 
    default_downloadDirectory = ""
    ###### Other categories/labels defined for your downloader. Does not include CouchPotato, SickBeard, HeadPhones, Mylar categories.
    categories = couchpotato, sickbeard, manual, movies, music, tv
    ###### A list of categories that you don't want to be flattened (i.e preserve the directory structure when copying/linking.
    noFlatten = manual, movies, music, tv
    ###### uTorrent Hardlink solution (You must edit this if your using TorrentToMedia.py with uTorrent)
    uTorrentWEBui = http://localhost:8090/gui/
    uTorrentUSR = your username
    uTorrentPWD = your password
    ###### Transmission (You must edit this if your using TorrentToMedia.py with uTorrent)
    TransmissionHost = localhost
    TransmissionPort = 8084
    TransmissionUSR = your username
    TransmissionPWD = your password
    #### Deluge (You must edit this if your using TorrentToMedia.py with deluge. Note that the host/port is for the deluge daemon, not the webui)
    DelugeHost = localhost
    DelugePort = 58846
    DelugeUSR = your username
    DelugePWD = your password
    ###### ADVANCED USE - ONLY EDIT IF YOU KNOW WHAT YOU'RE DOING ######
    deleteOriginal = 0

[Extensions]
    compressedExtensions = .zip, .rar, .7z, .gz, .bz, .tar, .arj, .1, .01, .001
    mediaExtensions = .mkv, .avi, .divx, .xvid, .mov, .m2ts, .wmv, .mp4, .mpg, .mpeg, .vob, .iso, .m4v
    audioExtensions = .mp3, .aac, .ogg, .ape, .m4a, .asf, .wma, .flac
    metaExtensions = .nfo, .sub, .idx, .srt, .jpg, .gif

[Transcoder]
    # getsubs. enable to download subtitles.
    getSubs = 0
    # subLanguages. create a list of languages in the order you want them in your subtitles. 
    subLanguages = eng, spa, fra
    # transcode. enable to use transcoder
    transcode = 0
    ###### duplicate =1 will cretae a new file. =0 will replace the original
    duplicate = 1
    ignoreExtensions = .avi, .mkv
    # outputFastStart. 1 will use -movflags + faststart. 0 will disable this from being used.
    outputFastStart = 0
    # outputQualityPercent. used as -q:a value. 0 will disable this from being used.
    outputQualityPercent = 0
    # outputVideoPath. Set path you want transcoded videos moved to. Leave blank to disable.
    outputVideoPath = ""
    # processOutput. 1 will send the outputVideoPath to SickBeard/CouchPotato. 0 will send original files.
    processOutput = 0
    # audioLanguage. set the 3 letter language code you want as your primary audio track.
    audioLanguage = eng
    # allAudioLanguages. 1 will keep all audio tracks (uses AudioCodec3) where available.
    allAudioLanguages = 0
    # allSubLanguages. 1 will keep all exisiting sub languages. 0 will discare those not in your list above.
    allSubLanguages = 0
    # embedSubs. 1 will embded external sub/srt subs into your video if this is supported.
    embedSubs = 1
    # burnInSubtitle. burns the default sub language into your video (needed for players that don't support subs)
    burnInSubtitle = 0
    # extractSubs. 1 will extract subs from the video file and save these as external srt files.
    extractSubs = 0
    # externalSubDir. set the directory where subs should be saved (if not the same directory as the video)
    externalSubDir = ""
    # outputDefault. Loads default configs for the selected device. The remaining options below are ignored.
    # If you want to use your own profile, leave this blank and set the remaining options below.
    # outputDefault profiles allowed: iPad, iPad-1080p, iPad-720p, Apple-TV2, iPod, iPhone, PS3, xbox, Roku-1080p, Roku-720p, Roku-480p
    outputDefault = ""
    # hwAccel. 1 will set ffmpeg to enable hardware acceleration (this requires a recent ffmpeg)
    hwAccel = 0
    #### Define custom settings below.
    outputVideoExtension = .mp4
    outputVideoCodec = libx264
    VideoCodecAllow = ""
    outputVideoPreset = medium
    outputVideoResolution = 1920:1080
    outputVideoFramerate = 24
    outputVideoBitrate = 800k
    outputAudioCodec = libmp3lame
    AudioCodecAllow = ""
    outputAudioChannels = 6
    outputAudioBitrate = 128k
    outputAudioTrack2Codec = libfaac
    AudioCodec2Allow = ""
    outputAudioTrack2Channels = 2
    outputAudioTrack2Bitrate = 128000
    outputAudioOtherCodec = libmp3lame
    AudioOtherCodecAllow = ""
    outputAudioOtherChannels = ""
    outputAudioOtherBitrate = 128000
    outputSubtitleCodec = ""

[WakeOnLan]
    ###### set wake = 1 to send WOL broadcast to the mac and test the server (e.g. xbmc) the host and port specified.
    wake = 0
    host = ""
    port = ""
    mac = ""

[UserScript]
    #Use user_script for uncategorized downloads
    #Set the categories to use external script.
    #Use "UNCAT" to process non-category downloads, and "ALL" for all defined categories.
    [[UNCAT]]
        #Enable/Disable this subsection category
        enabled = 0
        Torrent_NoLink = 0
        extract = 1
        #Enable if you are sending commands to a remote server for this category
        remote_path = 0
        #What extension do you want to process? Specify all the extension, or use "ALL" to process all files.
        user_script_mediaExtensions = .mkv, .avi, .m2ts, .divx, .xvid, .mov, .wmv, .mp4, .mpg, .mpeg
        #Specify the path to your custom script. Use "None" if you wish to link this category, but NOT run any external script.
        user_script_path = /nzbToMedia/userscripts/script.sh
        #Specify the argument(s) passed to script, comma separated in order.
        #for example FP,FN,DN, TN, TL for file path (absolute file name with path), file name, absolute directory name (with path), Torrent Name, Torrent Label/Category.
        #So the result is /media/test/script/script.sh FP FN DN TN TL. Add other arguments as needed eg -f, -r
        user_script_param = FN
        #Set user_script_runOnce = 0 to run for each file, or 1 to only run once (presumably on teh entire directory).
        user_script_runOnce = 0
        #Specify the successcodes returned by the user script as a comma separated list. Linux default is 0
        user_script_successCodes = 0
        #Clean after? Note that delay function is used to prevent possible mistake :) Delay is intended as seconds
        user_script_clean = 1
        delay = 120
        #Unique path (directory) created for every download. set 0 to disable.
        unique_path = 1
        ##### Set to path where download client places completed downloads locally for this category
        watch_dir = ""
    [[manual]]
        enabled = 1
        extract = 1
        user_script_mediaExtensions = ALL
        user_script_path = /path/.scripts/uncat.sh
        user_script_param = DN, TN, TL
        user_script_runOnce = 1
        unique_path = 1
        user_script_successCodes = 0
        user_script_clean = 1
        delay = 120
        watch_dir = /path/manual
    [[movies]]
        enabled = 1
        extract = 1
        user_script_mediaExtensions = ALL
        user_script_path = /path/.scripts/uncat.sh
        user_script_param = DN, TN, TL
        user_script_runOnce = 1
        unique_path = 1
        user_script_successCodes = 0
        user_script_clean = 1
        delay = 120
        watch_dir = /path/movies
    [[music]]
        enabled = 1
        extract = 1
        user_script_mediaExtensions = ALL
        user_script_path = /path/.scripts/uncat.sh
        user_script_param = DN, TN, TL
        user_script_runOnce = 1
        unique_path = 1
        user_script_successCodes = 0
        user_script_clean = 1
        delay = 120
        watch_dir = /path/music
    [[tv]]
        enabled = 1
        user_script_mediaExtensions = ALL
        extract = 1
        user_script_path = /path/.scripts/uncat.sh
        user_script_param = DN, TN, TL
        user_script_runOnce = 1
        unique_path = 1
        user_script_successCodes = 0
        user_script_clean = 1
        delay = 120
        watch_dir = /path/tv

[ASCII]
    #Set convert =1 if you want to convert any "foreign" characters to ASCII (UTF8) before passing to SB/CP etc. Default is disabled (0).
    convert = 0

[passwords]
    # enter the full path to a text file containing passwords to be used for extraction attempts.
    # In the passwords file, every password should be on a new line
    PassWordFile = ""
[loggers]
[handlers]
[formatters]
[logger_root]
    handlers = console
[handler_console]
[formatter_generic]
clinton-hall commented 10 years ago

ok.. I can now re-produce the problem. looking for a fix...

clinton-hall commented 10 years ago

ok... please test latest nightly. This seems like a simple enough fix.

ghost commented 10 years ago

Everything looks to be running ok for the past 24 hours.

clinton-hall commented 10 years ago

Great news... I believe this problem has been happening for a long time. NZBGet users had reported conflicts with SB and NDrone etc, even when 1 was disabled, I thought it was an NZBGet migration issue...

So your config finally gave me a way to reproduce and ultimately fix. Thanks for your help here.