Cayars - Setup walk through and some tips and tricks

@cayars said:
@jjross asked how I use SnapRaid and to put together a tutorial: https://forums.plex.tv/discussion/comment/1113441#Comment_1113441

This fits in nicely with this thread so here we go:
from www.snapraid.it homepage
SnapRAID is a backup program for disk arrays. It stores parity information of your data and it recovers from up to six disk failures.

SnapRAID is mainly targeted for a home media center, with a lot of big files that rarely change.

Beside the ability to recover from disk failures, other features of SnapRAID are:

All your data is hashed to ensure data integrity and to avoid silent corruption.
If the failed disks are too many to allow a recovery, you lose the data only on the failed disks. All the data in the other disks is safe.
If you accidentally delete some files in a disk, you can recover them.
You can start with already filled disks.
The disks can have different sizes.
You can add disks at any time.
It doesn’t lock-in your data. You can stop using SnapRAID at any time without the need to reformat or move data.
To access a file, a single disk needs to spin, saving power and producing less noise.


SnapRAID is different from hardware RAID, unRAID, FlexRAID, ZFS, Storage Spaces in one IMPORTANT way.
All of the other programs/solutions just mentioned use real-time parity creation. SnapRAID only creates/modifies parity when you tell it to.

How is this an important distinction and is a PRO or CON???

Most people think of parity as a way to rebuild an array when you have a hardware failure. While this is true, it’s not the only reason to use parity. Parity information can be used for other reasons as well. So quickly I will tell you I have my system setup to ā€œSYNC parityā€ at 4am. I’m usually done for the day way before this so this time of day works for me.

So in a nutshell, everyday at 4am my system will do a quick check to see what files are new or modified in my ā€œarrayā€ and will recalculate the parity. I can also manually kickoff a parity sync anytime I want with a simple SNAPRAID SYNC command.

Now that you have the ā€œbackground infoā€ on my sync schedule I’ll explain a PRO of SnapRAID. So lets assume I do a big ā€œuser errorā€ and delete all my movies that start with the letter ā€œfā€ from one of my drives. I then copy other data to this drive over writing what was once my ā€œfā€ movies. With other programs/hardware the operating system is quite happy to delete these files and since the parity is getting written in real-time all parity is up to date and the parity knows nothing of the now missing files.

Now in this example where I just wacked one of my libraries I can get it back without having to resort to ā€œundeleteā€ utils which probably wouldn’t work since I just overwrote them anyway. In this case I have the parity from my last 4am run. So I just move the ā€œnewā€ data back off the disk to free up enough room to restore my files. I issue the proper SnapRAID command line and POOF my files are back. In this case SnapRAID is able to compare the parity and to use the other drives to figure out what’s missing. As long as I don’t remove data from the other drives I can ā€œrestoreā€ my files pretty easily. In the event I also changed data on other drives that could effect the parity calculations SnapRAID will tell me and bypass those files. It will always recover as much as possible and not just stop.

So that is just one simple example of a PRO. Another is the ability to check for bitrot.

The biggest CON of SnapRAID is that it’s not real-time and any new additions of data you add between SYNCs is possibly at a loss in the event of a hard drive crash.
So when I add lots of new data I typically kick off a manual run instead of waiting until 4am. As easy as ā€œsnapraid syncā€ from the command line.
It is usually quite fast to sync data unless you change/move data around on your drives which is not ideal with snapraid.


SnapRAID is perfect IMHO for media files that don’t change often. I wouldn’t use it for repositories that are used in business where files are constantly changing. But for media libraries where we typically keep adding data without changing what is already there it’s close to perfect. BTW, you can change your files but this just causes the sync to take longer.

With the above said I also use StableBit’s DrivePool (StableBit - The home of StableBit CloudDrive, StableBit DrivePool and the StableBit Scanner). I think most people are familar with this but just in case your not familar with it. DrivePool allows you to take a JBOD (just a bunch of disks) and combine them together into one large drive. DrivePool can go beyond this and can duplicate data on different drives. You can have multiple copies of files spread out on different disks. This would require you to have 2x or 3x the amount of storage to have one or two backups of your data. Obviously this provides protection that comes at the cost of double or tripple your storage costs!

The great thing about DrivePool is that you can remove a drive (or have a crash) and your POOL survives. Only the data on the missing drive is removed from the pool. You can remove a drive, put it in another computer and access (read/write) the drive. There is no propriatary format on the drive. The data is not striped for example.

