clinton-hall / nzbToMedia

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

Failed to link error. #1362

Closed saltfax closed 4 months ago

saltfax commented 6 years ago

Hey!

I got a problem with the TorrentToMedia.py that it spits out an error:

[23:45:35] [ERROR]::MAIN: Failed to link: /media/packed/auto/Homeland.S07E07.WEB.H264-DEFLATE/homeland.s07e07.web.h264-deflate.nfo to /media/unpacked/auto/Homeland.S07E07.WEB.H264-DEFLATE/homeland.s07e07.web.h264-deflate.nfo

This happends when `[Torrent] useLink =' either no, move or move-sym. My guess would be its related to the core.rmReadonly function. Not sure if that as something to do with the fact I'm running this on Freenas and ZFS.

Here comes a longer log and my config:

Log

[23:53:21] [INFO]::MAIN: Found 1 media files in /media/unpacked/auto/Homeland.S07E12.WEB.H264-DEFLATE [23:53:21] [INFO]::MAIN: Calling SickBeard:auto to post-process:Homeland.S07E12.WEB.H264-DEFLATE [23:53:21] [DEBUG]::SERVER: Attempting to connect to server at http://192.168.0.10:8081 [23:53:21] [DEBUG]::SERVER: Server responded at http://192.168.0.10:8081 [23:53:21] [INFO]::MAIN: SickBeard:auto fork set to Medusa [23:53:21] [INFO]::MAIN: FLATTEN: Flattening directory: /media/unpacked/auto/Homeland.S07E12.WEB.H264-DEFLATE [23:53:21] [DEBUG]::MAIN: Checking for empty folders in:/media/unpacked/auto/Homeland.S07E12.WEB.H264-DEFLATE [23:53:21] [DEBUG]::MAIN: calling command: /usr/local/bin/ffprobe -v quiet -print_format json -show_format -show_streams -show_error /usr/local/nzbToMedia/tests/test.mp4 [23:53:21] [INFO]::TRANSCODER: Checking [Homeland.S07E12.WEB.H264-DEFLATE.mkv] for corruption, please stand by ... [23:53:21] [DEBUG]::MAIN: calling command: /usr/local/bin/ffprobe -v quiet -print_format json -show_format -show_streams -show_error /media/unpacked/auto/Homeland.S07E12.WEB.H264-DEFLATE/Homeland.S07E12.WEB.H264-DEFLATE.mkv [23:53:21] [INFO]::TRANSCODER: SUCCESS: [Homeland.S07E12.WEB.H264-DEFLATE.mkv] has no corruption. [23:53:21] [POSTPROCESS]::SICKBEARD: SUCCESS: The download succeeded, sending a post-process request [23:53:21] [DEBUG]::SICKBEARD: Opening URL: http://192.168.0.10:8081/api/fab75eaad838228a5ace4d708ae581fc/?cmd=postprocess with params: {'nzbName': 'Homeland.S07E12.WEB.H264-DEFLATE', 'quiet': 1, 'failed': 0, 'proc_dir': '/media/unpacked/auto/Homeland.S07E12.WEB.H264-DEFLATE'} [23:53:22] [INFO]::CLEANDIRS: Directory /media/unpacked/auto/Homeland.S07E12.WEB.H264-DEFLATE still contains 2 unprocessed file(s), skipping ... [23:53:22] [INFO]::MAIN: Starting manual run for SickBeard:auto - Folder:/media/packed/auto/Homeland.S06E01.HDTV.x264-BATV [23:53:22] [INFO]::MAIN: Checking database for download info for Homeland.S06E01.HDTV.x264-BATV ... [23:53:22] [DB]::DB: Getting download info for Homeland.S06E01.HDTV.x264-BATV from the DB [23:53:22] [DB]::MAIN: nzbtomedia.db: SELECT * FROM downloads WHERE input_name=? AND status=? with args [u'Homeland.S06E01.HDTV.x264-BATV', 0] [23:53:22] [INFO]::MAIN: Unable to locate download info for Homeland.S06E01.HDTV.x264-BATV, continuing to try and process this release ... [23:53:22] [DEBUG]::MAIN: Received Directory: /media/packed/auto/Homeland.S06E01.HDTV.x264-BATV | Name: Homeland.S06E01.HDTV.x264-BATV | Category: auto [23:53:22] [DEBUG]::MAIN: SEARCH: Found the Category: auto in directory structure [23:53:22] [INFO]::MAIN: SEARCH: Found a unique directory Homeland.S06E01.HDTV.x264-BATV in the category directory [23:53:22] [DEBUG]::MAIN: Determined Directory: /media/packed/auto/Homeland.S06E01.HDTV.x264-BATV | Name: Homeland.S06E01.HDTV.x264-BATV | Category: auto [23:53:22] [INFO]::MAIN: Auto-detected SECTION:SickBeard [23:53:22] [INFO]::MAIN: Output directory set to: /media/unpacked/auto/Homeland.S06E01.HDTV.x264-BATV [23:53:22] [DEBUG]::MAIN: Scanning files in directory: /media/packed/auto/Homeland.S06E01.HDTV.x264-BATV [23:53:22] [DEBUG]::MAIN: Found 1 files in /media/packed/auto/Homeland.S06E01.HDTV.x264-BATV [23:53:22] [INFO]::COPYLINK: MEDIAFILE: [homeland.s06e01.hdtv.x264-batv.nfo] [23:53:22] [INFO]::COPYLINK: SOURCE FOLDER: [/media/packed/auto/Homeland.S06E01.HDTV.x264-BATV] [23:53:22] [INFO]::COPYLINK: TARGET FOLDER: [/media/unpacked/auto/Homeland.S06E01.HDTV.x264-BATV] [23:53:22] [INFO]::COPYLINK: Copying SOURCE MEDIAFILE -> TARGET FOLDER [23:53:22] [ERROR]::MAIN: Failed to link: /media/packed/auto/Homeland.S06E01.HDTV.x264-BATV/homeland.s06e01.hdtv.x264-batv.nfo to /media/unpacked/auto/Homeland.S06E01.HDTV.x264-BATV/homeland.s06e01.hdtv.x264-batv.nfo [23:53:22] [DEBUG]::MAIN: Checking for archives to extract in directory: /media/packed/auto/Homeland.S06E01.HDTV.x264-BATV [23:53:22] [DEBUG]::MAIN: EXTRACTOR: Unknown file type: .r05 [23:53:22] [DEBUG]::MAIN: EXTRACTOR: Unknown file type: .r16 [23:53:22] [DEBUG]::MAIN: EXTRACTOR: Unknown file type: .r11 [23:53:22] [DEBUG]::MAIN: EXTRACTOR: Unknown file type: .r08 [23:53:22] [DEBUG]::MAIN: EXTRACTOR: Unknown file type: .r02 [23:53:22] [DEBUG]::MAIN: EXTRACTOR: Unknown file type: .r06 [23:53:23] [DEBUG]::MAIN: EXTRACTOR: Unknown file type: .r15 [23:53:23] [DEBUG]::MAIN: EXTRACTOR: Unknown file type: .r20 [23:53:23] [DEBUG]::MAIN: EXTRACTOR: Unknown file type: .r18 [23:53:23] [DEBUG]::MAIN: EXTRACTOR: Unknown file type: .r12 [23:53:23] [DEBUG]::MAIN: EXTRACTOR: Unknown file type: .r01 [23:53:23] [DEBUG]::MAIN: EXTRACTOR: Unknown file type: .r03 [23:53:23] [DEBUG]::MAIN: EXTRACTOR: Unknown file type: .r09 [23:53:23] [DEBUG]::MAIN: EXTRACTOR: Unknown file type: .r10 [23:53:23] [DEBUG]::MAIN: EXTRACTOR: Unknown file type: .r17 [23:53:23] [INFO]::MAIN: Extracting /media/packed/auto/Homeland.S06E01.HDTV.x264-BATV/homeland.s06e01.hdtv.x264-batv.rar to /media/unpacked/auto/Homeland.S06E01.HDTV.x264-BATV [23:53:23] [DEBUG]::MAIN: Extracting ['unrar', 'x', '-o+', '-y'] /media/packed/auto/Homeland.S06E01.HDTV.x264-BATV/homeland.s06e01.hdtv.x264-batv.rar /media/unpacked/auto/Homeland.S06E01.HDTV.x264-BATV [23:53:34] [INFO]::MAIN: EXTRACTOR: Extraction was successful for /media/packed/auto/Homeland.S06E01.HDTV.x264-BATV/homeland.s06e01.hdtv.x264-batv.rar to /media/unpacked/auto/Homeland.S06E01.HDTV.x264-BATV [23:53:37] [INFO]::MAIN: FLATTEN: Flattening directory: /media/unpacked/auto/Homeland.S06E01.HDTV.x264-BATV [23:53:37] [DEBUG]::MAIN: Checking for empty folders in:/media/unpacked/auto/Homeland.S06E01.HDTV.x264-BATV [23:53:37] [INFO]::MAIN: Found 1 media files in /media/unpacked/auto/Homeland.S06E01.HDTV.x264-BATV [23:53:37] [INFO]::MAIN: Calling SickBeard:auto to post-process:Homeland.S06E01.HDTV.x264-BATV [23:53:37] [DEBUG]::SERVER: Attempting to connect to server at http://192.168.0.10:8081 [23:53:37] [DEBUG]::SERVER: Server responded at http://192.168.0.10:8081 [23:53:37] [INFO]::MAIN: SickBeard:auto fork set to Medusa [23:53:37] [INFO]::MAIN: FLATTEN: Flattening directory: /media/unpacked/auto/Homeland.S06E01.HDTV.x264-BATV [23:53:37] [DEBUG]::MAIN: Checking for empty folders in:/media/unpacked/auto/Homeland.S06E01.HDTV.x264-BATV [23:53:37] [DEBUG]::MAIN: calling command: /usr/local/bin/ffprobe -v quiet -print_format json -show_format -show_streams -show_error /usr/local/nzbToMedia/tests/test.mp4 [23:53:37] [INFO]::TRANSCODER: Checking [Homeland.S06E01.HDTV.x264-BATV.mkv] for corruption, please stand by ... [23:53:37] [DEBUG]::MAIN: calling command: /usr/local/bin/ffprobe -v quiet -print_format json -show_format -show_streams -show_error /media/unpacked/auto/Homeland.S06E01.HDTV.x264-BATV/Homeland.S06E01.HDTV.x264-BATV.mkv [23:53:37] [INFO]::TRANSCODER: SUCCESS: [Homeland.S06E01.HDTV.x264-BATV.mkv] has no corruption. [23:53:37] [POSTPROCESS]::SICKBEARD: SUCCESS: The download succeeded, sending a post-process request [23:53:37] [DEBUG]::SICKBEARD: Opening URL: http://192.168.0.10:8081/api/fab75eaad838228a5ace4d708ae581fc/?cmd=postprocess with params: {'nzbName': 'Homeland.S06E01.HDTV.x264-BATV', 'quiet': 1, 'failed': 0, 'proc_dir': '/media/unpacked/auto/Homeland.S06E01.HDTV.x264-BATV'} [23:53:39] [INFO]::CLEANDIRS: Directory /media/unpacked/auto/Homeland.S06E01.HDTV.x264-BATV still contains 2 unprocessed file(s), skipping ...

Config

` nzbToMedia Configuration For more information, visit https://github.com/clinton-hall/nzbToMedia/wiki

