Page 1 of 1

Exclude name in txt file.

Posted: 17 Feb 2016, 09:25
by TehJonny
Hey,

Just wondering how I exclude more then one show from my results for e.g

Code: Select all

--filter "n != /Doctor Who/"
How can I add multiple shows to this code?

Also is it possible to have the filter code above call a text file containing every show to exclude? if so how?

Kind Regards
-Jonathan

Re: Exclude name in txt file.

Posted: 18 Feb 2016, 06:32
by rednoah
Yes, you can read files in your --filter Groovy expression. Other threads will show you how to read files, mostly for custom formats but it's the same for filters.

Re: Exclude name in txt file.

Posted: 18 Feb 2016, 09:12
by TehJonny
I cant even figure this out any chance you could give me a hand?

Re: Exclude name in txt file.

Posted: 18 Feb 2016, 09:54
by rednoah
This page will help. Check out #4:
viewtopic.php?f=5&t=182

You will probably find multiple solutions by searching for "filter" and having a look at what others are doing.

Re: Exclude name in txt file.

Posted: 18 Feb 2016, 11:05
by TehJonny
I am an absolute novice when it comes to this kind of programming thing I have no idea how to do what I want to do, I tried searching for filter but cannot find anything like what I want?

Re: Exclude name in txt file.

Posted: 18 Feb 2016, 11:28
by rednoah
Something like this:

('/path/to/text/file' as File).text.contains(n)

Re: Exclude name in txt file.

Posted: 18 Feb 2016, 13:10
by TehJonny
Is there a away to add multiple shows to this function:

Code: Select all

--filter "n != /Doctor Who/"

Re: Exclude name in txt file.

Posted: 19 Feb 2016, 01:40
by rednoah
You wanted a solution with an external text file right? I just gave you that:

Check if text file contains the show name:

Code: Select all

('/path/to/text/file' as File).text.contains(n)


Maybe this is more easy to understand:

Check if text file contains a line that exactly matches the show name, and then only include those:

Code: Select all

readLines('D:/include.txt').contains(n)
Check if text file contains a line that exactly matches the show name, and then only exclude those:

Code: Select all

!readLines('D:/exclude.txt').contains(n)

* Make sure that the text file you read text from does not begin with a BOM marker. That would make the first line not work.

Re: Exclude name in txt file.

Posted: 19 Feb 2016, 08:19
by TehJonny
but then how do I add this to the utorrent run program I already have?

Code: Select all

filebot -script fn:amc --output "D:/Jonny's Stuff" --action copy --conflict auto -non-strict --log-file amc.log --def unsorted=y music=y artwork=n clean=y "ut_label=%L" "ut_state=%S" "ut_title=%N" "ut_kind=%K" "ut_file=%F" "ut_dir=%D" --def "seriesFormat=/TVShows/{n}\{'Season '+s}\{n} - {sxe} - {t}" --filter "n != /The Magicians/"

Re: Exclude name in txt file.

Posted: 20 Feb 2016, 01:17
by rednoah
Exactly the same way as any other filter option...

You have:

Code: Select all

--filter "n != /The Magicians/"
You want:

Code: Select all

--filter "!readLines('D:/exclude.txt').contains(n)"

Re: Exclude name in txt file.

Posted: 20 Feb 2016, 22:07
by TehJonny

Code: Select all

Run script [fn:amc] at [Sat Feb 20 22:06:35 GMT 2016]
Parameter: xbmc = 192.168.1.18
Argument: C:\Users\Administrator\Desktop\Media
ScriptException: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script3.groovy: 1: unexpected token: s @ line 1, column 22.
   !readLines('D:/Jonny's Stuff/Downloads/exclude.txt').contains(n)
                        ^

1 error

Input: C:\Users\Administrator\Desktop\Media\The.Magicians.S01E05.720p.HDTV.x264-AVS - Copy.mkv
Group: [tvs:the magicians] => [The.Magicians.S01E05.720p.HDTV.x264-AVS - Copy.mkv]
ScriptException: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script9.groovy: 1: unexpected token: s @ line 1, column 22.
   !readLines('D:/Jonny's Stuff/Downloads/exclude.txt').contains(n)
                        ^

1 error

Finished without processing any files
Failure (°_°)


Any idea about this?

Also I cant seem to get the Update Kodi function to work???

I am running Kodi on a NVIDIA SHEILD TV BOX if that makes a difference?

Re: Exclude name in txt file.

Posted: 21 Feb 2016, 02:06
by rednoah
Don't use paths with special characters like ' if you don't know how to correctly escape those characters...

If you must have this path, then triple quotes will make this work:

Code: Select all

'''D:/Jonny's Stuff/Downloads/exclude.txt'''

Re: Exclude name in txt file.

Posted: 26 Apr 2016, 05:05
by sheveron
Hi.

I've had problem with filter argument. I tried to use it as you suggested

Code: Select all

--filter "!readLines('f:/exclude.txt').contains(n)"
but script kept throwing exceptions on me

Code: Select all

ScriptException: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script10.groovy: 1: unexpected char: 0xFFFF @ line 1, column 27.
   /exclude.txt').contains(n)
I've spent all night trying to figure what is wrong. Even started digging into FileBot sources for clues.
But i could not find why it wasnt working.

Turned out it was all windows fault...
I'm using FileBot in bat script and iterating through files in for loop

Code: Select all

	for /r %%i in (*.*) do (
		set "Filename=%%~nxi"
		if {%Path1:~-1,1%}=={\} (set "Result=%Path1%!Filename!") else (set "Result=%Path1%\!Filename!")
		"c:\Program Files\FileBot\filebot.exe" -script fn:amc --filter "!readLines('f:/exclude.txt').contains(n)" --output "f:" --log-file "f:\amcbt.log" --action test --conflict override -non-strict --def excludeList=amc-input.txt artwork=y subtitles=ru plex=localhost:ZwdywpegcQDhk4mWGVjV "seriesFormat=f:/TVShows/{n}/{'Season '+s}/{n.space('.')}.{'s'+s.pad(2)}e{e.pad(2)}.{t.space('.')}" "movieFormat=f:/Movies/{ny}/{n.upperInitial().space('.')}.{y}.{source}.{vc}" "musicFormat=f:/Music/{n}/{fn}" "ut_dir=!Result!" "ut_kind=multi" "ut_title=!Filename!" --lang ru
	)
For that script to work i had to enable extensions

Code: Select all

setlocal enableextensions enabledelayedexpansion
You might notice !Filename! instead of %Filename%.

Yeah, so, windows interpreted exclamation mark in

Code: Select all

!readLines('f:/exclude.txt').contains(n)
as start point for variable and screwed up whole line...

So speaking of escaping, you also might need to escape ! with ^ if you have extensions enabled in script.
Maybe this info will save someones night someday.

Fixed filter now looks like this

Code: Select all

--filter "^!readLines('f:/exclude.txt').contains(n)"
P.S. I was also trying to exclude old The Magicians show :)

Re: Exclude name in txt file.

Posted: 26 Apr 2016, 05:58
by rednoah
1.
You could have learned basic Groovy in that amount of time... CMD is to be avoided at all times.


2.
Best to pass complex arguments via text files:

Code: Select all

--filter @F:/filter.txt
filter.txt

Code: Select all

!readLines('F:/exclude.txt').contains(n)
@see viewtopic.php?f=3&t=3244