So in the event of a hard drive crash, only the data on the crashed drive is missing from your pool. If you have 5 data drives and loose 1 drive you still have 80% of media online.

So at this point we know DrivePool is pretty great for use with Windows Plex systems. You can add additional space super easiely and never hit obstacles like with other NAS or hardware RAID. You don’t need to add drives in groups nor worry about striping.

NOW THE PROBLEM WITH DRIVEPOOL
Drivepool’s solution to ā€œbackupā€ is to duplicate your data over multiple drives. This requires you to have double the storage. This isn’t to hard when you only have 2 or 3 disks of original storage but becomes more of a problem as your library grows. What if you have 8 drives at present, do you want to purchase another 8 drives to store these dupes? I know I don’t!

ENTER SNAPRAID WITH DRIVEPOOL
Let’s assume we have 5 original disk in our pool. Instead of adding another 5 drives in order to duplicate our data the ā€œdrivepool wayā€ we can instead add ONE new drive for SNAPRAID’s use to store parity on. SnapRAID once setup looks at those 5 drives and creates the parity for the 5 drives but stores them only on the parity drive. You could technically now loose a drive in your DRIVEPOOL, replace the drive and use SNAPRAID to recover your data.

As we all know you can sometimes loose multiple drives at the same time. What if you were using the Duplication feature of DrivePool and lost two drives? If these two drives happen to both have the original file and the duplicated file you just lost that file!

So with our 5 original drives and 5 ā€œextraā€ drives (10 total drives) for DrivePool you could loose two drives and lose data. With SnapRAID you can have multiple Parity drives. With SnapRaid we could have our 5 original drives plus 2 parity drives (7 total drives) and we could now sustain a loss of any two drives without total loss of our data. For these same 10 drives in total we could have 5 data drives and 5 parity drives and it would take a loss of 6 drives for us to loose our data.

So as you can see as your collection of media grows you can further protect it by adding a new parity drive. As an example if you had 20 data drives you could protect them pretty well with the use of 3 parity drives. You would have to loose 4 drives in total for data loss. You could technically have 25+ data drives protected by 1 parity drive but I would not consider anything less than 2 parity drives.

Once you get the hang of how to setup and use the combination of DrivePool and SnapRaid you can get a bit more elaborate. For example you can use SELECTIVE duplication in DrivePool at the directory level. On my system I have directories such as MOVIES, NFL, TV SHOWS, EDUCATION, etc that match my Plex Libraries. None of these directories are duplicated. I then have a directory called DOCUMENTS where I typically store Word, Excel, PDF, etc. These are small files compared to my media files. This DOCUMENTS directory is setup to duplicate to 2 other drives by DrivePool.

This DOCUMENTS directory is really the only directory that will change during the day for me where I’d want to be able to quickly recover/access data in the event of a hard drive crash. Since this directory is only a few GB in size it replicates quickly and I always have the data available even in the event of a couple of drive crashes.

NOW ON TO THE SETUP
The first thing you want to do is TURN OFF all balancing options in DrivePool. You do not want DrivePool moving your files around automatically to try and keep the drives balanced as this will cause you grief with SnapRAID. I personally self balance my drives. I try to attain 250GB of free space on each drive. This allows me to add a lot of media to each drive during the day without DrivePool shifting things and making my parity go out of whack.

On my system I will typically do something like this:
Drive 1: Movies# to Movies\E
Drive 2: Movies\F to Movies\G
Drive 3: Movies\H to Movies\K
For some letters like T that use mulitple drives and just keep them ā€œbalancedā€ aphabetically.

Any time I self balance my drives to free each drive back to 250 I rerun a sync command which gets my parity all nice again. :slight_smile:

So back to the SnapRAID setup. So once you have turned off all the self balancing options in DrivePool you are ready to install and configure SnapRAID. This is simple. Just install it. :slight_smile: Then you need to edit the snapraid.conf file. Here is an example from my system shopped down to 10 data drives and 2 parity drives for easier reading:

Content Drives are: E, G, M, N, O, P, Q, R, S & T
Parity Drives are Y & Z (these are both network NAS drives)

So in the config file you setup what drives are parity and what drives are content. SnapRaid will write a single file to the root of this drive (in my config). I use a name that makes sense to me. My parity drives are numbered starting at Z working backwards. My content drives in this example start at E and go upward. For content drives I use the drive letter in the file name. At any time I can look at the root directory of any drive and can tell what drive letter it is this way. No guessing in the event of a problem.