[General]

Enable/Disable update notifications

version_notify = 1
# Enable/Disable automatic updates
auto_update = 0
# Set to the full path to the git executable
git_path = /bin/git
# GitHUB user for repo
git_user = ""
# GitHUB branch for repo
git_branch = ""
# Enable/Disable forceful cleaning of leftover files following postprocess
force_clean = 0
# 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 debug nzbtomedia.log (helpful to track down errors calling external tools.)
log_env = 0
# Enable/Disable logging git output to debug nzbtomedia.log (helpful to track down update failures.)
log_git = 0
# Set to the directory where your ffmpeg/ffprobe executables are located
ffmpeg_path = /usr/local/bin
# Enable/Disable media file checking using ffprobe.
check_media = 1
# Enable/Disable a safety check to ensure we don't process all downloads in the default_downloadDirectories by mistake.
safe_mode = 1
# Turn this on to disable additional extraction attempts for failed downloads. Default = 0 will attempt to extract and verify if media is present.
no_extract_failed = 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 = 0
# 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 = 0

[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 = ""
    # api key for www.omdbapi.com (used as alternative to imdb)
    omdbapikey = ""
    # Enable/Disable linking for Torrents
    Torrent_NoLink = 0
    keep_archive = 1
    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 deleting 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 = ""
    ##### Set the recursive directory permissions to the following (0 to disable)
    chmodDirectory = 0

[Radarr]

autoProcessing for Movies

#### raCategory - category that gets called for post-processing with Radarr
[[movie]]
    enabled = 0
    apikey = ""
    host = localhost
    port = 7878
    ###### ADVANCED USE - ONLY EDIT IF YOU KNOW WHAT YOU'RE DOING ######
    web_root = ""
    ssl = 0
    # api key for www.omdbapi.com (used as alternative to imdb)
    omdbapikey = ""
    delete_failed = 0
    # Enable/Disable linking for Torrents
    Torrent_NoLink = 0
    keep_archive = 1
    extract = 1
    nzbExtractionBy = Downloader
    wait_for = 6
    # Set this to minimum required size to consider a media file valid (in MB)
    minSize = 0
    # Enable/Disable deleting 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 = ""
[[movies]]
    enabled = 1
    apikey = 2e1e0b57415243a894aede11b5034784
    host = 192.168.0.4
    port = 7878
    web_root = ""
    ssl = 0
    omdbapikey = 818c44a1
    delete_failed = 0
    Torrent_NoLink = 0
    keep_archive = 1
    extract = 1
    nzbExtractionBy = Downloader
    wait_for = 6
    minSize = 0
    delete_ignored = 0
    remote_path = 0
    watch_dir = ""

[SickBeard]

autoProcessing for TV Series

#### tv - category that gets called for post-processing with SB
[[tv]]
    enabled = 0
    host = localhost
    port = 8081
    apikey = fab75eaad838228a5ace4d708ae581fc
    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
    keep_archive = 1
    process_method = ""
    # force processing of already processed content when running a manual scan.
    force = 0
    # tell SickRage/Medusa to delete all source files after processing.
    delete_on = 0
    # tell Medusa to ignore check for associated subtitle check when postponing release
    ignore_subs = 0
    extract = 1
    nzbExtractionBy = Downloader
    # Set this to minimum required size to consider a media file valid (in MB)
    minSize = 0
    # Enable/Disable deleting 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 = ""
    ##### Set the recursive directory permissions to the following (0 to disable)
    chmodDirectory = 0
[[auto]]
    enabled = 1
    host = 192.168.0.10
    port = 8081
    apikey = fab75eaad838228a5ace4d708ae581fc
    username = ""
    password = ""
    web_root = ""
    ssl = 0
    fork = medusa
    delete_failed = 0
    Torrent_NoLink = 0
    keep_archive = 1
    process_method = ""
    force = 0
    delete_on = 0
    ignore_subs = 0
    extract = 1
    nzbExtractionBy = Downloader
    minSize = 0
    delete_ignored = 0
    remote_path = 0
    watch_dir = /media/packed/auto
    chmodDirectory = 0

[NzbDrone]

Formerly known as NzbDrone this is now Sonarr

#### autoProcessing for TV Series
#### ndCategory - category that gets called for post-processing with NzbDrone/Sonarr
[[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
    keep_archive = 1
    extract = 1
    nzbExtractionBy = Downloader
    wait_for = 6
    # Set this to minimum required size to consider a media file valid (in MB)
    minSize = 0
    # Enable/Disable deleting 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 = ""
    delete_failed = 0
    wait_for = 2
    # Enable/Disable linking for Torrents
    Torrent_NoLink = 0
    keep_archive = 1
    extract = 1
    # Set this to minimum required size to consider a media file valid (in MB)
    minSize = 0
    # Enable/Disable deleting 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 = ""

[Lidarr]

autoProcessing for Movies

#### raCategory - category that gets called for post-processing with Radarr
[[music]]
    enabled = 0
    apikey = ""
    host = localhost
    port = 8686
    ###### 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
    keep_archive = 1
    extract = 1
    nzbExtractionBy = Downloader
    wait_for = 6
    # Set this to minimum required size to consider a media file valid (in MB)
    minSize = 0
    # Enable/Disable deleting 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 = ""

[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
    keep_archive = 1
    extract = 1
    # Set this to minimum required size to consider a media file valid (in MB)
    minSize = 0
    # Enable/Disable deleting 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
    keep_archive = 1
    extract = 1
    # Set this to minimum required size to consider a media file valid (in MB)
    minSize = 0
    # Enable/Disable deleting 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 you're using nzbToMedia.py with SabNZBD)
sabnzbd_host = http://localhost
sabnzbd_port = 8080
sabnzbd_apikey = ""
###### 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, vuze, qbittorrent, other
clientAgent = transmission
###### useLink - Set to hard for physical links, sym for symbolic links, move to move, move-sym to move and link back, and no to not use links (copy)
useLink = no
###### outputDirectory - Default output directory (categories will be appended as sub directory to outputDirectory)    outputDirectory = /media/unpacked
###### Enter the default path to your default download directory (non-category downloads). this directory is protected by safe_mode.
default_downloadDirectory = /media/packed
###### Other categories/labels defined for your downloader. Does not include CouchPotato, SickBeard, HeadPhones, Mylar categories.
categories = music_videos, pictures, software, manual
###### A list of categories that you don't want to be flattened (i.e preserve the directory structure when copying/linking.
noFlatten = pictures, manual
###### uTorrent Hardlink solution (You must edit this if you're using TorrentToMedia.py with uTorrent)
uTorrentWEBui = http://localhost:8090/gui/
uTorrentUSR = your username
uTorrentPWD = your password
###### Transmission (You must edit this if you're using TorrentToMedia.py with Transmission)
TransmissionHost = 192.168.0.10
TransmissionPort = 9091
TransmissionUSR = your username
TransmissionPWD = your password
#### Deluge (You must edit this if you're 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
###### qBittorrent (You must edit this if you're using TorrentToMedia.py with qBittorrent)
qBittorrenHost = localhost
qBittorrentPort = 8080
qBittorrentUSR = your username
qBittorrentPWD = your password
###### ADVANCED USE - ONLY EDIT IF YOU KNOW WHAT YOU'RE DOING ######
deleteOriginal = 0
chmodDirectory = 0
resume = 1
resumeOnFailure = 1

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

[Plex]

Only enter these details if you want to update plex library after processing.

# Do not enter these details if you send the plex notifications from Sickbeard/CouchPotato.
plex_host = localhost
plex_port = 32400
plex_token = ""
plex_ssl = 0
# Enter Plex category to section mapping as Category,section and separate each pair with '|'
# e.g. plex_sections = movie,3|tv,4
plex_sections = ""

[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 create a new file. =0 will replace the original
duplicate = 1
# concat. joins cd1 cd2 etc into a single video.
concat = 1
# IgnoreExtensions is a comma-separated list of extensions that will not be transcoded.
ignoreExtensions = .avi, .mkv, .mp4
# 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 existing sub languages. 0 will discard those not in your list above.
allSubLanguages = 0
# embedSubs. 1 will embed 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 = ""
# hwAccel. 1 will set ffmpeg to enable hardware acceleration (this requires a recent ffmpeg)
hwAccel = 0
# generalOptions. Enter your additional ffmpeg options here with commas to separate each option/value (i.e replace spaces with commas).
generalOptions = ""
# 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, mkv, mp4-scene-release
outputDefault = ""
#### Define custom settings below.
outputVideoExtension = .mp4
outputVideoCodec = libx264
VideoCodecAllow = ""
outputVideoPreset = medium
outputVideoResolution = 1920:1080
outputVideoFramerate = 24
outputVideoBitrate = 800000
outputVideoCRF = 19
outputVideoLevel = 3.1
outputAudioCodec = ac3
AudioCodecAllow = ""
outputAudioChannels = 6
outputAudioBitrate = 640k
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 = 192.168.1.37
port = 80
mac = 00:01:2e:2D:64:e1

[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
    keep_archive = 1
    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, .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 the 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 = ""

[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 = ""

[Custom]

enter a list (comma separated) of Group Tags you want removed from filenames to help with subtitle matching.

# e.g remove_group = [rarbag],-NZBgeek
# be careful if your "group" is a common "real" word. Please report if you have any group replacements that would fall in this category.
remove_group = ""

`

clinton-hall commented 6 years ago

was this from a manual run? When run as a triggered event from The Torrent Client, this should pause the seeding which removes a file lock. If you pause all seeding downloads in the torrent client, then run the script, do these errors disappear?

saltfax commented 6 years ago

It happends both from manual and on torrent completion. No difference with all torrents paused or manual run from a watchdir totally unrelated to transmission. User running transmission and the TorrentToMedia.py script has the appropriate permissions too. Even tried with 777. No difference.

Also I cant get the script to accept my arguments when doing a manual run. Instead it does ahead to process the whole watchdir all over again. Extracting everything all over. It does however ignore to copy files that is existing in the output directory.

[11:11:46] [WARNING]::MAIN: Invalid number of arguments received from client, Switching to manual run mode ...

The command looks like this: python2 TorrentToMedia.py '/media/packed/auto' 'The.Walking.Dead.S03E12.HDTV.x264-EVOLVE' '5382d2e71a6eb59e4e16a9530c2f38f6e22771f0'

Also tried to mimic the arguments that transmissions sends when it triggers automatically. Same result.

clinton-hall commented 6 years ago

Transmission doesn't pass the arguments by command line. It exports the arguments as Environment variables.

export TR_TORRENT_DIR="/media/packed/auto"
export TR_TORRENT_NAME="The.Walking.Dead.S03E12.HDTV.x264-EVOLVE"
export TR_TORRENT_HASH="5382d2e71a6eb59e4e16a9530c2f38f6e22771f0'"
export TR_TORRENT_ID="<enter torrent ID here>"
python2 TorrentToMedia.py

just make sure you enter the correct torrent dir, name, hash, and ID from Transmission in the export fields.

saltfax commented 6 years ago

Ah! That makes sense. Thanks for clearing that up.