SnapRaid only requires one content list to be stored but you can use multiple drives. I write the content to all drives. Just in case. Nothing like writing it to 2 drives and having both of these drives fail. :frowning:
content E:\snapraid.E.content
content G:\snapraid.G.content
content M:\snapraid.M.content

Next you setup the drives/directories you wish to apply parity to and give it a name. I start at ā€œd1ā€ and work my way up. You will also note I do not create parity from the root of the drive. Instead I set the ā€œdiskā€ to start with the GUID of the DrivePool disk/poolpart (PoolPart.aaed7454-f99c-4644-8463-cb727acc4eac). I do this because if you loose a drive and replace it DrivePool will create a new GUID. I then edit the config file to use the new GUID and then do a restore/recover op. This way as the files are being restored they are immediately available to DrivePool since they get restored to the new GUID being used.
disk d1 E:\PoolPart.aaed7454-f99c-4644-8463-cb727acc4eac
disk d2 G:\PoolPart.1abeb4f3-90e0-4895-82df-50df19529469
disk d3 M:\PoolPart.9cae94bc-8f75-4bf0-8f38-0ff2175a1d8d

Next up is the exclusions you want SnapRAID to ignore. I’m using the defaults except for:
exclude \CloudPart.e238a496-4114-4699-9782-d229dafa06ec\

I set an autosave duration so parity is save every so often instead of waiting till the end:
autosave 5000

Everything else is defaults. Here’s the complete conf file contents:
Note had to add ā€œ.txtā€ to file name for it to upload here.

Carlo

Gotta be honest, you can be a Dell H700 RAID controller used for $89 and just build a RAID5 or RAID6. Or you could go the software route with UNRAID and virtualize your Plex box.

Manually balancing drives? Absurd amount of effort.

@cayars said:

@shpankey said:
Nah, that’s too much extra work. It’s been processing them in place just fine w/o issues.

Anyhow, yeah, looks like this pegged the Ethernet. Before, CPU was ~95 - 100%… now it’s 4 - 8% and Ethernet at the max transfer speed my network can do.

Dang, this sucks. I guess I’ll go back to the multi-threaded way. How big a difference does this single thread method make in quality?

You can copy a file down while one is being processed having a queue ready to go. This way Ethernet doesn’t matter much.

@shpankey said:
Interesting… I changed out cayars ffmpeg for a new one I just built. Will be interested if this is still the case and why… perhaps it’s doing better compression?

I routinely upgrade to the latest ffmpeg as well. I probably should update the ZIP file more often so it contains the latest version.

@shpankey said:
Getting this error now: An unexpected error occurred, processing of this file has failed
ā€˜charmap’ codec can’t decode byte 0x9d in position 5586: character maps to < undefined >

Just in case you’re wondering, I put your FFMPEG back in, still the same error.

Most likely a unicode issue. The python scrips could use a upgrade in this department. If the file has asian chars in it that will normally do it.

It’s a python 2 problem, it doesn’t deal well with unicode stuff. If you clone the repo of GitHub - mdhiggins/sickbeard_mp4_automator: Automatically convert video files to a standardized format with metadata tagging to create a beautiful and uniform media library it has added python 3 compatability.

(Do note that you NEED to follow the instructions at the bottom of that page, specifically
ā€œPrerequesite PIP Package Installation Instructionsā€ )

Install python 3 on your pc, then add a file named run.bat into the folder, and edit it so that it says

py -3 manual.py -a -i ā€œC:\Location\Of\Filesā€

The py -3 part will tell python to use python 3 instead of python 2, just in case you have both installed.

I’ve been using the mp4 automator with python 3 for about 2 months now without any issues. You can also set it up so that it auto-processes anything that you download with sabnzbd, even telling sonarr/couchpotato to import the file after it is done. It also supports nvenc_h264/nvenc_h265.

I’ve got a question regarding the output directory. Is there a method where you can output it to the source directory? For example, I’ve got a directory on several drives called ā€œTV - Seriesā€, which then has folders based on SHOW\SEASON. I really dread having to processing these, as I don’t want to spend the time moving files around.

followed.
Thx

@Pope Viper said:
I’ve got a question regarding the output directory. Is there a method where you can output it to the source directory? For example, I’ve got a directory on several drives called ā€œTV - Seriesā€, which then has folders based on SHOW\SEASON. I really dread having to processing these, as I don’t want to spend the time moving files around.

If you edit the autoProcess.ini file
output_directory =
Leave this blank, then it will put the new file in the source dir.

Perfect, thank you!

@cayars said:
Here is a set of scripts that you can use to automate mp4 creation of files.

I’d recommend running your files through FileBot first to rename them correctly before running them through this script.  It can pull SRT files so everything ends up with proper names this way.

The only pre-requisite is to have python 2.7.9 installed. Python Release Python 2.7.9 | Python.org

(I’m running 64bit version for windows installed to C:\Python27)

This is a modified version of sickbeard_mp4_automator with modifications by me. I pulled out all the integration features to make setup much easier.  I also modified it to produce higher quality MP4 files that will direct play better with Plex.

Download convert.zip from ftp://ayars.tv

username and password are both guest

…

@cayars Hey, I have been using this script on almost every single video file I have in my Plex server, which is after 5-8 months of work, around 12 TB in size - 105 different TV series and around 1100 Movies, all in 1080p.
This script is one of the most time consuming things I do, and I love it. I actually really enjoy spending the time optimizing all the video files (and that wouldnt be possible without this script) I spent more time optimizing my library then watching movies/series … Im wierd like that :slight_smile:

With that said, U mention that it is possible to change the settings of this script - That might be a simple task for many but for me this is completely unknown, 90% of my library is in english, so 9/10 times its no problem but the other 10% of my movies are in my native language, which is Norwegian - I cant run these movies through this script, since it removes all audio files that are not english, so Im left with a movie without sound. How is it possible for me to change the settings so that this script keeps english AND norwegian sound-tracks?

How can I find the abbreviation for Norwegian? Im guessing its ā€œnorā€ ?

Will the script be: eng, nor (?)

[MP4]
ffmpeg = ffmpeg.exe
ffprobe = ffprobe.exe
output_directory = G:\DoneConvert\Done
output_extension = mp4
output_format = mp4
delete_original = True
audio-codec = ac3,mp3,dts,dca
video-codec = h264,x264
video-bitrate =
ios-audio = True
ios-first-track-only = True
audio-language = eng,nor,swe
audio-default-language = eng
audio-channel-bitrate = 256
subtitle-language = eng,nor,swe
subtitle-default-language = eng
convert-mp4 = True
download-artwork = False
fullpathguess = True
tag-language = en
copy_to =
download-subs = False
move_to =
max-audio-channels =
tagfile = False
embed-subs = False
subtitle-codec = srt
video-max-width =
permissions = 777
relocate_moov = False
sub-providers = addic7ed, podnapisi, thesubdb, opensubtitles

This does not work for me… It rips the subs - but it does not convert the movie file (that is in either norwegian or swedish)

Thanks a lot for this amazing script!

@cayars said:
One of the ā€œproblemsā€ with the conversion script is that if the video is already in h.264 format it will copy the video instead of transcoding it. Generally speaking this is a good thing with a couple of ā€œgotchasā€. If the video is 10 bit it will often cause the Plex Transcoder to kick in because many clients won’t use video with more than 8 bits.

How to handle this:
First, run the file through the conversion scripts as normal and then add it to Plex. We can then run some SQL against the database to look for certain things like 10 bit video which we’ll want to convert. Since this file has already been run through the script the audio will be fine. So we’ll setup to transcode the video while copying the audio tracks.

Create a text file call transcode.txt and put the following inside the text file:
.open ā€˜C:\PlexData\Plex Media Server\Plug-in Support\Databases\com.plexapp.plugins.library.db’
.output Transcode.bat
select ā€˜C:\Convert\ffmpeg -i "’ || file || ā€˜" -c:v libx264 -c:v libx264 -preset slow -crf 18 -acodec copy -map 0 -profile:v high -level 4.0 ā€œC:\convert\done' ||
replace(file, rtrim(file, replace(file, '', ā€˜ā€™ ) ), ā€˜ā€™) || 'ā€ā€™
FROM media_parts join media_items
on media_parts.media_item_id=media_items.id
where media_parts.extra_data like ā€˜%AVideoProfile=high%%2010%’
order by file
limit 100;

You can remove the limit 100 from above but leave the semi-colon at the end. The 100 simply builds a file of 100 files to process per batch. You will need to change the first line to point to your database. Change the 3rd line to point to your version of ffmpeg.

This uses the sqlite3 program mentioned in the previous post so make sure that is installed.
This will create a batch file called transcode.bat that you can run. It doesn’t use the conversion scripts but instead calls ffmpeg directly which we need to do because the scripts will not transcode the video since it’s already in h.264 format.

Output of the files will be in c:\convert\done directory but you can change that location above as well.

Carlo

Almost have this working, but I keep getting this error, it has to do with how windows finds the file. Can you provide any help…

/Volumes/T/TV Shows/How I Met Your Mother/Season 7/How I Met Your Mother - S07E08 - The Slutty Pumpkin Returns DVD.mp4: No such file or directory

…emphasis mine. I need to edit your code above to where it will just use T:\TV Shows\etc… etc… Is there any ways you can show me what to change? Here’s what I’m currently using…

.open ā€˜C:\PlexData\Plex Media Server\Plug-in Support\Databases\com.plexapp.plugins.library.db’
.output liveTranscode.bat
select ā€˜C:\ffmpeg\bin\ffmpeg -i "’ || file || ā€˜" -c:v libx264 -c:v libx264 -preset slow -crf 18 -acodec copy -profile:v high -level 4.0 ā€œC:\convert\done' ||
replace(file, rtrim(file, replace(file, '', ā€˜ā€™ ) ), ā€˜ā€™) || 'ā€ā€™
FROM media_parts join media_items
on media_parts.media_item_id=media_items.id
where media_parts.extra_data like ā€˜%AVideoProfile=high%%2010%’
order by file
limit 100;

…also, I would very much just prefer it put in the directory where the file is, instead of using c:\convert\done and having to put them back myself.

Getting some of this figured out, btw… getting this error, you may want to update…

Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead.

…also, as an aside… what’s this…

track 2: codec frame size is not set

I just need to edit this code below to where it can be used from a Windows 10 command prompt. The T drive is a network drive that is mapped to an Imac that uses a Thunderbolt connection to a RAID server mapped to the letter T. So instead of /Volumes/T/etc it needs to come out as T:
ame\folder\file\

.open ā€˜C:\PlexData\Plex Media Server\Plug-in Support\Databases\com.plexapp.plugins.library.db’
.output Transcode.bat
SELECT ā€˜c:\python27\Python C:\Users\Chad\Desktop\sickbeard_mp4_automator-master\manual.py -a -i "’ || file || ā€˜"’ FROM media_parts join media_items
on media_parts.media_item_id=media_items.id
where container=ā€˜mp4’ and optimized_for_streaming <> 1
order by file;

never mind, i just used TextPad to mass rename (replace). still would like your code above to do it, to save me the extra steps, but at least i’m cooking w/ gas now :smiley:

p.s. for anyone trying this… a couple of fixes for you, to save you the troubleshooting…

select ā€˜C:\Convert\ffmpeg -i "’ || file || ā€˜" -c:v libx264 -c:v libx264 -preset slow -crf 18 -acodec copy -map 0 -profile:v high -level 4.0 "C:\convert\done’ ||

…should instead be changed to…

select ā€˜C:\Convert\ffmpeg -i "’ || file || ā€˜" -c:v libx264 -preset slow -crf 18 -c:a copy -profile:v high -level 4.0 "C:\convert\done’ ||

…not sure why -c:v libx264 was put in twice, and -c:a saved me on some errors.

@cayars - is it possible to set up your autoconvert script to go from folder to folder on a drive and convert any MKV found? I could do it manually, but I’d love to be able to automate it with already existing file structure.

You can already do this w/ his script. Use an instance of manual.py and choose the root folder.

@shpankey said:
You can already do this w/ his script. Use an instance of manual.py and choose the root folder.

Can you explain this a little more? I have all my movies in sub folders (Movies/Shrek, Movies/Shrek 2, etc)…if I change the root folder, will it know to then go through each sub folder and convert?

So, download his script file. Open it and extract the folder to the Desktop. Open up a Command Prompt. Type in:
"cd " (note the space) and drag and drop the ā€œConvertā€ folder on your desktop into your command prompt. It will fill in the location. Hit ā€œEnterā€ and this will change the directory to the Convert folder. Now type in: ā€œmanual.py -aā€ and then ā€œEnterā€. This will start the script and prompt you for a start location. Now drag into the command prompt your Root folder, then hit ā€œEnterā€ and this will start the process on all files in this folder, including in sub-folders.

One note, you may wish to edit the ā€œAutoprocess.iniā€ file in the Convert folder first, and setting the line output_directory line to = blank (not blank, but like this: output_directory = ) so it will use the directory it found the file in to put the new .mp4 file.

Alternatively, you can use this script to do the same thing, which is what Cayars derives his from, I believe…

…using the same process I outlined above. It’s what I do. Just be sure you change the Autoprocess.ini.sample file to Autoprocess.ini and to also be sure you open it and edit the commands in there to what you like. This script has automated features for SABnzbd, Sonar, etc, but I just use the Manual.py instead and do it manually on my Root folder. Works well for me.

Here are my Autoprocess.ini settings from the sickbeard_mp4_automator Script, Cayars is a bit different, but similar…

[MP4]
ffmpeg = C:\ffmpeg\bin\ffmpeg.exe
ffprobe = C:\ffmpeg\bin\ffprobe.exe
threads = auto
output_directory =
copy_to =
move_to =
output_extension = mp4
output_format = mp4
delete_original = True
relocate_moov = True
video-codec = h264,x264
video-bitrate =
video-max-width =
h264-max-level = 4.0
use-qsv-decoder-with-encoder = True
ios-audio = True
ios-first-track-only = True
ios-audio-filter =
max-audio-channels =
audio-codec = aac,ac3,mp3,dts,dca
audio-language = eng
audio-default-language = eng
audio-channel-bitrate = 256
audio-filter =
subtitle-codec = srt
subtitle-language = eng
subtitle-default-language = eng
subtitle-encoding =
fullpathguess = True
convert-mp4 = False
tagfile = False
tag-language = en
download-artwork = Poster
download-subs = False
embed-subs = False
sub-providers = addic7ed,podnapisi,thesubdb,opensubtitles
permissions = 0777
post-process = False
pix-fmt =

Cayars,
Is there a way to make your script recursively search through my TV Season Folders to do the converting, and delete the original afterwards. I would love to just point it to my TV Series folder and come back and have it all converted and cleaned up?

Does anyone know the command line ffmpeg uses in the manual.py to process the files and do the conversion its doing?

@shpankey said:
So, download his script file. Open it and extract the folder to the Desktop. Open up a Command Prompt. Type in:
"cd " (note the space) and drag and drop the ā€œConvertā€ folder on your desktop into your command prompt. It will fill in the location. Hit ā€œEnterā€ and this will change the directory to the Convert folder. Now type in: ā€œmanual.py -aā€ and then ā€œEnterā€. This will start the script and prompt you for a start location. Now drag into the command prompt your Root folder, then hit ā€œEnterā€ and this will start the process on all files in this folder, including in sub-folders.

One note, you may wish to edit the ā€œAutoprocess.iniā€ file in the Convert folder first, and setting the line output_directory line to = blank (not blank, but like this: output_directory = ) so it will use the directory it found the file in to put the new .mp4 file.

Alternatively, you can use this script to do the same thing, which is what Cayars derives his from, I believe…

GitHub - mdhiggins/sickbeard_mp4_automator: Automatically convert video files to a standardized format with metadata tagging to create a beautiful and uniform media library

…using the same process I outlined above. It’s what I do. Just be sure you change the Autoprocess.ini.sample file to Autoprocess.ini and to also be sure you open it and edit the commands in there to what you like. This script has automated features for SABnzbd, Sonar, etc, but I just use the Manual.py instead and do it manually on my Root folder. Works well for me.

Here are my Autoprocess.ini settings from the sickbeard_mp4_automator Script, Cayars is a bit different, but similar…

[MP4]
ffmpeg = C:\ffmpeg\bin\ffmpeg.exe
ffprobe = C:\ffmpeg\bin\ffprobe.exe
threads = auto
output_directory =
copy_to =
move_to =
output_extension = mp4
output_format = mp4
delete_original = True
relocate_moov = True
video-codec = h264,x264
video-bitrate =
video-max-width =
h264-max-level = 4.0
use-qsv-decoder-with-encoder = True
ios-audio = True
ios-first-track-only = True
ios-audio-filter =
max-audio-channels =
audio-codec = aac,ac3,mp3,dts,dca
audio-language = eng
audio-default-language = eng
audio-channel-bitrate = 256
audio-filter =
subtitle-codec = srt
subtitle-language = eng
subtitle-default-language = eng
subtitle-encoding =
fullpathguess = True
convert-mp4 = False
tagfile = False
tag-language = en
download-artwork = Poster
download-subs = False
embed-subs = False
sub-providers = addic7ed,podnapisi,thesubdb,opensubtitles
permissions = 0777
post-process = False
pix-fmt =

Is there a way for the script to know what files it has already processed. I have TV shows being added automatically, once I run the script through everything I have, is there a way to run it on the root and have it skip files it already processed?

Set the option in Autoprocess.ini file: convert-mp4 = False